From fff6c2e0f371950a44e0f9fbc241775ce38058b8 Mon Sep 17 00:00:00 2001 From: Mike Schuchardt Date: Fri, 29 Sep 2023 09:39:17 -0700 Subject: [PATCH] build: Update to header 1.3.266 - Update known-good - Generate source --- layers/VkLayer_khronos_validation.json.in | 2 +- layers/vulkan/generated/best_practices.cpp | 18 + layers/vulkan/generated/best_practices.h | 7 + layers/vulkan/generated/chassis.cpp | 115 +++ layers/vulkan/generated/chassis.h | 28 + .../generated/chassis_dispatch_helper.h | 30 + layers/vulkan/generated/enum_flag_bits.h | 4 +- .../generated/error_location_helper.cpp | 52 ++ .../vulkan/generated/error_location_helper.h | 395 +++++----- .../generated/layer_chassis_dispatch.cpp | 52 ++ .../vulkan/generated/layer_chassis_dispatch.h | 6 + layers/vulkan/generated/object_tracker.cpp | 52 ++ layers/vulkan/generated/object_tracker.h | 8 + .../generated/stateless_validation_helper.cpp | 146 +++- .../generated/stateless_validation_helper.h | 10 + layers/vulkan/generated/thread_safety.cpp | 56 ++ .../vulkan/generated/thread_safety_commands.h | 28 + layers/vulkan/generated/valid_enum_values.cpp | 32 + layers/vulkan/generated/valid_enum_values.h | 2 + .../generated/vk_dispatch_table_helper.h | 38 + layers/vulkan/generated/vk_extension_helper.h | 13 + .../vulkan/generated/vk_function_pointers.cpp | 19 + .../vulkan/generated/vk_function_pointers.h | 5 + .../generated/vk_layer_dispatch_table.h | 5 + layers/vulkan/generated/vk_safe_struct.h | 227 ++++++ .../vulkan/generated/vk_safe_struct_utils.cpp | 48 ++ .../generated/vk_safe_struct_vendor.cpp | 725 ++++++++++++++++++ .../generated/vk_validation_error_messages.h | 473 +++++++++--- scripts/known_good.json | 4 +- .../layers/VkLayer_device_profile_api.json.in | 2 +- 30 files changed, 2317 insertions(+), 285 deletions(-) diff --git a/layers/VkLayer_khronos_validation.json.in b/layers/VkLayer_khronos_validation.json.in index 8e5b0ee194f..7426698a0a5 100644 --- a/layers/VkLayer_khronos_validation.json.in +++ b/layers/VkLayer_khronos_validation.json.in @@ -4,7 +4,7 @@ "name": "VK_LAYER_KHRONOS_validation", "type": "GLOBAL", "library_path": "@JSON_LIBRARY_PATH@", - "api_version": "1.3.265", + "api_version": "1.3.266", "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 Valiation 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 606fdc09900..bb9c87fce7a 100644 --- a/layers/vulkan/generated/best_practices.cpp +++ b/layers/vulkan/generated/best_practices.cpp @@ -2865,6 +2865,24 @@ void BestPractices::PostCallRecordGetFramebufferTilePropertiesQCOM(VkDevice devi } } +void BestPractices::PostCallRecordSetLatencySleepModeNV(VkDevice device, VkSwapchainKHR swapchain, + VkLatencySleepModeInfoNV* pSleepModeInfo, const RecordObject& record_obj) { + ValidationStateTracker::PostCallRecordSetLatencySleepModeNV(device, swapchain, pSleepModeInfo, record_obj); + + if (record_obj.result < VK_SUCCESS) { + LogErrorCode(record_obj); + } +} + +void BestPractices::PostCallRecordLatencySleepNV(VkDevice device, VkSwapchainKHR swapchain, VkLatencySleepInfoNV* pSleepInfo, + const RecordObject& record_obj) { + ValidationStateTracker::PostCallRecordLatencySleepNV(device, swapchain, pSleepInfo, record_obj); + + if (record_obj.result < VK_SUCCESS) { + LogErrorCode(record_obj); + } +} + #ifdef VK_USE_PLATFORM_SCREEN_QNX void BestPractices::PostCallRecordGetScreenBufferPropertiesQNX(VkDevice device, const struct _screen_buffer* buffer, VkScreenBufferPropertiesQNX* pProperties, diff --git a/layers/vulkan/generated/best_practices.h b/layers/vulkan/generated/best_practices.h index 2c37277e9ca..4338646be9a 100644 --- a/layers/vulkan/generated/best_practices.h +++ b/layers/vulkan/generated/best_practices.h @@ -994,6 +994,12 @@ void PostCallRecordGetShaderBinaryDataEXT(VkDevice device, VkShaderEXT shader, s void PostCallRecordGetFramebufferTilePropertiesQCOM(VkDevice device, VkFramebuffer framebuffer, uint32_t* pPropertiesCount, VkTilePropertiesQCOM* pProperties, const RecordObject& record_obj) override; +void PostCallRecordSetLatencySleepModeNV(VkDevice device, VkSwapchainKHR swapchain, VkLatencySleepModeInfoNV* pSleepModeInfo, + const RecordObject& record_obj) override; + +void PostCallRecordLatencySleepNV(VkDevice device, VkSwapchainKHR swapchain, VkLatencySleepInfoNV* pSleepInfo, + const RecordObject& record_obj) override; + #ifdef VK_USE_PLATFORM_SCREEN_QNX void PostCallRecordGetScreenBufferPropertiesQNX(VkDevice device, const struct _screen_buffer* buffer, VkScreenBufferPropertiesQNX* pProperties, const RecordObject& record_obj) override; @@ -1163,6 +1169,7 @@ const vvl::unordered_map special_use_extensions = { {"VK_EXT_non_seamless_cube_map", "d3demulation, glemulation"}, {"VK_GOOGLE_surfaceless_query", "glemulation"}, {"VK_EXT_legacy_dithering", "glemulation"}, + {"VK_ANDROID_external_format_resolve", "glemulation"}, {"VK_EXT_mutable_descriptor_type", "d3demulation"}, }; diff --git a/layers/vulkan/generated/chassis.cpp b/layers/vulkan/generated/chassis.cpp index ff2a898cbab..eba48810155 100644 --- a/layers/vulkan/generated/chassis.cpp +++ b/layers/vulkan/generated/chassis.cpp @@ -15561,6 +15561,116 @@ VKAPI_ATTR VkResult VKAPI_CALL GetDynamicRenderingTilePropertiesQCOM(VkDevice de return result; } +VKAPI_ATTR VkResult VKAPI_CALL SetLatencySleepModeNV(VkDevice device, VkSwapchainKHR swapchain, + VkLatencySleepModeInfoNV* pSleepModeInfo) { + auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); + bool skip = false; + ErrorObject error_obj(vvl::Func::vkSetLatencySleepModeNV, VulkanTypedHandle(device, kVulkanObjectTypeDevice)); + for (const ValidationObject* intercept : layer_data->intercept_vectors[InterceptIdPreCallValidateSetLatencySleepModeNV]) { + auto lock = intercept->ReadLock(); + skip |= intercept->PreCallValidateSetLatencySleepModeNV(device, swapchain, pSleepModeInfo, error_obj); + if (skip) return VK_ERROR_VALIDATION_FAILED_EXT; + } + for (ValidationObject* intercept : layer_data->intercept_vectors[InterceptIdPreCallRecordSetLatencySleepModeNV]) { + auto lock = intercept->WriteLock(); + intercept->PreCallRecordSetLatencySleepModeNV(device, swapchain, pSleepModeInfo); + } + VkResult result = DispatchSetLatencySleepModeNV(device, swapchain, pSleepModeInfo); + RecordObject record_obj(vvl::Func::vkSetLatencySleepModeNV, result); + for (ValidationObject* intercept : layer_data->intercept_vectors[InterceptIdPostCallRecordSetLatencySleepModeNV]) { + auto lock = intercept->WriteLock(); + intercept->PostCallRecordSetLatencySleepModeNV(device, swapchain, pSleepModeInfo, record_obj); + } + return result; +} + +VKAPI_ATTR VkResult VKAPI_CALL LatencySleepNV(VkDevice device, VkSwapchainKHR swapchain, VkLatencySleepInfoNV* pSleepInfo) { + auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); + bool skip = false; + ErrorObject error_obj(vvl::Func::vkLatencySleepNV, VulkanTypedHandle(device, kVulkanObjectTypeDevice)); + for (const ValidationObject* intercept : layer_data->intercept_vectors[InterceptIdPreCallValidateLatencySleepNV]) { + auto lock = intercept->ReadLock(); + skip |= intercept->PreCallValidateLatencySleepNV(device, swapchain, pSleepInfo, error_obj); + if (skip) return VK_ERROR_VALIDATION_FAILED_EXT; + } + for (ValidationObject* intercept : layer_data->intercept_vectors[InterceptIdPreCallRecordLatencySleepNV]) { + auto lock = intercept->WriteLock(); + intercept->PreCallRecordLatencySleepNV(device, swapchain, pSleepInfo); + } + VkResult result = DispatchLatencySleepNV(device, swapchain, pSleepInfo); + RecordObject record_obj(vvl::Func::vkLatencySleepNV, result); + for (ValidationObject* intercept : layer_data->intercept_vectors[InterceptIdPostCallRecordLatencySleepNV]) { + auto lock = intercept->WriteLock(); + intercept->PostCallRecordLatencySleepNV(device, swapchain, pSleepInfo, record_obj); + } + return result; +} + +VKAPI_ATTR void VKAPI_CALL SetLatencyMarkerNV(VkDevice device, VkSwapchainKHR swapchain, + VkSetLatencyMarkerInfoNV* pLatencyMarkerInfo) { + auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); + bool skip = false; + ErrorObject error_obj(vvl::Func::vkSetLatencyMarkerNV, VulkanTypedHandle(device, kVulkanObjectTypeDevice)); + for (const ValidationObject* intercept : layer_data->intercept_vectors[InterceptIdPreCallValidateSetLatencyMarkerNV]) { + auto lock = intercept->ReadLock(); + skip |= intercept->PreCallValidateSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo, error_obj); + if (skip) return; + } + for (ValidationObject* intercept : layer_data->intercept_vectors[InterceptIdPreCallRecordSetLatencyMarkerNV]) { + auto lock = intercept->WriteLock(); + intercept->PreCallRecordSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo); + } + DispatchSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo); + RecordObject record_obj(vvl::Func::vkSetLatencyMarkerNV); + for (ValidationObject* intercept : layer_data->intercept_vectors[InterceptIdPostCallRecordSetLatencyMarkerNV]) { + auto lock = intercept->WriteLock(); + intercept->PostCallRecordSetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo, record_obj); + } +} + +VKAPI_ATTR void VKAPI_CALL GetLatencyTimingsNV(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pTimingCount, + VkGetLatencyMarkerInfoNV* pLatencyMarkerInfo) { + auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); + bool skip = false; + ErrorObject error_obj(vvl::Func::vkGetLatencyTimingsNV, VulkanTypedHandle(device, kVulkanObjectTypeDevice)); + for (const ValidationObject* intercept : layer_data->intercept_vectors[InterceptIdPreCallValidateGetLatencyTimingsNV]) { + auto lock = intercept->ReadLock(); + skip |= intercept->PreCallValidateGetLatencyTimingsNV(device, swapchain, pTimingCount, pLatencyMarkerInfo, error_obj); + if (skip) return; + } + for (ValidationObject* intercept : layer_data->intercept_vectors[InterceptIdPreCallRecordGetLatencyTimingsNV]) { + auto lock = intercept->WriteLock(); + intercept->PreCallRecordGetLatencyTimingsNV(device, swapchain, pTimingCount, pLatencyMarkerInfo); + } + DispatchGetLatencyTimingsNV(device, swapchain, pTimingCount, pLatencyMarkerInfo); + RecordObject record_obj(vvl::Func::vkGetLatencyTimingsNV); + for (ValidationObject* intercept : layer_data->intercept_vectors[InterceptIdPostCallRecordGetLatencyTimingsNV]) { + auto lock = intercept->WriteLock(); + intercept->PostCallRecordGetLatencyTimingsNV(device, swapchain, pTimingCount, pLatencyMarkerInfo, record_obj); + } +} + +VKAPI_ATTR void VKAPI_CALL QueueNotifyOutOfBandNV(VkQueue queue, VkOutOfBandQueueTypeInfoNV pQueueTypeInfo) { + auto layer_data = GetLayerDataPtr(get_dispatch_key(queue), layer_data_map); + bool skip = false; + ErrorObject error_obj(vvl::Func::vkQueueNotifyOutOfBandNV, VulkanTypedHandle(queue, kVulkanObjectTypeQueue)); + for (const ValidationObject* intercept : layer_data->intercept_vectors[InterceptIdPreCallValidateQueueNotifyOutOfBandNV]) { + auto lock = intercept->ReadLock(); + skip |= intercept->PreCallValidateQueueNotifyOutOfBandNV(queue, pQueueTypeInfo, error_obj); + if (skip) return; + } + for (ValidationObject* intercept : layer_data->intercept_vectors[InterceptIdPreCallRecordQueueNotifyOutOfBandNV]) { + auto lock = intercept->WriteLock(); + intercept->PreCallRecordQueueNotifyOutOfBandNV(queue, pQueueTypeInfo); + } + DispatchQueueNotifyOutOfBandNV(queue, pQueueTypeInfo); + RecordObject record_obj(vvl::Func::vkQueueNotifyOutOfBandNV); + for (ValidationObject* intercept : layer_data->intercept_vectors[InterceptIdPostCallRecordQueueNotifyOutOfBandNV]) { + auto lock = intercept->WriteLock(); + intercept->PostCallRecordQueueNotifyOutOfBandNV(queue, pQueueTypeInfo, record_obj); + } +} + VKAPI_ATTR void VKAPI_CALL CmdSetAttachmentFeedbackLoopEnableEXT(VkCommandBuffer commandBuffer, VkImageAspectFlags aspectMask) { auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); bool skip = false; @@ -17022,6 +17132,11 @@ const vvl::unordered_map name_to_funcptr_map = { {"vkCmdBindShadersEXT", {kFuncTypeDev, (void*)CmdBindShadersEXT}}, {"vkGetFramebufferTilePropertiesQCOM", {kFuncTypeDev, (void*)GetFramebufferTilePropertiesQCOM}}, {"vkGetDynamicRenderingTilePropertiesQCOM", {kFuncTypeDev, (void*)GetDynamicRenderingTilePropertiesQCOM}}, + {"vkSetLatencySleepModeNV", {kFuncTypeDev, (void*)SetLatencySleepModeNV}}, + {"vkLatencySleepNV", {kFuncTypeDev, (void*)LatencySleepNV}}, + {"vkSetLatencyMarkerNV", {kFuncTypeDev, (void*)SetLatencyMarkerNV}}, + {"vkGetLatencyTimingsNV", {kFuncTypeDev, (void*)GetLatencyTimingsNV}}, + {"vkQueueNotifyOutOfBandNV", {kFuncTypeDev, (void*)QueueNotifyOutOfBandNV}}, {"vkCmdSetAttachmentFeedbackLoopEnableEXT", {kFuncTypeDev, (void*)CmdSetAttachmentFeedbackLoopEnableEXT}}, #ifdef VK_USE_PLATFORM_SCREEN_QNX {"vkGetScreenBufferPropertiesQNX", {kFuncTypeDev, (void*)GetScreenBufferPropertiesQNX}}, diff --git a/layers/vulkan/generated/chassis.h b/layers/vulkan/generated/chassis.h index 1a273bc8c29..f83c7a7fba2 100644 --- a/layers/vulkan/generated/chassis.h +++ b/layers/vulkan/generated/chassis.h @@ -2038,6 +2038,19 @@ VKAPI_ATTR VkResult VKAPI_CALL GetFramebufferTilePropertiesQCOM(VkDevice device, VKAPI_ATTR VkResult VKAPI_CALL GetDynamicRenderingTilePropertiesQCOM(VkDevice device, const VkRenderingInfo* pRenderingInfo, VkTilePropertiesQCOM* pProperties); +VKAPI_ATTR VkResult VKAPI_CALL SetLatencySleepModeNV(VkDevice device, VkSwapchainKHR swapchain, + VkLatencySleepModeInfoNV* pSleepModeInfo); + +VKAPI_ATTR VkResult VKAPI_CALL LatencySleepNV(VkDevice device, VkSwapchainKHR swapchain, VkLatencySleepInfoNV* pSleepInfo); + +VKAPI_ATTR void VKAPI_CALL SetLatencyMarkerNV(VkDevice device, VkSwapchainKHR swapchain, + VkSetLatencyMarkerInfoNV* pLatencyMarkerInfo); + +VKAPI_ATTR void VKAPI_CALL GetLatencyTimingsNV(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pTimingCount, + VkGetLatencyMarkerInfoNV* pLatencyMarkerInfo); + +VKAPI_ATTR void VKAPI_CALL QueueNotifyOutOfBandNV(VkQueue queue, VkOutOfBandQueueTypeInfoNV pQueueTypeInfo); + VKAPI_ATTR void VKAPI_CALL CmdSetAttachmentFeedbackLoopEnableEXT(VkCommandBuffer commandBuffer, VkImageAspectFlags aspectMask); #ifdef VK_USE_PLATFORM_SCREEN_QNX @@ -4449,6 +4462,21 @@ class ValidationObject { virtual bool PreCallValidateGetDynamicRenderingTilePropertiesQCOM(VkDevice device, const VkRenderingInfo* pRenderingInfo, VkTilePropertiesQCOM* pProperties, const ErrorObject& error_obj) const { return false; }; virtual void PreCallRecordGetDynamicRenderingTilePropertiesQCOM(VkDevice device, const VkRenderingInfo* pRenderingInfo, VkTilePropertiesQCOM* pProperties) {}; virtual void PostCallRecordGetDynamicRenderingTilePropertiesQCOM(VkDevice device, const VkRenderingInfo* pRenderingInfo, VkTilePropertiesQCOM* pProperties, const RecordObject& record_obj) {}; + virtual bool PreCallValidateSetLatencySleepModeNV(VkDevice device, VkSwapchainKHR swapchain, VkLatencySleepModeInfoNV* pSleepModeInfo, const ErrorObject& error_obj) const { return false; }; + virtual void PreCallRecordSetLatencySleepModeNV(VkDevice device, VkSwapchainKHR swapchain, VkLatencySleepModeInfoNV* pSleepModeInfo) {}; + virtual void PostCallRecordSetLatencySleepModeNV(VkDevice device, VkSwapchainKHR swapchain, VkLatencySleepModeInfoNV* pSleepModeInfo, const RecordObject& record_obj) {}; + virtual bool PreCallValidateLatencySleepNV(VkDevice device, VkSwapchainKHR swapchain, VkLatencySleepInfoNV* pSleepInfo, const ErrorObject& error_obj) const { return false; }; + virtual void PreCallRecordLatencySleepNV(VkDevice device, VkSwapchainKHR swapchain, VkLatencySleepInfoNV* pSleepInfo) {}; + virtual void PostCallRecordLatencySleepNV(VkDevice device, VkSwapchainKHR swapchain, VkLatencySleepInfoNV* pSleepInfo, const RecordObject& record_obj) {}; + virtual bool PreCallValidateSetLatencyMarkerNV(VkDevice device, VkSwapchainKHR swapchain, VkSetLatencyMarkerInfoNV* pLatencyMarkerInfo, const ErrorObject& error_obj) const { return false; }; + virtual void PreCallRecordSetLatencyMarkerNV(VkDevice device, VkSwapchainKHR swapchain, VkSetLatencyMarkerInfoNV* pLatencyMarkerInfo) {}; + virtual void PostCallRecordSetLatencyMarkerNV(VkDevice device, VkSwapchainKHR swapchain, VkSetLatencyMarkerInfoNV* pLatencyMarkerInfo, const RecordObject& record_obj) {}; + virtual bool PreCallValidateGetLatencyTimingsNV(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pTimingCount, VkGetLatencyMarkerInfoNV* pLatencyMarkerInfo, const ErrorObject& error_obj) const { return false; }; + virtual void PreCallRecordGetLatencyTimingsNV(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pTimingCount, VkGetLatencyMarkerInfoNV* pLatencyMarkerInfo) {}; + virtual void PostCallRecordGetLatencyTimingsNV(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pTimingCount, VkGetLatencyMarkerInfoNV* pLatencyMarkerInfo, const RecordObject& record_obj) {}; + virtual bool PreCallValidateQueueNotifyOutOfBandNV(VkQueue queue, VkOutOfBandQueueTypeInfoNV pQueueTypeInfo, const ErrorObject& error_obj) const { return false; }; + virtual void PreCallRecordQueueNotifyOutOfBandNV(VkQueue queue, VkOutOfBandQueueTypeInfoNV pQueueTypeInfo) {}; + virtual void PostCallRecordQueueNotifyOutOfBandNV(VkQueue queue, VkOutOfBandQueueTypeInfoNV pQueueTypeInfo, const RecordObject& record_obj) {}; virtual bool PreCallValidateCmdSetAttachmentFeedbackLoopEnableEXT(VkCommandBuffer commandBuffer, VkImageAspectFlags aspectMask, const ErrorObject& error_obj) const { return false; }; virtual void PreCallRecordCmdSetAttachmentFeedbackLoopEnableEXT(VkCommandBuffer commandBuffer, VkImageAspectFlags aspectMask) {}; virtual void PostCallRecordCmdSetAttachmentFeedbackLoopEnableEXT(VkCommandBuffer commandBuffer, VkImageAspectFlags aspectMask, const RecordObject& record_obj) {}; diff --git a/layers/vulkan/generated/chassis_dispatch_helper.h b/layers/vulkan/generated/chassis_dispatch_helper.h index 7ad77781fcc..fce92af2659 100644 --- a/layers/vulkan/generated/chassis_dispatch_helper.h +++ b/layers/vulkan/generated/chassis_dispatch_helper.h @@ -1560,6 +1560,21 @@ typedef enum InterceptId { InterceptIdPreCallValidateGetDynamicRenderingTilePropertiesQCOM, InterceptIdPreCallRecordGetDynamicRenderingTilePropertiesQCOM, InterceptIdPostCallRecordGetDynamicRenderingTilePropertiesQCOM, + InterceptIdPreCallValidateSetLatencySleepModeNV, + InterceptIdPreCallRecordSetLatencySleepModeNV, + InterceptIdPostCallRecordSetLatencySleepModeNV, + InterceptIdPreCallValidateLatencySleepNV, + InterceptIdPreCallRecordLatencySleepNV, + InterceptIdPostCallRecordLatencySleepNV, + InterceptIdPreCallValidateSetLatencyMarkerNV, + InterceptIdPreCallRecordSetLatencyMarkerNV, + InterceptIdPostCallRecordSetLatencyMarkerNV, + InterceptIdPreCallValidateGetLatencyTimingsNV, + InterceptIdPreCallRecordGetLatencyTimingsNV, + InterceptIdPostCallRecordGetLatencyTimingsNV, + InterceptIdPreCallValidateQueueNotifyOutOfBandNV, + InterceptIdPreCallRecordQueueNotifyOutOfBandNV, + InterceptIdPostCallRecordQueueNotifyOutOfBandNV, InterceptIdPreCallValidateCmdSetAttachmentFeedbackLoopEnableEXT, InterceptIdPreCallRecordCmdSetAttachmentFeedbackLoopEnableEXT, InterceptIdPostCallRecordCmdSetAttachmentFeedbackLoopEnableEXT, @@ -3294,6 +3309,21 @@ void ValidationObject::InitObjectDispatchVectors() { BUILD_DISPATCH_VECTOR(PreCallValidateGetDynamicRenderingTilePropertiesQCOM); BUILD_DISPATCH_VECTOR(PreCallRecordGetDynamicRenderingTilePropertiesQCOM); BUILD_DISPATCH_VECTOR(PostCallRecordGetDynamicRenderingTilePropertiesQCOM); + BUILD_DISPATCH_VECTOR(PreCallValidateSetLatencySleepModeNV); + BUILD_DISPATCH_VECTOR(PreCallRecordSetLatencySleepModeNV); + BUILD_DISPATCH_VECTOR(PostCallRecordSetLatencySleepModeNV); + BUILD_DISPATCH_VECTOR(PreCallValidateLatencySleepNV); + BUILD_DISPATCH_VECTOR(PreCallRecordLatencySleepNV); + BUILD_DISPATCH_VECTOR(PostCallRecordLatencySleepNV); + BUILD_DISPATCH_VECTOR(PreCallValidateSetLatencyMarkerNV); + BUILD_DISPATCH_VECTOR(PreCallRecordSetLatencyMarkerNV); + BUILD_DISPATCH_VECTOR(PostCallRecordSetLatencyMarkerNV); + BUILD_DISPATCH_VECTOR(PreCallValidateGetLatencyTimingsNV); + BUILD_DISPATCH_VECTOR(PreCallRecordGetLatencyTimingsNV); + BUILD_DISPATCH_VECTOR(PostCallRecordGetLatencyTimingsNV); + BUILD_DISPATCH_VECTOR(PreCallValidateQueueNotifyOutOfBandNV); + BUILD_DISPATCH_VECTOR(PreCallRecordQueueNotifyOutOfBandNV); + BUILD_DISPATCH_VECTOR(PostCallRecordQueueNotifyOutOfBandNV); BUILD_DISPATCH_VECTOR(PreCallValidateCmdSetAttachmentFeedbackLoopEnableEXT); BUILD_DISPATCH_VECTOR(PreCallRecordCmdSetAttachmentFeedbackLoopEnableEXT); BUILD_DISPATCH_VECTOR(PostCallRecordCmdSetAttachmentFeedbackLoopEnableEXT); diff --git a/layers/vulkan/generated/enum_flag_bits.h b/layers/vulkan/generated/enum_flag_bits.h index 74df92619a2..3d882747e08 100644 --- a/layers/vulkan/generated/enum_flag_bits.h +++ b/layers/vulkan/generated/enum_flag_bits.h @@ -24,7 +24,7 @@ #include #include "vulkan/vulkan.h" // clang-format off -const uint32_t GeneratedVulkanHeaderVersion = 265; +const uint32_t GeneratedVulkanHeaderVersion = 266; 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; @@ -65,7 +65,7 @@ const VkExternalMemoryHandleTypeFlags AllVkExternalMemoryHandleTypeFlagBits = VK const VkExternalFenceHandleTypeFlags AllVkExternalFenceHandleTypeFlagBits = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT|VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT|VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT|VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT; const VkExternalSemaphoreHandleTypeFlags AllVkExternalSemaphoreHandleTypeFlagBits = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA; const VkDescriptorBindingFlags AllVkDescriptorBindingFlagBits = VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT|VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT|VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT|VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT; -const VkResolveModeFlags AllVkResolveModeFlagBits = VK_RESOLVE_MODE_NONE|VK_RESOLVE_MODE_SAMPLE_ZERO_BIT|VK_RESOLVE_MODE_AVERAGE_BIT|VK_RESOLVE_MODE_MIN_BIT|VK_RESOLVE_MODE_MAX_BIT; +const VkResolveModeFlags AllVkResolveModeFlagBits = VK_RESOLVE_MODE_NONE|VK_RESOLVE_MODE_SAMPLE_ZERO_BIT|VK_RESOLVE_MODE_AVERAGE_BIT|VK_RESOLVE_MODE_MIN_BIT|VK_RESOLVE_MODE_MAX_BIT|VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID; const VkSemaphoreWaitFlags AllVkSemaphoreWaitFlagBits = VK_SEMAPHORE_WAIT_ANY_BIT; const VkPipelineStageFlags2 AllVkPipelineStageFlagBits2 = VK_PIPELINE_STAGE_2_NONE|VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT|VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT|VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT|VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT|VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT|VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT|VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT|VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT|VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT|VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT|VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT|VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT|VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT|VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT|VK_PIPELINE_STAGE_2_HOST_BIT|VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT|VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT|VK_PIPELINE_STAGE_2_COPY_BIT|VK_PIPELINE_STAGE_2_RESOLVE_BIT|VK_PIPELINE_STAGE_2_BLIT_BIT|VK_PIPELINE_STAGE_2_CLEAR_BIT|VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT|VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT|VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT|VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR|VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR|VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT|VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT|VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV|VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR|VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR|VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR|VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT|VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT|VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT|VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI|VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI|VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR|VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT|VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI|VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV; const VkAccessFlags2 AllVkAccessFlagBits2 = VK_ACCESS_2_NONE|VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT|VK_ACCESS_2_INDEX_READ_BIT|VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT|VK_ACCESS_2_UNIFORM_READ_BIT|VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT|VK_ACCESS_2_SHADER_READ_BIT|VK_ACCESS_2_SHADER_WRITE_BIT|VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT|VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT|VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT|VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT|VK_ACCESS_2_TRANSFER_READ_BIT|VK_ACCESS_2_TRANSFER_WRITE_BIT|VK_ACCESS_2_HOST_READ_BIT|VK_ACCESS_2_HOST_WRITE_BIT|VK_ACCESS_2_MEMORY_READ_BIT|VK_ACCESS_2_MEMORY_WRITE_BIT|VK_ACCESS_2_SHADER_SAMPLED_READ_BIT|VK_ACCESS_2_SHADER_STORAGE_READ_BIT|VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT|VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR|VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR|VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR|VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR|VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT|VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT|VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT|VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT|VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV|VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV|VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR|VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR|VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR|VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT|VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT|VK_ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT|VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI|VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR|VK_ACCESS_2_MICROMAP_READ_BIT_EXT|VK_ACCESS_2_MICROMAP_WRITE_BIT_EXT|VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV|VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV; diff --git a/layers/vulkan/generated/error_location_helper.cpp b/layers/vulkan/generated/error_location_helper.cpp index a4bf92d8f0c..9a3ebfac4f3 100644 --- a/layers/vulkan/generated/error_location_helper.cpp +++ b/layers/vulkan/generated/error_location_helper.cpp @@ -515,6 +515,7 @@ const char* String(Func func) { {"vkGetImageViewHandleNVX", 24}, {"vkGetImageViewOpaqueCaptureDescriptorDataEXT", 45}, {"vkGetInstanceProcAddr", 22}, + {"vkGetLatencyTimingsNV", 22}, {"vkGetMemoryAndroidHardwareBufferANDROID", 40}, {"vkGetMemoryFdKHR", 17}, {"vkGetMemoryFdPropertiesKHR", 27}, @@ -632,6 +633,7 @@ const char* String(Func func) { {"vkImportSemaphoreZirconHandleFUCHSIA", 37}, {"vkInitializePerformanceApiINTEL", 32}, {"vkInvalidateMappedMemoryRanges", 31}, + {"vkLatencySleepNV", 17}, {"vkMapMemory", 12}, {"vkMapMemory2KHR", 16}, {"vkMergePipelineCaches", 22}, @@ -640,6 +642,7 @@ const char* String(Func func) { {"vkQueueBindSparse", 18}, {"vkQueueEndDebugUtilsLabelEXT", 29}, {"vkQueueInsertDebugUtilsLabelEXT", 32}, + {"vkQueueNotifyOutOfBandNV", 25}, {"vkQueuePresentKHR", 18}, {"vkQueueSetPerformanceConfigurationINTEL", 40}, {"vkQueueSubmit", 14}, @@ -667,6 +670,8 @@ const char* String(Func func) { {"vkSetDeviceMemoryPriorityEXT", 29}, {"vkSetEvent", 11}, {"vkSetHdrMetadataEXT", 20}, + {"vkSetLatencyMarkerNV", 21}, + {"vkSetLatencySleepModeNV", 24}, {"vkSetLocalDimmingAMD", 21}, {"vkSetPrivateData", 17}, {"vkSetPrivateDataEXT", 20}, @@ -727,6 +732,7 @@ const char* String(Struct structure) { {"VkAmigoProfilingSubmitInfoSEC", 30}, {"VkAndroidHardwareBufferFormatProperties2ANDROID", 48}, {"VkAndroidHardwareBufferFormatPropertiesANDROID", 47}, + {"VkAndroidHardwareBufferFormatResolvePropertiesANDROID", 54}, {"VkAndroidHardwareBufferPropertiesANDROID", 41}, {"VkAndroidHardwareBufferUsageANDROID", 36}, {"VkAndroidSurfaceCreateInfoKHR", 30}, @@ -976,6 +982,7 @@ const char* String(Struct structure) { {"VkGeometryDataNV", 17}, {"VkGeometryNV", 13}, {"VkGeometryTrianglesNV", 22}, + {"VkGetLatencyMarkerInfoNV", 25}, {"VkGraphicsPipelineCreateInfo", 29}, {"VkGraphicsPipelineLibraryCreateInfoEXT", 39}, {"VkGraphicsPipelineShaderGroupsCreateInfoNV", 43}, @@ -1048,6 +1055,11 @@ const char* String(Struct structure) { {"VkInitializePerformanceApiInfoINTEL", 36}, {"VkInputAttachmentAspectReference", 33}, {"VkInstanceCreateInfo", 21}, + {"VkLatencySleepInfoNV", 21}, + {"VkLatencySleepModeInfoNV", 25}, + {"VkLatencySubmissionPresentIdNV", 31}, + {"VkLatencySurfaceCapabilitiesNV", 31}, + {"VkLatencyTimingsFrameReportNV", 30}, {"VkLayerProperties", 18}, {"VkMacOSSurfaceCreateInfoMVK", 28}, {"VkMappedMemoryRange", 20}, @@ -1098,6 +1110,7 @@ const char* String(Struct structure) { {"VkOpticalFlowImageFormatPropertiesNV", 37}, {"VkOpticalFlowSessionCreateInfoNV", 33}, {"VkOpticalFlowSessionCreatePrivateDataInfoNV", 44}, + {"VkOutOfBandQueueTypeInfoNV", 27}, {"VkPastPresentationTimingGOOGLE", 31}, {"VkPerformanceConfigurationAcquireInfoINTEL", 43}, {"VkPerformanceCounterDescriptionKHR", 35}, @@ -1175,6 +1188,8 @@ const char* String(Struct structure) { {"VkPhysicalDeviceExtendedDynamicStateFeaturesEXT", 48}, {"VkPhysicalDeviceExternalBufferInfo", 35}, {"VkPhysicalDeviceExternalFenceInfo", 34}, + {"VkPhysicalDeviceExternalFormatResolveFeaturesANDROID", 53}, + {"VkPhysicalDeviceExternalFormatResolvePropertiesANDROID", 55}, {"VkPhysicalDeviceExternalImageFormatInfo", 40}, {"VkPhysicalDeviceExternalMemoryHostPropertiesEXT", 48}, {"VkPhysicalDeviceExternalMemoryRDMAFeaturesNV", 45}, @@ -1511,6 +1526,7 @@ const char* String(Struct structure) { {"VkSemaphoreSubmitInfo", 22}, {"VkSemaphoreTypeCreateInfo", 26}, {"VkSemaphoreWaitInfo", 20}, + {"VkSetLatencyMarkerInfoNV", 25}, {"VkSetStateFlagsIndirectCommandNV", 33}, {"VkShaderCreateInfoEXT", 22}, {"VkShaderModuleCreateInfo", 25}, @@ -1566,6 +1582,7 @@ const char* String(Struct structure) { {"VkSwapchainCounterCreateInfoEXT", 32}, {"VkSwapchainCreateInfoKHR", 25}, {"VkSwapchainDisplayNativeHdrCreateInfoAMD", 41}, + {"VkSwapchainLatencyCreateInfoNV", 31}, {"VkSwapchainPresentBarrierCreateInfoNV", 38}, {"VkSwapchainPresentFenceInfoEXT", 31}, {"VkSwapchainPresentModeInfoEXT", 30}, @@ -1828,6 +1845,7 @@ const char* String(Field field) { {"color", 6}, {"colorAttachment", 16}, {"colorAttachmentCount", 21}, + {"colorAttachmentFormat", 22}, {"colorBlendOp", 13}, {"colorSamples", 13}, {"colorSpace", 11}, @@ -2061,9 +2079,11 @@ const char* String(Field field) { {"drawIndirectCount", 18}, {"drawIndirectFirstInstance", 26}, {"driverCount", 12}, + {"driverEndTimeUs", 16}, {"driverID", 9}, {"driverInfo", 11}, {"driverName", 11}, + {"driverStartTimeUs", 18}, {"driverUUID", 11}, {"driverVersion", 14}, {"drmFd", 6}, @@ -2168,6 +2188,9 @@ const char* String(Field field) { {"extent", 7}, {"externalFenceFeatures", 22}, {"externalFormat", 15}, + {"externalFormatResolve", 22}, + {"externalFormatResolveChromaOffsetX", 35}, + {"externalFormatResolveChromaOffsetY", 35}, {"externalHandleType", 19}, {"externalMemoryFeatures", 23}, {"externalMemoryProperties", 25}, @@ -2283,6 +2306,8 @@ const char* String(Field field) { {"gopRemainingB", 14}, {"gopRemainingI", 14}, {"gopRemainingP", 14}, + {"gpuRenderEndTimeUs", 19}, + {"gpuRenderStartTimeUs", 21}, {"graphicsPipelineLibrary", 24}, {"graphicsPipelineLibraryFastLinking", 35}, {"graphicsPipelineLibraryIndependentInterpolationDecoration", 58}, @@ -2414,6 +2439,7 @@ const char* String(Field field) { {"inputAttachmentDescriptorSize", 30}, {"inputAttachmentIndex", 21}, {"inputRate", 10}, + {"inputSampleTimeUs", 18}, {"instance", 9}, {"instanceCount", 14}, {"instanceCustomIndex", 20}, @@ -2459,6 +2485,7 @@ const char* String(Field field) { {"isPreprocessed", 15}, {"isText", 7}, {"largePoints", 12}, + {"latencyModeEnable", 18}, {"layer", 6}, {"layerCount", 11}, {"layerName", 10}, @@ -2489,6 +2516,8 @@ const char* String(Field field) { {"location", 9}, {"logicOp", 8}, {"logicOpEnable", 14}, + {"lowLatencyBoost", 16}, + {"lowLatencyMode", 15}, {"lumaBitDepth", 13}, {"magFilter", 10}, {"maintenance4", 13}, @@ -2828,6 +2857,7 @@ const char* String(Field field) { {"minX", 5}, {"minY", 5}, {"minZ", 5}, + {"minimumIntervalUs", 18}, {"minor", 6}, {"mipLevel", 9}, {"mipLevels", 10}, @@ -2876,6 +2906,7 @@ const char* String(Field field) { {"nonSeamlessCubeMap", 19}, {"nonStrictSinglePixelWideLinesUseParallelogram", 46}, {"nonStrictWideLinesUseParallelogram", 35}, + {"nullColorAttachmentWithExternalFormatResolve", 45}, {"nullDescriptor", 15}, {"numAABBs", 9}, {"numAvailableSgprs", 18}, @@ -2905,6 +2936,8 @@ const char* String(Field field) { {"optimalTilingFeatures", 22}, {"optimalTilingLayoutUUID", 24}, {"origin", 7}, + {"osRenderQueueEndTimeUs", 23}, + {"osRenderQueueStartTimeUs", 25}, {"outputGridSize", 15}, {"overallocationBehavior", 23}, {"pAccelerationStructure", 23}, @@ -3136,6 +3169,7 @@ const char* String(Field field) { {"pInternalRepresentations", 25}, {"pLabelInfo", 11}, {"pLabelName", 11}, + {"pLatencyMarkerInfo", 19}, {"pLaunchInfo", 12}, {"pLayer", 7}, {"pLayerName", 11}, @@ -3239,6 +3273,7 @@ const char* String(Field field) { {"pQueueInfo", 11}, {"pQueueLabels", 13}, {"pQueuePriorities", 17}, + {"pQueueTypeInfo", 15}, {"pRanges", 8}, {"pRasterizationState", 20}, {"pRaygenShaderBindingTable", 26}, @@ -3282,6 +3317,8 @@ const char* String(Field field) { {"pSignalSemaphores", 18}, {"pSizeInfo", 10}, {"pSizes", 7}, + {"pSleepInfo", 11}, + {"pSleepModeInfo", 15}, {"pSliceOffsets", 14}, {"pSliceSegmentOffsets", 21}, {"pSparseMemoryRequirementCount", 30}, @@ -3333,6 +3370,8 @@ const char* String(Field field) { {"pTimes", 7}, {"pTimestampInfos", 16}, {"pTimestamps", 12}, + {"pTimingCount", 13}, + {"pTimings", 9}, {"pTokens", 8}, {"pToolCount", 11}, {"pToolProperties", 16}, @@ -3492,6 +3531,7 @@ const char* String(Field field) { {"presentBarrier", 15}, {"presentBarrierEnable", 21}, {"presentBarrierSupported", 24}, + {"presentEndTimeUs", 17}, {"presentGravityX", 16}, {"presentGravityY", 16}, {"presentID", 10}, @@ -3500,6 +3540,7 @@ const char* String(Field field) { {"presentMask", 12}, {"presentMode", 12}, {"presentModeCount", 17}, + {"presentStartTimeUs", 19}, {"presentWait", 12}, {"preserveAttachmentCount", 24}, {"primaryMajor", 13}, @@ -3563,6 +3604,7 @@ const char* String(Field field) { {"queueFlags", 11}, {"queueIndex", 11}, {"queueLabelCount", 16}, + {"queueType", 10}, {"qw", 3}, {"qx", 3}, {"qy", 3}, @@ -3613,6 +3655,8 @@ const char* String(Field field) { {"renderMajor", 12}, {"renderMinor", 12}, {"renderPass", 11}, + {"renderSubmitEndTimeUs", 22}, + {"renderSubmitStartTimeUs", 24}, {"renderpass", 11}, {"reportAddressBinding", 21}, {"reportedAddress", 16}, @@ -3841,10 +3885,13 @@ const char* String(Field field) { {"sharedMemBytes", 15}, {"sharedPresentSupportedUsageFlags", 33}, {"sharingMode", 12}, + {"signalSemaphore", 16}, {"signalSemaphoreCount", 21}, {"signalSemaphoreInfoCount", 25}, {"signalSemaphoreValueCount", 26}, {"signalSemaphoreValuesCount", 27}, + {"simEndTimeUs", 13}, + {"simStartTimeUs", 15}, {"simdPerComputeUnit", 19}, {"size", 5}, {"sliceCount", 11}, @@ -4427,6 +4474,7 @@ bool IsFieldPointer(Field field) { case Field::pInternalRepresentations: case Field::pLabelInfo: case Field::pLabelName: + case Field::pLatencyMarkerInfo: case Field::pLaunchInfo: case Field::pLayer: case Field::pLayerName: @@ -4573,6 +4621,8 @@ bool IsFieldPointer(Field field) { case Field::pSignalSemaphores: case Field::pSizeInfo: case Field::pSizes: + case Field::pSleepInfo: + case Field::pSleepModeInfo: case Field::pSliceOffsets: case Field::pSliceSegmentOffsets: case Field::pSparseMemoryRequirementCount: @@ -4624,6 +4674,8 @@ bool IsFieldPointer(Field field) { case Field::pTimes: case Field::pTimestampInfos: case Field::pTimestamps: + case Field::pTimingCount: + case Field::pTimings: case Field::pTokens: case Field::pToolCount: case Field::pToolProperties: diff --git a/layers/vulkan/generated/error_location_helper.h b/layers/vulkan/generated/error_location_helper.h index 719459fb895..e364c40e9dc 100644 --- a/layers/vulkan/generated/error_location_helper.h +++ b/layers/vulkan/generated/error_location_helper.h @@ -512,180 +512,185 @@ enum class Func { vkGetImageViewHandleNVX = 482, vkGetImageViewOpaqueCaptureDescriptorDataEXT = 483, vkGetInstanceProcAddr = 484, - vkGetMemoryAndroidHardwareBufferANDROID = 485, - vkGetMemoryFdKHR = 486, - vkGetMemoryFdPropertiesKHR = 487, - vkGetMemoryHostPointerPropertiesEXT = 488, - vkGetMemoryRemoteAddressNV = 489, - vkGetMemoryWin32HandleKHR = 490, - vkGetMemoryWin32HandleNV = 491, - vkGetMemoryWin32HandlePropertiesKHR = 492, - vkGetMemoryZirconHandleFUCHSIA = 493, - vkGetMemoryZirconHandlePropertiesFUCHSIA = 494, - vkGetMicromapBuildSizesEXT = 495, - vkGetPastPresentationTimingGOOGLE = 496, - vkGetPerformanceParameterINTEL = 497, - vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = 498, - vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR = 499, - vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = 500, - vkGetPhysicalDeviceDirectFBPresentationSupportEXT = 501, - vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 502, - vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 503, - vkGetPhysicalDeviceDisplayProperties2KHR = 504, - vkGetPhysicalDeviceDisplayPropertiesKHR = 505, - vkGetPhysicalDeviceExternalBufferProperties = 506, - vkGetPhysicalDeviceExternalBufferPropertiesKHR = 507, - vkGetPhysicalDeviceExternalFenceProperties = 508, - vkGetPhysicalDeviceExternalFencePropertiesKHR = 509, - vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 510, - vkGetPhysicalDeviceExternalSemaphoreProperties = 511, - vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 512, - vkGetPhysicalDeviceFeatures = 513, - vkGetPhysicalDeviceFeatures2 = 514, - vkGetPhysicalDeviceFeatures2KHR = 515, - vkGetPhysicalDeviceFormatProperties = 516, - vkGetPhysicalDeviceFormatProperties2 = 517, - vkGetPhysicalDeviceFormatProperties2KHR = 518, - vkGetPhysicalDeviceFragmentShadingRatesKHR = 519, - vkGetPhysicalDeviceImageFormatProperties = 520, - vkGetPhysicalDeviceImageFormatProperties2 = 521, - vkGetPhysicalDeviceImageFormatProperties2KHR = 522, - vkGetPhysicalDeviceMemoryProperties = 523, - vkGetPhysicalDeviceMemoryProperties2 = 524, - vkGetPhysicalDeviceMemoryProperties2KHR = 525, - vkGetPhysicalDeviceMultisamplePropertiesEXT = 526, - vkGetPhysicalDeviceOpticalFlowImageFormatsNV = 527, - vkGetPhysicalDevicePresentRectanglesKHR = 528, - vkGetPhysicalDeviceProperties = 529, - vkGetPhysicalDeviceProperties2 = 530, - vkGetPhysicalDeviceProperties2KHR = 531, - vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = 532, - vkGetPhysicalDeviceQueueFamilyProperties = 533, - vkGetPhysicalDeviceQueueFamilyProperties2 = 534, - vkGetPhysicalDeviceQueueFamilyProperties2KHR = 535, - vkGetPhysicalDeviceScreenPresentationSupportQNX = 536, - vkGetPhysicalDeviceSparseImageFormatProperties = 537, - vkGetPhysicalDeviceSparseImageFormatProperties2 = 538, - vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 539, - vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = 540, - vkGetPhysicalDeviceSurfaceCapabilities2EXT = 541, - vkGetPhysicalDeviceSurfaceCapabilities2KHR = 542, - vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 543, - vkGetPhysicalDeviceSurfaceFormats2KHR = 544, - vkGetPhysicalDeviceSurfaceFormatsKHR = 545, - vkGetPhysicalDeviceSurfacePresentModes2EXT = 546, - vkGetPhysicalDeviceSurfacePresentModesKHR = 547, - vkGetPhysicalDeviceSurfaceSupportKHR = 548, - vkGetPhysicalDeviceToolProperties = 549, - vkGetPhysicalDeviceToolPropertiesEXT = 550, - vkGetPhysicalDeviceVideoCapabilitiesKHR = 551, - vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = 552, - vkGetPhysicalDeviceVideoFormatPropertiesKHR = 553, - vkGetPhysicalDeviceWaylandPresentationSupportKHR = 554, - vkGetPhysicalDeviceWin32PresentationSupportKHR = 555, - vkGetPhysicalDeviceXcbPresentationSupportKHR = 556, - vkGetPhysicalDeviceXlibPresentationSupportKHR = 557, - vkGetPipelineCacheData = 558, - vkGetPipelineExecutableInternalRepresentationsKHR = 559, - vkGetPipelineExecutablePropertiesKHR = 560, - vkGetPipelineExecutableStatisticsKHR = 561, - vkGetPipelineIndirectDeviceAddressNV = 562, - vkGetPipelineIndirectMemoryRequirementsNV = 563, - vkGetPipelinePropertiesEXT = 564, - vkGetPrivateData = 565, - vkGetPrivateDataEXT = 566, - vkGetQueryPoolResults = 567, - vkGetQueueCheckpointData2NV = 568, - vkGetQueueCheckpointDataNV = 569, - vkGetRandROutputDisplayEXT = 570, - vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = 571, - vkGetRayTracingShaderGroupHandlesKHR = 572, - vkGetRayTracingShaderGroupHandlesNV = 573, - vkGetRayTracingShaderGroupStackSizeKHR = 574, - vkGetRefreshCycleDurationGOOGLE = 575, - vkGetRenderAreaGranularity = 576, - vkGetRenderingAreaGranularityKHR = 577, - vkGetSamplerOpaqueCaptureDescriptorDataEXT = 578, - vkGetScreenBufferPropertiesQNX = 579, - vkGetSemaphoreCounterValue = 580, - vkGetSemaphoreCounterValueKHR = 581, - vkGetSemaphoreFdKHR = 582, - vkGetSemaphoreWin32HandleKHR = 583, - vkGetSemaphoreZirconHandleFUCHSIA = 584, - vkGetShaderBinaryDataEXT = 585, - vkGetShaderInfoAMD = 586, - vkGetShaderModuleCreateInfoIdentifierEXT = 587, - vkGetShaderModuleIdentifierEXT = 588, - vkGetSwapchainCounterEXT = 589, - vkGetSwapchainImagesKHR = 590, - vkGetSwapchainStatusKHR = 591, - vkGetValidationCacheDataEXT = 592, - vkGetVideoSessionMemoryRequirementsKHR = 593, - vkGetWinrtDisplayNV = 594, - vkImportFenceFdKHR = 595, - vkImportFenceWin32HandleKHR = 596, - vkImportSemaphoreFdKHR = 597, - vkImportSemaphoreWin32HandleKHR = 598, - vkImportSemaphoreZirconHandleFUCHSIA = 599, - vkInitializePerformanceApiINTEL = 600, - vkInvalidateMappedMemoryRanges = 601, - vkMapMemory = 602, - vkMapMemory2KHR = 603, - vkMergePipelineCaches = 604, - vkMergeValidationCachesEXT = 605, - vkQueueBeginDebugUtilsLabelEXT = 606, - vkQueueBindSparse = 607, - vkQueueEndDebugUtilsLabelEXT = 608, - vkQueueInsertDebugUtilsLabelEXT = 609, - vkQueuePresentKHR = 610, - vkQueueSetPerformanceConfigurationINTEL = 611, - vkQueueSubmit = 612, - vkQueueSubmit2 = 613, - vkQueueSubmit2KHR = 614, - vkQueueWaitIdle = 615, - vkRegisterDeviceEventEXT = 616, - vkRegisterDisplayEventEXT = 617, - vkReleaseDisplayEXT = 618, - vkReleaseFullScreenExclusiveModeEXT = 619, - vkReleasePerformanceConfigurationINTEL = 620, - vkReleaseProfilingLockKHR = 621, - vkReleaseSwapchainImagesEXT = 622, - vkResetCommandBuffer = 623, - vkResetCommandPool = 624, - vkResetDescriptorPool = 625, - vkResetEvent = 626, - vkResetFences = 627, - vkResetQueryPool = 628, - vkResetQueryPoolEXT = 629, - vkSetBufferCollectionBufferConstraintsFUCHSIA = 630, - vkSetBufferCollectionImageConstraintsFUCHSIA = 631, - vkSetDebugUtilsObjectNameEXT = 632, - vkSetDebugUtilsObjectTagEXT = 633, - vkSetDeviceMemoryPriorityEXT = 634, - vkSetEvent = 635, - vkSetHdrMetadataEXT = 636, - vkSetLocalDimmingAMD = 637, - vkSetPrivateData = 638, - vkSetPrivateDataEXT = 639, - vkSignalSemaphore = 640, - vkSignalSemaphoreKHR = 641, - vkSubmitDebugUtilsMessageEXT = 642, - vkTransitionImageLayoutEXT = 643, - vkTrimCommandPool = 644, - vkTrimCommandPoolKHR = 645, - vkUninitializePerformanceApiINTEL = 646, - vkUnmapMemory = 647, - vkUnmapMemory2KHR = 648, - vkUpdateDescriptorSetWithTemplate = 649, - vkUpdateDescriptorSetWithTemplateKHR = 650, - vkUpdateDescriptorSets = 651, - vkUpdateVideoSessionParametersKHR = 652, - vkWaitForFences = 653, - vkWaitForPresentKHR = 654, - vkWaitSemaphores = 655, - vkWaitSemaphoresKHR = 656, - vkWriteAccelerationStructuresPropertiesKHR = 657, - vkWriteMicromapsPropertiesEXT = 658, + vkGetLatencyTimingsNV = 485, + vkGetMemoryAndroidHardwareBufferANDROID = 486, + vkGetMemoryFdKHR = 487, + vkGetMemoryFdPropertiesKHR = 488, + vkGetMemoryHostPointerPropertiesEXT = 489, + vkGetMemoryRemoteAddressNV = 490, + vkGetMemoryWin32HandleKHR = 491, + vkGetMemoryWin32HandleNV = 492, + vkGetMemoryWin32HandlePropertiesKHR = 493, + vkGetMemoryZirconHandleFUCHSIA = 494, + vkGetMemoryZirconHandlePropertiesFUCHSIA = 495, + vkGetMicromapBuildSizesEXT = 496, + vkGetPastPresentationTimingGOOGLE = 497, + vkGetPerformanceParameterINTEL = 498, + vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = 499, + vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR = 500, + vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = 501, + vkGetPhysicalDeviceDirectFBPresentationSupportEXT = 502, + vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 503, + vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 504, + vkGetPhysicalDeviceDisplayProperties2KHR = 505, + vkGetPhysicalDeviceDisplayPropertiesKHR = 506, + vkGetPhysicalDeviceExternalBufferProperties = 507, + vkGetPhysicalDeviceExternalBufferPropertiesKHR = 508, + vkGetPhysicalDeviceExternalFenceProperties = 509, + vkGetPhysicalDeviceExternalFencePropertiesKHR = 510, + vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 511, + vkGetPhysicalDeviceExternalSemaphoreProperties = 512, + vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 513, + vkGetPhysicalDeviceFeatures = 514, + vkGetPhysicalDeviceFeatures2 = 515, + vkGetPhysicalDeviceFeatures2KHR = 516, + vkGetPhysicalDeviceFormatProperties = 517, + vkGetPhysicalDeviceFormatProperties2 = 518, + vkGetPhysicalDeviceFormatProperties2KHR = 519, + vkGetPhysicalDeviceFragmentShadingRatesKHR = 520, + vkGetPhysicalDeviceImageFormatProperties = 521, + vkGetPhysicalDeviceImageFormatProperties2 = 522, + vkGetPhysicalDeviceImageFormatProperties2KHR = 523, + vkGetPhysicalDeviceMemoryProperties = 524, + vkGetPhysicalDeviceMemoryProperties2 = 525, + vkGetPhysicalDeviceMemoryProperties2KHR = 526, + vkGetPhysicalDeviceMultisamplePropertiesEXT = 527, + vkGetPhysicalDeviceOpticalFlowImageFormatsNV = 528, + vkGetPhysicalDevicePresentRectanglesKHR = 529, + vkGetPhysicalDeviceProperties = 530, + vkGetPhysicalDeviceProperties2 = 531, + vkGetPhysicalDeviceProperties2KHR = 532, + vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = 533, + vkGetPhysicalDeviceQueueFamilyProperties = 534, + vkGetPhysicalDeviceQueueFamilyProperties2 = 535, + vkGetPhysicalDeviceQueueFamilyProperties2KHR = 536, + vkGetPhysicalDeviceScreenPresentationSupportQNX = 537, + vkGetPhysicalDeviceSparseImageFormatProperties = 538, + vkGetPhysicalDeviceSparseImageFormatProperties2 = 539, + vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 540, + vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = 541, + vkGetPhysicalDeviceSurfaceCapabilities2EXT = 542, + vkGetPhysicalDeviceSurfaceCapabilities2KHR = 543, + vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 544, + vkGetPhysicalDeviceSurfaceFormats2KHR = 545, + vkGetPhysicalDeviceSurfaceFormatsKHR = 546, + vkGetPhysicalDeviceSurfacePresentModes2EXT = 547, + vkGetPhysicalDeviceSurfacePresentModesKHR = 548, + vkGetPhysicalDeviceSurfaceSupportKHR = 549, + vkGetPhysicalDeviceToolProperties = 550, + vkGetPhysicalDeviceToolPropertiesEXT = 551, + vkGetPhysicalDeviceVideoCapabilitiesKHR = 552, + vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = 553, + vkGetPhysicalDeviceVideoFormatPropertiesKHR = 554, + vkGetPhysicalDeviceWaylandPresentationSupportKHR = 555, + vkGetPhysicalDeviceWin32PresentationSupportKHR = 556, + vkGetPhysicalDeviceXcbPresentationSupportKHR = 557, + vkGetPhysicalDeviceXlibPresentationSupportKHR = 558, + vkGetPipelineCacheData = 559, + vkGetPipelineExecutableInternalRepresentationsKHR = 560, + vkGetPipelineExecutablePropertiesKHR = 561, + vkGetPipelineExecutableStatisticsKHR = 562, + vkGetPipelineIndirectDeviceAddressNV = 563, + vkGetPipelineIndirectMemoryRequirementsNV = 564, + vkGetPipelinePropertiesEXT = 565, + vkGetPrivateData = 566, + vkGetPrivateDataEXT = 567, + vkGetQueryPoolResults = 568, + vkGetQueueCheckpointData2NV = 569, + vkGetQueueCheckpointDataNV = 570, + vkGetRandROutputDisplayEXT = 571, + vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = 572, + vkGetRayTracingShaderGroupHandlesKHR = 573, + vkGetRayTracingShaderGroupHandlesNV = 574, + vkGetRayTracingShaderGroupStackSizeKHR = 575, + vkGetRefreshCycleDurationGOOGLE = 576, + vkGetRenderAreaGranularity = 577, + vkGetRenderingAreaGranularityKHR = 578, + vkGetSamplerOpaqueCaptureDescriptorDataEXT = 579, + vkGetScreenBufferPropertiesQNX = 580, + vkGetSemaphoreCounterValue = 581, + vkGetSemaphoreCounterValueKHR = 582, + vkGetSemaphoreFdKHR = 583, + vkGetSemaphoreWin32HandleKHR = 584, + vkGetSemaphoreZirconHandleFUCHSIA = 585, + vkGetShaderBinaryDataEXT = 586, + vkGetShaderInfoAMD = 587, + vkGetShaderModuleCreateInfoIdentifierEXT = 588, + vkGetShaderModuleIdentifierEXT = 589, + vkGetSwapchainCounterEXT = 590, + vkGetSwapchainImagesKHR = 591, + vkGetSwapchainStatusKHR = 592, + vkGetValidationCacheDataEXT = 593, + vkGetVideoSessionMemoryRequirementsKHR = 594, + vkGetWinrtDisplayNV = 595, + vkImportFenceFdKHR = 596, + vkImportFenceWin32HandleKHR = 597, + vkImportSemaphoreFdKHR = 598, + vkImportSemaphoreWin32HandleKHR = 599, + vkImportSemaphoreZirconHandleFUCHSIA = 600, + vkInitializePerformanceApiINTEL = 601, + vkInvalidateMappedMemoryRanges = 602, + vkLatencySleepNV = 603, + vkMapMemory = 604, + vkMapMemory2KHR = 605, + vkMergePipelineCaches = 606, + vkMergeValidationCachesEXT = 607, + vkQueueBeginDebugUtilsLabelEXT = 608, + vkQueueBindSparse = 609, + vkQueueEndDebugUtilsLabelEXT = 610, + vkQueueInsertDebugUtilsLabelEXT = 611, + vkQueueNotifyOutOfBandNV = 612, + vkQueuePresentKHR = 613, + vkQueueSetPerformanceConfigurationINTEL = 614, + vkQueueSubmit = 615, + vkQueueSubmit2 = 616, + vkQueueSubmit2KHR = 617, + vkQueueWaitIdle = 618, + vkRegisterDeviceEventEXT = 619, + vkRegisterDisplayEventEXT = 620, + vkReleaseDisplayEXT = 621, + vkReleaseFullScreenExclusiveModeEXT = 622, + vkReleasePerformanceConfigurationINTEL = 623, + vkReleaseProfilingLockKHR = 624, + vkReleaseSwapchainImagesEXT = 625, + vkResetCommandBuffer = 626, + vkResetCommandPool = 627, + vkResetDescriptorPool = 628, + vkResetEvent = 629, + vkResetFences = 630, + vkResetQueryPool = 631, + vkResetQueryPoolEXT = 632, + vkSetBufferCollectionBufferConstraintsFUCHSIA = 633, + vkSetBufferCollectionImageConstraintsFUCHSIA = 634, + vkSetDebugUtilsObjectNameEXT = 635, + vkSetDebugUtilsObjectTagEXT = 636, + vkSetDeviceMemoryPriorityEXT = 637, + vkSetEvent = 638, + vkSetHdrMetadataEXT = 639, + vkSetLatencyMarkerNV = 640, + vkSetLatencySleepModeNV = 641, + vkSetLocalDimmingAMD = 642, + vkSetPrivateData = 643, + vkSetPrivateDataEXT = 644, + vkSignalSemaphore = 645, + vkSignalSemaphoreKHR = 646, + vkSubmitDebugUtilsMessageEXT = 647, + vkTransitionImageLayoutEXT = 648, + vkTrimCommandPool = 649, + vkTrimCommandPoolKHR = 650, + vkUninitializePerformanceApiINTEL = 651, + vkUnmapMemory = 652, + vkUnmapMemory2KHR = 653, + vkUpdateDescriptorSetWithTemplate = 654, + vkUpdateDescriptorSetWithTemplateKHR = 655, + vkUpdateDescriptorSets = 656, + vkUpdateVideoSessionParametersKHR = 657, + vkWaitForFences = 658, + vkWaitForPresentKHR = 659, + vkWaitSemaphores = 660, + vkWaitSemaphoresKHR = 661, + vkWriteAccelerationStructuresPropertiesKHR = 662, + vkWriteMicromapsPropertiesEXT = 663, }; enum class Struct { @@ -721,6 +726,7 @@ enum class Struct { VkAmigoProfilingSubmitInfoSEC, VkAndroidHardwareBufferFormatProperties2ANDROID, VkAndroidHardwareBufferFormatPropertiesANDROID, + VkAndroidHardwareBufferFormatResolvePropertiesANDROID, VkAndroidHardwareBufferPropertiesANDROID, VkAndroidHardwareBufferUsageANDROID, VkAndroidSurfaceCreateInfoKHR, @@ -970,6 +976,7 @@ enum class Struct { VkGeometryDataNV, VkGeometryNV, VkGeometryTrianglesNV, + VkGetLatencyMarkerInfoNV, VkGraphicsPipelineCreateInfo, VkGraphicsPipelineLibraryCreateInfoEXT, VkGraphicsPipelineShaderGroupsCreateInfoNV, @@ -1042,6 +1049,11 @@ enum class Struct { VkInitializePerformanceApiInfoINTEL, VkInputAttachmentAspectReference, VkInstanceCreateInfo, + VkLatencySleepInfoNV, + VkLatencySleepModeInfoNV, + VkLatencySubmissionPresentIdNV, + VkLatencySurfaceCapabilitiesNV, + VkLatencyTimingsFrameReportNV, VkLayerProperties, VkMacOSSurfaceCreateInfoMVK, VkMappedMemoryRange, @@ -1092,6 +1104,7 @@ enum class Struct { VkOpticalFlowImageFormatPropertiesNV, VkOpticalFlowSessionCreateInfoNV, VkOpticalFlowSessionCreatePrivateDataInfoNV, + VkOutOfBandQueueTypeInfoNV, VkPastPresentationTimingGOOGLE, VkPerformanceConfigurationAcquireInfoINTEL, VkPerformanceCounterDescriptionKHR, @@ -1169,6 +1182,8 @@ enum class Struct { VkPhysicalDeviceExtendedDynamicStateFeaturesEXT, VkPhysicalDeviceExternalBufferInfo, VkPhysicalDeviceExternalFenceInfo, + VkPhysicalDeviceExternalFormatResolveFeaturesANDROID, + VkPhysicalDeviceExternalFormatResolvePropertiesANDROID, VkPhysicalDeviceExternalImageFormatInfo, VkPhysicalDeviceExternalMemoryHostPropertiesEXT, VkPhysicalDeviceExternalMemoryRDMAFeaturesNV, @@ -1505,6 +1520,7 @@ enum class Struct { VkSemaphoreSubmitInfo, VkSemaphoreTypeCreateInfo, VkSemaphoreWaitInfo, + VkSetLatencyMarkerInfoNV, VkSetStateFlagsIndirectCommandNV, VkShaderCreateInfoEXT, VkShaderModuleCreateInfo, @@ -1560,6 +1576,7 @@ enum class Struct { VkSwapchainCounterCreateInfoEXT, VkSwapchainCreateInfoKHR, VkSwapchainDisplayNativeHdrCreateInfoAMD, + VkSwapchainLatencyCreateInfoNV, VkSwapchainPresentBarrierCreateInfoNV, VkSwapchainPresentFenceInfoEXT, VkSwapchainPresentModeInfoEXT, @@ -1819,6 +1836,7 @@ enum class Field { color, colorAttachment, colorAttachmentCount, + colorAttachmentFormat, colorBlendOp, colorSamples, colorSpace, @@ -2052,9 +2070,11 @@ enum class Field { drawIndirectCount, drawIndirectFirstInstance, driverCount, + driverEndTimeUs, driverID, driverInfo, driverName, + driverStartTimeUs, driverUUID, driverVersion, drmFd, @@ -2159,6 +2179,9 @@ enum class Field { extent, externalFenceFeatures, externalFormat, + externalFormatResolve, + externalFormatResolveChromaOffsetX, + externalFormatResolveChromaOffsetY, externalHandleType, externalMemoryFeatures, externalMemoryProperties, @@ -2274,6 +2297,8 @@ enum class Field { gopRemainingB, gopRemainingI, gopRemainingP, + gpuRenderEndTimeUs, + gpuRenderStartTimeUs, graphicsPipelineLibrary, graphicsPipelineLibraryFastLinking, graphicsPipelineLibraryIndependentInterpolationDecoration, @@ -2405,6 +2430,7 @@ enum class Field { inputAttachmentDescriptorSize, inputAttachmentIndex, inputRate, + inputSampleTimeUs, instance, instanceCount, instanceCustomIndex, @@ -2450,6 +2476,7 @@ enum class Field { isPreprocessed, isText, largePoints, + latencyModeEnable, layer, layerCount, layerName, @@ -2480,6 +2507,8 @@ enum class Field { location, logicOp, logicOpEnable, + lowLatencyBoost, + lowLatencyMode, lumaBitDepth, magFilter, maintenance4, @@ -2819,6 +2848,7 @@ enum class Field { minX, minY, minZ, + minimumIntervalUs, minor, mipLevel, mipLevels, @@ -2867,6 +2897,7 @@ enum class Field { nonSeamlessCubeMap, nonStrictSinglePixelWideLinesUseParallelogram, nonStrictWideLinesUseParallelogram, + nullColorAttachmentWithExternalFormatResolve, nullDescriptor, numAABBs, numAvailableSgprs, @@ -2896,6 +2927,8 @@ enum class Field { optimalTilingFeatures, optimalTilingLayoutUUID, origin, + osRenderQueueEndTimeUs, + osRenderQueueStartTimeUs, outputGridSize, overallocationBehavior, pAccelerationStructure, @@ -3127,6 +3160,7 @@ enum class Field { pInternalRepresentations, pLabelInfo, pLabelName, + pLatencyMarkerInfo, pLaunchInfo, pLayer, pLayerName, @@ -3230,6 +3264,7 @@ enum class Field { pQueueInfo, pQueueLabels, pQueuePriorities, + pQueueTypeInfo, pRanges, pRasterizationState, pRaygenShaderBindingTable, @@ -3273,6 +3308,8 @@ enum class Field { pSignalSemaphores, pSizeInfo, pSizes, + pSleepInfo, + pSleepModeInfo, pSliceOffsets, pSliceSegmentOffsets, pSparseMemoryRequirementCount, @@ -3324,6 +3361,8 @@ enum class Field { pTimes, pTimestampInfos, pTimestamps, + pTimingCount, + pTimings, pTokens, pToolCount, pToolProperties, @@ -3483,6 +3522,7 @@ enum class Field { presentBarrier, presentBarrierEnable, presentBarrierSupported, + presentEndTimeUs, presentGravityX, presentGravityY, presentID, @@ -3491,6 +3531,7 @@ enum class Field { presentMask, presentMode, presentModeCount, + presentStartTimeUs, presentWait, preserveAttachmentCount, primaryMajor, @@ -3554,6 +3595,7 @@ enum class Field { queueFlags, queueIndex, queueLabelCount, + queueType, qw, qx, qy, @@ -3604,6 +3646,8 @@ enum class Field { renderMajor, renderMinor, renderPass, + renderSubmitEndTimeUs, + renderSubmitStartTimeUs, renderpass, reportAddressBinding, reportedAddress, @@ -3832,10 +3876,13 @@ enum class Field { sharedMemBytes, sharedPresentSupportedUsageFlags, sharingMode, + signalSemaphore, signalSemaphoreCount, signalSemaphoreInfoCount, signalSemaphoreValueCount, signalSemaphoreValuesCount, + simEndTimeUs, + simStartTimeUs, simdPerComputeUnit, size, sliceCount, diff --git a/layers/vulkan/generated/layer_chassis_dispatch.cpp b/layers/vulkan/generated/layer_chassis_dispatch.cpp index d296e8d05e2..f4860f1e609 100644 --- a/layers/vulkan/generated/layer_chassis_dispatch.cpp +++ b/layers/vulkan/generated/layer_chassis_dispatch.cpp @@ -8500,6 +8500,58 @@ VkResult DispatchGetDynamicRenderingTilePropertiesQCOM(VkDevice device, const Vk return result; } +VkResult DispatchSetLatencySleepModeNV(VkDevice device, VkSwapchainKHR swapchain, VkLatencySleepModeInfoNV* pSleepModeInfo) { + auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); + if (!wrap_handles) return layer_data->device_dispatch_table.SetLatencySleepModeNV(device, swapchain, pSleepModeInfo); + { swapchain = layer_data->Unwrap(swapchain); } + VkResult result = layer_data->device_dispatch_table.SetLatencySleepModeNV(device, swapchain, pSleepModeInfo); + + return result; +} + +VkResult DispatchLatencySleepNV(VkDevice device, VkSwapchainKHR swapchain, VkLatencySleepInfoNV* pSleepInfo) { + auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); + if (!wrap_handles) return layer_data->device_dispatch_table.LatencySleepNV(device, swapchain, pSleepInfo); + safe_VkLatencySleepInfoNV var_local_pSleepInfo; + safe_VkLatencySleepInfoNV* local_pSleepInfo = nullptr; + { + swapchain = layer_data->Unwrap(swapchain); + if (pSleepInfo) { + local_pSleepInfo = &var_local_pSleepInfo; + local_pSleepInfo->initialize(pSleepInfo); + + if (pSleepInfo->signalSemaphore) { + local_pSleepInfo->signalSemaphore = layer_data->Unwrap(pSleepInfo->signalSemaphore); + } + } + } + VkResult result = layer_data->device_dispatch_table.LatencySleepNV(device, swapchain, (VkLatencySleepInfoNV*)local_pSleepInfo); + + return result; +} + +void DispatchSetLatencyMarkerNV(VkDevice device, VkSwapchainKHR swapchain, VkSetLatencyMarkerInfoNV* pLatencyMarkerInfo) { + auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); + if (!wrap_handles) return layer_data->device_dispatch_table.SetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo); + { swapchain = layer_data->Unwrap(swapchain); } + layer_data->device_dispatch_table.SetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo); +} + +void DispatchGetLatencyTimingsNV(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pTimingCount, + VkGetLatencyMarkerInfoNV* pLatencyMarkerInfo) { + auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); + if (!wrap_handles) + return layer_data->device_dispatch_table.GetLatencyTimingsNV(device, swapchain, pTimingCount, pLatencyMarkerInfo); + { swapchain = layer_data->Unwrap(swapchain); } + layer_data->device_dispatch_table.GetLatencyTimingsNV(device, swapchain, pTimingCount, pLatencyMarkerInfo); +} + +void DispatchQueueNotifyOutOfBandNV(VkQueue queue, VkOutOfBandQueueTypeInfoNV pQueueTypeInfo) { + auto layer_data = GetLayerDataPtr(get_dispatch_key(queue), layer_data_map); + + layer_data->device_dispatch_table.QueueNotifyOutOfBandNV(queue, pQueueTypeInfo); +} + void DispatchCmdSetAttachmentFeedbackLoopEnableEXT(VkCommandBuffer commandBuffer, VkImageAspectFlags aspectMask) { auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); diff --git a/layers/vulkan/generated/layer_chassis_dispatch.h b/layers/vulkan/generated/layer_chassis_dispatch.h index 32fa609dfa7..326c4f924a0 100644 --- a/layers/vulkan/generated/layer_chassis_dispatch.h +++ b/layers/vulkan/generated/layer_chassis_dispatch.h @@ -1197,6 +1197,12 @@ VkResult DispatchGetFramebufferTilePropertiesQCOM(VkDevice device, VkFramebuffer VkTilePropertiesQCOM* pProperties); VkResult DispatchGetDynamicRenderingTilePropertiesQCOM(VkDevice device, const VkRenderingInfo* pRenderingInfo, VkTilePropertiesQCOM* pProperties); +VkResult DispatchSetLatencySleepModeNV(VkDevice device, VkSwapchainKHR swapchain, VkLatencySleepModeInfoNV* pSleepModeInfo); +VkResult DispatchLatencySleepNV(VkDevice device, VkSwapchainKHR swapchain, VkLatencySleepInfoNV* pSleepInfo); +void DispatchSetLatencyMarkerNV(VkDevice device, VkSwapchainKHR swapchain, VkSetLatencyMarkerInfoNV* pLatencyMarkerInfo); +void DispatchGetLatencyTimingsNV(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pTimingCount, + VkGetLatencyMarkerInfoNV* pLatencyMarkerInfo); +void DispatchQueueNotifyOutOfBandNV(VkQueue queue, VkOutOfBandQueueTypeInfoNV pQueueTypeInfo); void DispatchCmdSetAttachmentFeedbackLoopEnableEXT(VkCommandBuffer commandBuffer, VkImageAspectFlags aspectMask); #ifdef VK_USE_PLATFORM_SCREEN_QNX VkResult DispatchGetScreenBufferPropertiesQNX(VkDevice device, const struct _screen_buffer* buffer, diff --git a/layers/vulkan/generated/object_tracker.cpp b/layers/vulkan/generated/object_tracker.cpp index 1ee46bd1e0e..8857f02dae6 100644 --- a/layers/vulkan/generated/object_tracker.cpp +++ b/layers/vulkan/generated/object_tracker.cpp @@ -7394,6 +7394,58 @@ bool ObjectLifetimes::PreCallValidateGetDynamicRenderingTilePropertiesQCOM(VkDev return skip; } +bool ObjectLifetimes::PreCallValidateSetLatencySleepModeNV(VkDevice device, VkSwapchainKHR swapchain, + VkLatencySleepModeInfoNV* pSleepModeInfo, + const ErrorObject& error_obj) const { + bool skip = false; + // Checked by chassis: device: "VUID-vkSetLatencySleepModeNV-device-parameter" + skip |= ValidateObject(swapchain, kVulkanObjectTypeSwapchainKHR, false, "VUID-vkSetLatencySleepModeNV-swapchain-parameter", + kVUIDUndefined, error_obj.location.dot(Field::swapchain)); + + return skip; +} + +bool ObjectLifetimes::PreCallValidateLatencySleepNV(VkDevice device, VkSwapchainKHR swapchain, VkLatencySleepInfoNV* pSleepInfo, + const ErrorObject& error_obj) const { + bool skip = false; + // Checked by chassis: device: "VUID-vkLatencySleepNV-device-parameter" + skip |= ValidateObject(swapchain, kVulkanObjectTypeSwapchainKHR, false, "VUID-vkLatencySleepNV-swapchain-parameter", + kVUIDUndefined, error_obj.location.dot(Field::swapchain)); + if (pSleepInfo) { + [[maybe_unused]] const Location pSleepInfo_loc = error_obj.location.dot(Field::pSleepInfo); + skip |= ValidateObject(pSleepInfo->signalSemaphore, kVulkanObjectTypeSemaphore, false, + "VUID-VkLatencySleepInfoNV-signalSemaphore-parameter", kVUIDUndefined, + pSleepInfo_loc.dot(Field::signalSemaphore)); + } + + return skip; +} + +bool ObjectLifetimes::PreCallValidateSetLatencyMarkerNV(VkDevice device, VkSwapchainKHR swapchain, + VkSetLatencyMarkerInfoNV* pLatencyMarkerInfo, + const ErrorObject& error_obj) const { + bool skip = false; + // Checked by chassis: device: "VUID-vkSetLatencyMarkerNV-device-parameter" + skip |= ValidateObject(swapchain, kVulkanObjectTypeSwapchainKHR, false, "VUID-vkSetLatencyMarkerNV-swapchain-parameter", + kVUIDUndefined, error_obj.location.dot(Field::swapchain)); + + return skip; +} + +bool ObjectLifetimes::PreCallValidateGetLatencyTimingsNV(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pTimingCount, + VkGetLatencyMarkerInfoNV* pLatencyMarkerInfo, + const ErrorObject& error_obj) const { + bool skip = false; + // Checked by chassis: device: "VUID-vkGetLatencyTimingsNV-device-parameter" + skip |= ValidateObject(swapchain, kVulkanObjectTypeSwapchainKHR, false, "VUID-vkGetLatencyTimingsNV-swapchain-parameter", + kVUIDUndefined, error_obj.location.dot(Field::swapchain)); + + return skip; +} + +// vkQueueNotifyOutOfBandNV: +// Checked by chassis: queue: "VUID-vkQueueNotifyOutOfBandNV-queue-parameter" + // vkCmdSetAttachmentFeedbackLoopEnableEXT: // Checked by chassis: commandBuffer: "VUID-vkCmdSetAttachmentFeedbackLoopEnableEXT-commandBuffer-parameter" diff --git a/layers/vulkan/generated/object_tracker.h b/layers/vulkan/generated/object_tracker.h index 8ed8f38b0cf..0cdb9841948 100644 --- a/layers/vulkan/generated/object_tracker.h +++ b/layers/vulkan/generated/object_tracker.h @@ -1337,6 +1337,14 @@ bool PreCallValidateGetFramebufferTilePropertiesQCOM(VkDevice device, VkFramebuf bool PreCallValidateGetDynamicRenderingTilePropertiesQCOM(VkDevice device, const VkRenderingInfo* pRenderingInfo, VkTilePropertiesQCOM* pProperties, const ErrorObject& error_obj) const override; +bool PreCallValidateSetLatencySleepModeNV(VkDevice device, VkSwapchainKHR swapchain, VkLatencySleepModeInfoNV* pSleepModeInfo, + const ErrorObject& error_obj) const override; +bool PreCallValidateLatencySleepNV(VkDevice device, VkSwapchainKHR swapchain, VkLatencySleepInfoNV* pSleepInfo, + const ErrorObject& error_obj) const override; +bool PreCallValidateSetLatencyMarkerNV(VkDevice device, VkSwapchainKHR swapchain, VkSetLatencyMarkerInfoNV* pLatencyMarkerInfo, + const ErrorObject& error_obj) const override; +bool PreCallValidateGetLatencyTimingsNV(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pTimingCount, + VkGetLatencyMarkerInfoNV* pLatencyMarkerInfo, const ErrorObject& error_obj) const override; #ifdef VK_USE_PLATFORM_SCREEN_QNX #endif // VK_USE_PLATFORM_SCREEN_QNX bool PreCallValidateCreateAccelerationStructureKHR(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, diff --git a/layers/vulkan/generated/stateless_validation_helper.cpp b/layers/vulkan/generated/stateless_validation_helper.cpp index fa1b00f6180..b6a1266c195 100644 --- a/layers/vulkan/generated/stateless_validation_helper.cpp +++ b/layers/vulkan/generated/stateless_validation_helper.cpp @@ -6981,6 +6981,29 @@ bool StatelessValidation::ValidatePnextStructContents(const Location& loc, const skip |= ValidateBool32(pNext_loc.dot(Field::pipelineProtectedAccess), structure->pipelineProtectedAccess); } } break; +#ifdef VK_USE_PLATFORM_ANDROID_KHR + + // Validation code for VkPhysicalDeviceExternalFormatResolveFeaturesANDROID structure members + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID: { // Covers + // VUID-VkPhysicalDeviceExternalFormatResolveFeaturesANDROID-sType-sType + if (is_const_param) { + [[maybe_unused]] const Location pNext_loc = loc.pNext(Struct::VkPhysicalDeviceExternalFormatResolveFeaturesANDROID); + VkPhysicalDeviceExternalFormatResolveFeaturesANDROID* structure = + (VkPhysicalDeviceExternalFormatResolveFeaturesANDROID*)header; + skip |= ValidateBool32(pNext_loc.dot(Field::externalFormatResolve), structure->externalFormatResolve); + } + } break; +#endif // VK_USE_PLATFORM_ANDROID_KHR +#ifdef VK_USE_PLATFORM_ANDROID_KHR + + // No Validation code for VkPhysicalDeviceExternalFormatResolvePropertiesANDROID structure members -- Covers + // VUID-VkPhysicalDeviceExternalFormatResolvePropertiesANDROID-sType-sType +#endif // VK_USE_PLATFORM_ANDROID_KHR +#ifdef VK_USE_PLATFORM_ANDROID_KHR + + // No Validation code for VkAndroidHardwareBufferFormatResolvePropertiesANDROID structure members -- Covers + // VUID-VkAndroidHardwareBufferFormatResolvePropertiesANDROID-sType-sType +#endif // VK_USE_PLATFORM_ANDROID_KHR // Validation code for VkPhysicalDeviceShaderObjectFeaturesEXT structure members case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT: { // Covers @@ -7083,6 +7106,29 @@ bool StatelessValidation::ValidatePnextStructContents(const Location& loc, const } } break; + // No Validation code for VkLatencySubmissionPresentIdNV structure members -- Covers + // VUID-VkLatencySubmissionPresentIdNV-sType-sType + + // Validation code for VkSwapchainLatencyCreateInfoNV structure members + case VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV: { // Covers VUID-VkSwapchainLatencyCreateInfoNV-sType-sType + if (is_const_param) { + [[maybe_unused]] const Location pNext_loc = loc.pNext(Struct::VkSwapchainLatencyCreateInfoNV); + VkSwapchainLatencyCreateInfoNV* structure = (VkSwapchainLatencyCreateInfoNV*)header; + skip |= ValidateBool32(pNext_loc.dot(Field::latencyModeEnable), structure->latencyModeEnable); + } + } break; + + // Validation code for VkLatencySurfaceCapabilitiesNV structure members + case VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV: { // Covers VUID-VkLatencySurfaceCapabilitiesNV-sType-sType + if (is_const_param) { + [[maybe_unused]] const Location pNext_loc = loc.pNext(Struct::VkLatencySurfaceCapabilitiesNV); + VkLatencySurfaceCapabilitiesNV* structure = (VkLatencySurfaceCapabilitiesNV*)header; + skip |= ValidateArray(pNext_loc.dot(Field::presentModeCount), pNext_loc.dot(Field::pPresentModes), + structure->presentModeCount, &structure->pPresentModes, true, false, kVUIDUndefined, + "VUID-VkLatencySurfaceCapabilitiesNV-pPresentModes-parameter"); + } + } break; + // Validation code for VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM structure members case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM: { // Covers // VUID-VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM-sType-sType @@ -7647,6 +7693,7 @@ bool StatelessValidation::PreCallValidateCreateDevice(VkPhysicalDevice physicalD VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT, @@ -8056,6 +8103,7 @@ bool StatelessValidation::PreCallValidateQueueSubmit(VkQueue queue, uint32_t sub VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR, VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO, VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT, + VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV, VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR, VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO, VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, @@ -9544,6 +9592,7 @@ bool StatelessValidation::PreCallValidateCreateGraphicsPipelines(VkDevice device [[maybe_unused]] const Location pCreateInfos_loc = loc.dot(Field::pCreateInfos, createInfoIndex); constexpr std::array allowed_structs_VkGraphicsPipelineCreateInfo = { VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD, + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID, VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT, VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV, VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX, @@ -11876,6 +11925,7 @@ bool StatelessValidation::PreCallValidateGetPhysicalDeviceProperties2(VkPhysical VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT, @@ -12634,7 +12684,7 @@ bool StatelessValidation::PreCallValidateCreateRenderPass2(VkDevice device, cons for (uint32_t attachmentIndex = 0; attachmentIndex < pCreateInfo->attachmentCount; ++attachmentIndex) { [[maybe_unused]] const Location pAttachments_loc = pCreateInfo_loc.dot(Field::pAttachments, attachmentIndex); constexpr std::array allowed_structs_VkAttachmentDescription2 = { - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT}; + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT, VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID}; skip |= ValidateStructPnext(pAttachments_loc, pCreateInfo->pAttachments[attachmentIndex].pNext, allowed_structs_VkAttachmentDescription2.size(), @@ -13748,10 +13798,10 @@ bool StatelessValidation::PreCallValidateQueueSubmit2(VkQueue queue, uint32_t su if (pSubmits != nullptr) { for (uint32_t submitIndex = 0; submitIndex < submitCount; ++submitIndex) { [[maybe_unused]] const Location pSubmits_loc = loc.dot(Field::pSubmits, submitIndex); - constexpr std::array allowed_structs_VkSubmitInfo2 = {VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT, - VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR, - VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR, - VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV}; + constexpr std::array allowed_structs_VkSubmitInfo2 = { + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT, VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV, + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR, VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR, + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV}; skip |= ValidateStructPnext(pSubmits_loc, pSubmits[submitIndex].pNext, allowed_structs_VkSubmitInfo2.size(), allowed_structs_VkSubmitInfo2.data(), GeneratedVulkanHeaderVersion, @@ -14825,6 +14875,7 @@ bool StatelessValidation::PreCallValidateCreateSwapchainKHR(VkDevice device, con VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT, VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT, VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD, + VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV, VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV, VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT, VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT}; @@ -15286,6 +15337,7 @@ bool StatelessValidation::PreCallValidateCreateSharedSwapchainsKHR(VkDevice devi VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT, VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT, VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD, + VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV, VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV, VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT, VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT}; @@ -16537,6 +16589,7 @@ bool StatelessValidation::PreCallValidateGetPhysicalDeviceProperties2KHR(VkPhysi VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT, @@ -17398,7 +17451,7 @@ bool StatelessValidation::PreCallValidateCreateRenderPass2KHR(VkDevice device, c for (uint32_t attachmentIndex = 0; attachmentIndex < pCreateInfo->attachmentCount; ++attachmentIndex) { [[maybe_unused]] const Location pAttachments_loc = pCreateInfo_loc.dot(Field::pAttachments, attachmentIndex); constexpr std::array allowed_structs_VkAttachmentDescription2 = { - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT}; + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT, VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID}; skip |= ValidateStructPnext(pAttachments_loc, pCreateInfo->pAttachments[attachmentIndex].pNext, allowed_structs_VkAttachmentDescription2.size(), @@ -18044,6 +18097,7 @@ bool StatelessValidation::PreCallValidateGetPhysicalDeviceSurfaceCapabilities2KH [[maybe_unused]] const Location pSurfaceCapabilities_loc = loc.dot(Field::pSurfaceCapabilities); constexpr std::array allowed_structs_VkSurfaceCapabilities2KHR = { VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD, + VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV, VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR, VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT, VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV, @@ -19756,10 +19810,10 @@ bool StatelessValidation::PreCallValidateQueueSubmit2KHR(VkQueue queue, uint32_t if (pSubmits != nullptr) { for (uint32_t submitIndex = 0; submitIndex < submitCount; ++submitIndex) { [[maybe_unused]] const Location pSubmits_loc = loc.dot(Field::pSubmits, submitIndex); - constexpr std::array allowed_structs_VkSubmitInfo2 = {VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT, - VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR, - VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR, - VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV}; + constexpr std::array allowed_structs_VkSubmitInfo2 = { + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT, VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV, + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR, VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR, + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV}; skip |= ValidateStructPnext(pSubmits_loc, pSubmits[submitIndex].pNext, allowed_structs_VkSubmitInfo2.size(), allowed_structs_VkSubmitInfo2.data(), GeneratedVulkanHeaderVersion, @@ -22164,7 +22218,8 @@ bool StatelessValidation::PreCallValidateGetAndroidHardwareBufferPropertiesANDRO [[maybe_unused]] const Location pProperties_loc = loc.dot(Field::pProperties); constexpr std::array allowed_structs_VkAndroidHardwareBufferPropertiesANDROID = { VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID, - VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID}; + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID, + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID}; skip |= ValidateStructPnext(pProperties_loc, pProperties->pNext, allowed_structs_VkAndroidHardwareBufferPropertiesANDROID.size(), @@ -27482,6 +27537,75 @@ bool StatelessValidation::PreCallValidateGetDynamicRenderingTilePropertiesQCOM(V return skip; } +bool StatelessValidation::PreCallValidateSetLatencySleepModeNV(VkDevice device, VkSwapchainKHR swapchain, + VkLatencySleepModeInfoNV* pSleepModeInfo, + const ErrorObject& error_obj) const { + bool skip = false; + [[maybe_unused]] const Location loc = error_obj.location; + if (!IsExtEnabled(device_extensions.vk_nv_low_latency2)) skip |= OutputExtensionError(loc, "VK_NV_low_latency2"); + skip |= ValidateRequiredHandle(loc.dot(Field::swapchain), swapchain); + skip |= + ValidateStructType(loc.dot(Field::pSleepModeInfo), "VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV", pSleepModeInfo, + VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV, true, + "VUID-vkSetLatencySleepModeNV-pSleepModeInfo-parameter", "VUID-VkLatencySleepModeInfoNV-sType-sType"); + return skip; +} + +bool StatelessValidation::PreCallValidateLatencySleepNV(VkDevice device, VkSwapchainKHR swapchain, VkLatencySleepInfoNV* pSleepInfo, + const ErrorObject& error_obj) const { + bool skip = false; + [[maybe_unused]] const Location loc = error_obj.location; + if (!IsExtEnabled(device_extensions.vk_nv_low_latency2)) skip |= OutputExtensionError(loc, "VK_NV_low_latency2"); + skip |= ValidateRequiredHandle(loc.dot(Field::swapchain), swapchain); + skip |= ValidateStructType(loc.dot(Field::pSleepInfo), "VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV", pSleepInfo, + VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV, true, "VUID-vkLatencySleepNV-pSleepInfo-parameter", + "VUID-VkLatencySleepInfoNV-sType-sType"); + return skip; +} + +bool StatelessValidation::PreCallValidateSetLatencyMarkerNV(VkDevice device, VkSwapchainKHR swapchain, + VkSetLatencyMarkerInfoNV* pLatencyMarkerInfo, + const ErrorObject& error_obj) const { + bool skip = false; + [[maybe_unused]] const Location loc = error_obj.location; + if (!IsExtEnabled(device_extensions.vk_nv_low_latency2)) skip |= OutputExtensionError(loc, "VK_NV_low_latency2"); + skip |= ValidateRequiredHandle(loc.dot(Field::swapchain), swapchain); + skip |= + ValidateStructType(loc.dot(Field::pLatencyMarkerInfo), "VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV", pLatencyMarkerInfo, + VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV, true, + "VUID-vkSetLatencyMarkerNV-pLatencyMarkerInfo-parameter", "VUID-VkSetLatencyMarkerInfoNV-sType-sType"); + return skip; +} + +bool StatelessValidation::PreCallValidateGetLatencyTimingsNV(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pTimingCount, + VkGetLatencyMarkerInfoNV* pLatencyMarkerInfo, + const ErrorObject& error_obj) const { + bool skip = false; + [[maybe_unused]] const Location loc = error_obj.location; + if (!IsExtEnabled(device_extensions.vk_nv_low_latency2)) skip |= OutputExtensionError(loc, "VK_NV_low_latency2"); + skip |= ValidateRequiredHandle(loc.dot(Field::swapchain), swapchain); + skip |= + ValidateRequiredPointer(loc.dot(Field::pTimingCount), pTimingCount, "VUID-vkGetLatencyTimingsNV-pTimingCount-parameter"); + skip |= + ValidateStructType(loc.dot(Field::pLatencyMarkerInfo), "VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV", pLatencyMarkerInfo, + VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV, true, + "VUID-vkGetLatencyTimingsNV-pLatencyMarkerInfo-parameter", "VUID-VkGetLatencyMarkerInfoNV-sType-sType"); + return skip; +} + +bool StatelessValidation::PreCallValidateQueueNotifyOutOfBandNV(VkQueue queue, VkOutOfBandQueueTypeInfoNV pQueueTypeInfo, + const ErrorObject& error_obj) const { + bool skip = false; + [[maybe_unused]] const Location loc = error_obj.location; + if (!IsExtEnabled(device_extensions.vk_nv_low_latency2)) skip |= OutputExtensionError(loc, "VK_NV_low_latency2"); + skip |= ValidateStructType(loc.dot(Field::pQueueTypeInfo), "VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV", + &(pQueueTypeInfo), VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV, false, kVUIDUndefined, + "VUID-VkOutOfBandQueueTypeInfoNV-sType-sType"); + skip |= ValidateRangedEnum(loc.dot(Field::queueType), "VkOutOfBandQueueTypeNV", pQueueTypeInfo.queueType, + "VUID-VkOutOfBandQueueTypeInfoNV-queueType-parameter"); + return skip; +} + bool StatelessValidation::PreCallValidateCmdSetAttachmentFeedbackLoopEnableEXT(VkCommandBuffer commandBuffer, VkImageAspectFlags aspectMask, const ErrorObject& error_obj) const { diff --git a/layers/vulkan/generated/stateless_validation_helper.h b/layers/vulkan/generated/stateless_validation_helper.h index 4d3442ee688..438868bf42c 100644 --- a/layers/vulkan/generated/stateless_validation_helper.h +++ b/layers/vulkan/generated/stateless_validation_helper.h @@ -1728,6 +1728,16 @@ bool PreCallValidateGetFramebufferTilePropertiesQCOM(VkDevice device, VkFramebuf bool PreCallValidateGetDynamicRenderingTilePropertiesQCOM(VkDevice device, const VkRenderingInfo* pRenderingInfo, VkTilePropertiesQCOM* pProperties, const ErrorObject& error_obj) const override; +bool PreCallValidateSetLatencySleepModeNV(VkDevice device, VkSwapchainKHR swapchain, VkLatencySleepModeInfoNV* pSleepModeInfo, + const ErrorObject& error_obj) const override; +bool PreCallValidateLatencySleepNV(VkDevice device, VkSwapchainKHR swapchain, VkLatencySleepInfoNV* pSleepInfo, + const ErrorObject& error_obj) const override; +bool PreCallValidateSetLatencyMarkerNV(VkDevice device, VkSwapchainKHR swapchain, VkSetLatencyMarkerInfoNV* pLatencyMarkerInfo, + const ErrorObject& error_obj) const override; +bool PreCallValidateGetLatencyTimingsNV(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pTimingCount, + VkGetLatencyMarkerInfoNV* pLatencyMarkerInfo, const ErrorObject& error_obj) const override; +bool PreCallValidateQueueNotifyOutOfBandNV(VkQueue queue, VkOutOfBandQueueTypeInfoNV pQueueTypeInfo, + const ErrorObject& error_obj) const override; bool PreCallValidateCmdSetAttachmentFeedbackLoopEnableEXT(VkCommandBuffer commandBuffer, VkImageAspectFlags aspectMask, const ErrorObject& error_obj) const override; #ifdef VK_USE_PLATFORM_SCREEN_QNX diff --git a/layers/vulkan/generated/thread_safety.cpp b/layers/vulkan/generated/thread_safety.cpp index 6d56e878479..0a91d1a5228 100644 --- a/layers/vulkan/generated/thread_safety.cpp +++ b/layers/vulkan/generated/thread_safety.cpp @@ -7346,6 +7346,62 @@ void ThreadSafety::PostCallRecordGetDynamicRenderingTilePropertiesQCOM(VkDevice FinishReadObjectParentInstance(device, vvl::Func::vkGetDynamicRenderingTilePropertiesQCOM); } +void ThreadSafety::PreCallRecordSetLatencySleepModeNV(VkDevice device, VkSwapchainKHR swapchain, + VkLatencySleepModeInfoNV* pSleepModeInfo) { + StartReadObjectParentInstance(device, vvl::Func::vkSetLatencySleepModeNV); + StartReadObjectParentInstance(swapchain, vvl::Func::vkSetLatencySleepModeNV); +} + +void ThreadSafety::PostCallRecordSetLatencySleepModeNV(VkDevice device, VkSwapchainKHR swapchain, + VkLatencySleepModeInfoNV* pSleepModeInfo, const RecordObject& record_obj) { + FinishReadObjectParentInstance(device, vvl::Func::vkSetLatencySleepModeNV); + FinishReadObjectParentInstance(swapchain, vvl::Func::vkSetLatencySleepModeNV); +} + +void ThreadSafety::PreCallRecordLatencySleepNV(VkDevice device, VkSwapchainKHR swapchain, VkLatencySleepInfoNV* pSleepInfo) { + StartReadObjectParentInstance(device, vvl::Func::vkLatencySleepNV); + StartReadObjectParentInstance(swapchain, vvl::Func::vkLatencySleepNV); +} + +void ThreadSafety::PostCallRecordLatencySleepNV(VkDevice device, VkSwapchainKHR swapchain, VkLatencySleepInfoNV* pSleepInfo, + const RecordObject& record_obj) { + FinishReadObjectParentInstance(device, vvl::Func::vkLatencySleepNV); + FinishReadObjectParentInstance(swapchain, vvl::Func::vkLatencySleepNV); +} + +void ThreadSafety::PreCallRecordSetLatencyMarkerNV(VkDevice device, VkSwapchainKHR swapchain, + VkSetLatencyMarkerInfoNV* pLatencyMarkerInfo) { + StartReadObjectParentInstance(device, vvl::Func::vkSetLatencyMarkerNV); + StartReadObjectParentInstance(swapchain, vvl::Func::vkSetLatencyMarkerNV); +} + +void ThreadSafety::PostCallRecordSetLatencyMarkerNV(VkDevice device, VkSwapchainKHR swapchain, + VkSetLatencyMarkerInfoNV* pLatencyMarkerInfo, const RecordObject& record_obj) { + FinishReadObjectParentInstance(device, vvl::Func::vkSetLatencyMarkerNV); + FinishReadObjectParentInstance(swapchain, vvl::Func::vkSetLatencyMarkerNV); +} + +void ThreadSafety::PreCallRecordGetLatencyTimingsNV(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pTimingCount, + VkGetLatencyMarkerInfoNV* pLatencyMarkerInfo) { + StartReadObjectParentInstance(device, vvl::Func::vkGetLatencyTimingsNV); + StartReadObjectParentInstance(swapchain, vvl::Func::vkGetLatencyTimingsNV); +} + +void ThreadSafety::PostCallRecordGetLatencyTimingsNV(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pTimingCount, + VkGetLatencyMarkerInfoNV* pLatencyMarkerInfo, const RecordObject& record_obj) { + FinishReadObjectParentInstance(device, vvl::Func::vkGetLatencyTimingsNV); + FinishReadObjectParentInstance(swapchain, vvl::Func::vkGetLatencyTimingsNV); +} + +void ThreadSafety::PreCallRecordQueueNotifyOutOfBandNV(VkQueue queue, VkOutOfBandQueueTypeInfoNV pQueueTypeInfo) { + StartReadObject(queue, vvl::Func::vkQueueNotifyOutOfBandNV); +} + +void ThreadSafety::PostCallRecordQueueNotifyOutOfBandNV(VkQueue queue, VkOutOfBandQueueTypeInfoNV pQueueTypeInfo, + const RecordObject& record_obj) { + FinishReadObject(queue, vvl::Func::vkQueueNotifyOutOfBandNV); +} + void ThreadSafety::PreCallRecordCmdSetAttachmentFeedbackLoopEnableEXT(VkCommandBuffer commandBuffer, VkImageAspectFlags aspectMask) { StartWriteObject(commandBuffer, vvl::Func::vkCmdSetAttachmentFeedbackLoopEnableEXT); diff --git a/layers/vulkan/generated/thread_safety_commands.h b/layers/vulkan/generated/thread_safety_commands.h index 6d70caa5a10..21def712020 100644 --- a/layers/vulkan/generated/thread_safety_commands.h +++ b/layers/vulkan/generated/thread_safety_commands.h @@ -3567,6 +3567,34 @@ void PostCallRecordGetDynamicRenderingTilePropertiesQCOM(VkDevice device, const VkTilePropertiesQCOM* pProperties, const RecordObject& record_obj) override; +void PreCallRecordSetLatencySleepModeNV(VkDevice device, VkSwapchainKHR swapchain, + VkLatencySleepModeInfoNV* pSleepModeInfo) override; + +void PostCallRecordSetLatencySleepModeNV(VkDevice device, VkSwapchainKHR swapchain, VkLatencySleepModeInfoNV* pSleepModeInfo, + const RecordObject& record_obj) override; + +void PreCallRecordLatencySleepNV(VkDevice device, VkSwapchainKHR swapchain, VkLatencySleepInfoNV* pSleepInfo) override; + +void PostCallRecordLatencySleepNV(VkDevice device, VkSwapchainKHR swapchain, VkLatencySleepInfoNV* pSleepInfo, + const RecordObject& record_obj) override; + +void PreCallRecordSetLatencyMarkerNV(VkDevice device, VkSwapchainKHR swapchain, + VkSetLatencyMarkerInfoNV* pLatencyMarkerInfo) override; + +void PostCallRecordSetLatencyMarkerNV(VkDevice device, VkSwapchainKHR swapchain, VkSetLatencyMarkerInfoNV* pLatencyMarkerInfo, + const RecordObject& record_obj) override; + +void PreCallRecordGetLatencyTimingsNV(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pTimingCount, + VkGetLatencyMarkerInfoNV* pLatencyMarkerInfo) override; + +void PostCallRecordGetLatencyTimingsNV(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pTimingCount, + VkGetLatencyMarkerInfoNV* pLatencyMarkerInfo, const RecordObject& record_obj) override; + +void PreCallRecordQueueNotifyOutOfBandNV(VkQueue queue, VkOutOfBandQueueTypeInfoNV pQueueTypeInfo) override; + +void PostCallRecordQueueNotifyOutOfBandNV(VkQueue queue, VkOutOfBandQueueTypeInfoNV pQueueTypeInfo, + const RecordObject& record_obj) override; + void PreCallRecordCmdSetAttachmentFeedbackLoopEnableEXT(VkCommandBuffer commandBuffer, VkImageAspectFlags aspectMask) override; void PostCallRecordCmdSetAttachmentFeedbackLoopEnableEXT(VkCommandBuffer commandBuffer, VkImageAspectFlags aspectMask, diff --git a/layers/vulkan/generated/valid_enum_values.cpp b/layers/vulkan/generated/valid_enum_values.cpp index e7c91ff9e2c..c6d0e93f32f 100644 --- a/layers/vulkan/generated/valid_enum_values.cpp +++ b/layers/vulkan/generated/valid_enum_values.cpp @@ -1708,6 +1708,38 @@ std::vector ValidationObject::ValidParamValues() const { return values; } +template<> +std::vector ValidationObject::ValidParamValues() const { + constexpr std::array CoreVkLatencyMarkerNVEnums = {VK_LATENCY_MARKER_SIMULATION_START_NV, VK_LATENCY_MARKER_SIMULATION_END_NV, VK_LATENCY_MARKER_RENDERSUBMIT_START_NV, VK_LATENCY_MARKER_RENDERSUBMIT_END_NV, VK_LATENCY_MARKER_PRESENT_START_NV, VK_LATENCY_MARKER_PRESENT_END_NV, VK_LATENCY_MARKER_INPUT_SAMPLE_NV, VK_LATENCY_MARKER_TRIGGER_FLASH_NV, VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_START_NV, VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_END_NV, VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_START_NV, VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_END_NV}; + static const vvl::unordered_map> ExtendedVkLatencyMarkerNVEnums = { + }; + std::vector values(CoreVkLatencyMarkerNVEnums.cbegin(), CoreVkLatencyMarkerNVEnums.cend()); + std::set unique_exts; + for (const auto& [extension, enums]: ExtendedVkLatencyMarkerNVEnums) { + if (IsExtEnabled(device_extensions.*extension)) { + unique_exts.insert(enums.cbegin(), enums.cend()); + } + } + std::copy(unique_exts.cbegin(), unique_exts.cend(), std::back_inserter(values)); + return values; +} + +template<> +std::vector ValidationObject::ValidParamValues() const { + constexpr std::array CoreVkOutOfBandQueueTypeNVEnums = {VK_OUT_OF_BAND_QUEUE_TYPE_RENDER_NV, VK_OUT_OF_BAND_QUEUE_TYPE_PRESENT_NV}; + static const vvl::unordered_map> ExtendedVkOutOfBandQueueTypeNVEnums = { + }; + std::vector values(CoreVkOutOfBandQueueTypeNVEnums.cbegin(), CoreVkOutOfBandQueueTypeNVEnums.cend()); + std::set unique_exts; + for (const auto& [extension, enums]: ExtendedVkOutOfBandQueueTypeNVEnums) { + if (IsExtEnabled(device_extensions.*extension)) { + unique_exts.insert(enums.cbegin(), enums.cend()); + } + } + std::copy(unique_exts.cbegin(), unique_exts.cend(), std::back_inserter(values)); + return values; +} + template<> std::vector ValidationObject::ValidParamValues() const { constexpr std::array CoreVkBlockMatchWindowCompareModeQCOMEnums = {VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MIN_QCOM, VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_QCOM}; diff --git a/layers/vulkan/generated/valid_enum_values.h b/layers/vulkan/generated/valid_enum_values.h index d749071548d..26ab769ea51 100644 --- a/layers/vulkan/generated/valid_enum_values.h +++ b/layers/vulkan/generated/valid_enum_values.h @@ -123,6 +123,8 @@ template<> std::vector ValidationObject::ValidP template<> std::vector ValidationObject::ValidParamValues() const; template<> std::vector ValidationObject::ValidParamValues() const; template<> std::vector ValidationObject::ValidParamValues() const; +template<> std::vector ValidationObject::ValidParamValues() const; +template<> std::vector ValidationObject::ValidParamValues() const; template<> std::vector ValidationObject::ValidParamValues() const; template<> std::vector ValidationObject::ValidParamValues() const; template<> std::vector ValidationObject::ValidParamValues() const; diff --git a/layers/vulkan/generated/vk_dispatch_table_helper.h b/layers/vulkan/generated/vk_dispatch_table_helper.h index 72fc00c4a71..c4f6e35ba43 100644 --- a/layers/vulkan/generated/vk_dispatch_table_helper.h +++ b/layers/vulkan/generated/vk_dispatch_table_helper.h @@ -1691,6 +1691,19 @@ static VKAPI_ATTR VkResult VKAPI_CALL StubGetDynamicRenderingTilePropertiesQCOM( VkTilePropertiesQCOM* pProperties) { return VK_SUCCESS; } +static VKAPI_ATTR VkResult VKAPI_CALL StubSetLatencySleepModeNV(VkDevice device, VkSwapchainKHR swapchain, + VkLatencySleepModeInfoNV* pSleepModeInfo) { + return VK_SUCCESS; +} +static VKAPI_ATTR VkResult VKAPI_CALL StubLatencySleepNV(VkDevice device, VkSwapchainKHR swapchain, + VkLatencySleepInfoNV* pSleepInfo) { + return VK_SUCCESS; +} +static VKAPI_ATTR void VKAPI_CALL StubSetLatencyMarkerNV(VkDevice device, VkSwapchainKHR swapchain, + VkSetLatencyMarkerInfoNV* pLatencyMarkerInfo) {} +static VKAPI_ATTR void VKAPI_CALL StubGetLatencyTimingsNV(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pTimingCount, + VkGetLatencyMarkerInfoNV* pLatencyMarkerInfo) {} +static VKAPI_ATTR void VKAPI_CALL StubQueueNotifyOutOfBandNV(VkQueue queue, VkOutOfBandQueueTypeInfoNV pQueueTypeInfo) {} static VKAPI_ATTR void VKAPI_CALL StubCmdSetAttachmentFeedbackLoopEnableEXT(VkCommandBuffer commandBuffer, VkImageAspectFlags aspectMask) {} #ifdef VK_USE_PLATFORM_SCREEN_QNX @@ -2200,6 +2213,11 @@ const vvl::unordered_map> api_ {"vkCmdBindShadersEXT", {"VK_EXT_shader_object"}}, {"vkGetFramebufferTilePropertiesQCOM", {"VK_QCOM_tile_properties"}}, {"vkGetDynamicRenderingTilePropertiesQCOM", {"VK_QCOM_tile_properties"}}, + {"vkSetLatencySleepModeNV", {"VK_NV_low_latency2"}}, + {"vkLatencySleepNV", {"VK_NV_low_latency2"}}, + {"vkSetLatencyMarkerNV", {"VK_NV_low_latency2"}}, + {"vkGetLatencyTimingsNV", {"VK_NV_low_latency2"}}, + {"vkQueueNotifyOutOfBandNV", {"VK_NV_low_latency2"}}, {"vkCmdSetAttachmentFeedbackLoopEnableEXT", {"VK_EXT_attachment_feedback_loop_dynamic_state"}}, {"vkGetScreenBufferPropertiesQNX", {"VK_QNX_external_memory_screen_buffer"}}, {"vkCreateAccelerationStructureKHR", {"VK_KHR_acceleration_structure"}}, @@ -4227,6 +4245,26 @@ static inline void layer_init_device_dispatch_table(VkDevice device, VkLayerDisp table->GetDynamicRenderingTilePropertiesQCOM = (PFN_vkGetDynamicRenderingTilePropertiesQCOM)StubGetDynamicRenderingTilePropertiesQCOM; } + table->SetLatencySleepModeNV = (PFN_vkSetLatencySleepModeNV)gpa(device, "vkSetLatencySleepModeNV"); + if (table->SetLatencySleepModeNV == nullptr) { + table->SetLatencySleepModeNV = (PFN_vkSetLatencySleepModeNV)StubSetLatencySleepModeNV; + } + table->LatencySleepNV = (PFN_vkLatencySleepNV)gpa(device, "vkLatencySleepNV"); + if (table->LatencySleepNV == nullptr) { + table->LatencySleepNV = (PFN_vkLatencySleepNV)StubLatencySleepNV; + } + table->SetLatencyMarkerNV = (PFN_vkSetLatencyMarkerNV)gpa(device, "vkSetLatencyMarkerNV"); + if (table->SetLatencyMarkerNV == nullptr) { + table->SetLatencyMarkerNV = (PFN_vkSetLatencyMarkerNV)StubSetLatencyMarkerNV; + } + table->GetLatencyTimingsNV = (PFN_vkGetLatencyTimingsNV)gpa(device, "vkGetLatencyTimingsNV"); + if (table->GetLatencyTimingsNV == nullptr) { + table->GetLatencyTimingsNV = (PFN_vkGetLatencyTimingsNV)StubGetLatencyTimingsNV; + } + table->QueueNotifyOutOfBandNV = (PFN_vkQueueNotifyOutOfBandNV)gpa(device, "vkQueueNotifyOutOfBandNV"); + if (table->QueueNotifyOutOfBandNV == nullptr) { + table->QueueNotifyOutOfBandNV = (PFN_vkQueueNotifyOutOfBandNV)StubQueueNotifyOutOfBandNV; + } table->CmdSetAttachmentFeedbackLoopEnableEXT = (PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT)gpa(device, "vkCmdSetAttachmentFeedbackLoopEnableEXT"); if (table->CmdSetAttachmentFeedbackLoopEnableEXT == nullptr) { diff --git a/layers/vulkan/generated/vk_extension_helper.h b/layers/vulkan/generated/vk_extension_helper.h index 66d4c2d9a39..e10b0026ec8 100644 --- a/layers/vulkan/generated/vk_extension_helper.h +++ b/layers/vulkan/generated/vk_extension_helper.h @@ -677,6 +677,7 @@ struct DeviceExtensions : public InstanceExtensions { ExtEnabled vk_nv_optical_flow{kNotEnabled}; ExtEnabled vk_ext_legacy_dithering{kNotEnabled}; ExtEnabled vk_ext_pipeline_protected_access{kNotEnabled}; + ExtEnabled vk_android_external_format_resolve{kNotEnabled}; ExtEnabled vk_ext_shader_object{kNotEnabled}; ExtEnabled vk_qcom_tile_properties{kNotEnabled}; ExtEnabled vk_sec_amigo_profiling{kNotEnabled}; @@ -686,6 +687,7 @@ struct DeviceExtensions : public InstanceExtensions { ExtEnabled vk_arm_shader_core_builtins{kNotEnabled}; ExtEnabled vk_ext_pipeline_library_group_handles{kNotEnabled}; ExtEnabled vk_ext_dynamic_rendering_unused_attachments{kNotEnabled}; + ExtEnabled vk_nv_low_latency2{kNotEnabled}; ExtEnabled vk_qcom_multiview_per_view_render_areas{kNotEnabled}; ExtEnabled vk_qcom_image_processing2{kNotEnabled}; ExtEnabled vk_qcom_filter_cubic_weights{kNotEnabled}; @@ -1635,6 +1637,12 @@ struct DeviceExtensions : public InstanceExtensions { DeviceInfo(&DeviceExtensions::vk_ext_pipeline_protected_access, {{{&DeviceExtensions::vk_khr_get_physical_device_properties2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})}, +#ifdef VK_USE_PLATFORM_ANDROID_KHR + {VK_ANDROID_EXTERNAL_FORMAT_RESOLVE_EXTENSION_NAME, + DeviceInfo(&DeviceExtensions::vk_android_external_format_resolve, + {{{&DeviceExtensions::vk_android_external_memory_android_hardware_buffer, + VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME}}})}, +#endif {VK_EXT_SHADER_OBJECT_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ext_shader_object, {{{&DeviceExtensions::vk_khr_get_physical_device_properties2, @@ -1668,6 +1676,7 @@ struct DeviceExtensions : public InstanceExtensions { {{{&DeviceExtensions::vk_khr_get_physical_device_properties2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}, {&DeviceExtensions::vk_khr_dynamic_rendering, VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME}}})}, + {VK_NV_LOW_LATENCY_2_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_nv_low_latency2, {})}, {VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_qcom_multiview_per_view_render_areas, {})}, {VK_QCOM_IMAGE_PROCESSING_2_EXTENSION_NAME, @@ -2202,6 +2211,9 @@ static const std::set kDeviceExtensionNames = { VK_NV_OPTICAL_FLOW_EXTENSION_NAME, VK_EXT_LEGACY_DITHERING_EXTENSION_NAME, VK_EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME, +#ifdef VK_USE_PLATFORM_ANDROID_KHR + VK_ANDROID_EXTERNAL_FORMAT_RESOLVE_EXTENSION_NAME, +#endif VK_EXT_SHADER_OBJECT_EXTENSION_NAME, VK_QCOM_TILE_PROPERTIES_EXTENSION_NAME, VK_SEC_AMIGO_PROFILING_EXTENSION_NAME, @@ -2211,6 +2223,7 @@ static const std::set kDeviceExtensionNames = { VK_ARM_SHADER_CORE_BUILTINS_EXTENSION_NAME, VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_EXTENSION_NAME, VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME, + VK_NV_LOW_LATENCY_2_EXTENSION_NAME, VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME, VK_QCOM_IMAGE_PROCESSING_2_EXTENSION_NAME, VK_QCOM_FILTER_CUBIC_WEIGHTS_EXTENSION_NAME, diff --git a/layers/vulkan/generated/vk_function_pointers.cpp b/layers/vulkan/generated/vk_function_pointers.cpp index 2a14d56962e..3f1a2b35b14 100644 --- a/layers/vulkan/generated/vk_function_pointers.cpp +++ b/layers/vulkan/generated/vk_function_pointers.cpp @@ -819,6 +819,11 @@ PFN_vkGetShaderBinaryDataEXT GetShaderBinaryDataEXT; PFN_vkCmdBindShadersEXT CmdBindShadersEXT; PFN_vkGetFramebufferTilePropertiesQCOM GetFramebufferTilePropertiesQCOM; PFN_vkGetDynamicRenderingTilePropertiesQCOM GetDynamicRenderingTilePropertiesQCOM; +PFN_vkSetLatencySleepModeNV SetLatencySleepModeNV; +PFN_vkLatencySleepNV LatencySleepNV; +PFN_vkSetLatencyMarkerNV SetLatencyMarkerNV; +PFN_vkGetLatencyTimingsNV GetLatencyTimingsNV; +PFN_vkQueueNotifyOutOfBandNV QueueNotifyOutOfBandNV; PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT CmdSetAttachmentFeedbackLoopEnableEXT; #ifdef VK_USE_PLATFORM_SCREEN_QNX PFN_vkGetScreenBufferPropertiesQNX GetScreenBufferPropertiesQNX; @@ -2170,6 +2175,15 @@ void InitDeviceExtension(VkInstance instance, VkDevice device, const char* exten GetDynamicRenderingTilePropertiesQCOM = reinterpret_cast(GetDeviceProcAddr(device, "vkGetDynamicRenderingTilePropertiesQCOM")); } }, + { + "VK_NV_low_latency2", [](VkInstance , VkDevice device) { + SetLatencySleepModeNV = reinterpret_cast(GetDeviceProcAddr(device, "vkSetLatencySleepModeNV")); + LatencySleepNV = reinterpret_cast(GetDeviceProcAddr(device, "vkLatencySleepNV")); + SetLatencyMarkerNV = reinterpret_cast(GetDeviceProcAddr(device, "vkSetLatencyMarkerNV")); + GetLatencyTimingsNV = reinterpret_cast(GetDeviceProcAddr(device, "vkGetLatencyTimingsNV")); + QueueNotifyOutOfBandNV = reinterpret_cast(GetDeviceProcAddr(device, "vkQueueNotifyOutOfBandNV")); + } + }, { "VK_EXT_attachment_feedback_loop_dynamic_state", [](VkInstance , VkDevice device) { CmdSetAttachmentFeedbackLoopEnableEXT = reinterpret_cast(GetDeviceProcAddr(device, "vkCmdSetAttachmentFeedbackLoopEnableEXT")); @@ -2755,6 +2769,11 @@ void ResetAllExtensions() { CmdBindShadersEXT = nullptr; GetFramebufferTilePropertiesQCOM = nullptr; GetDynamicRenderingTilePropertiesQCOM = nullptr; + SetLatencySleepModeNV = nullptr; + LatencySleepNV = nullptr; + SetLatencyMarkerNV = nullptr; + GetLatencyTimingsNV = nullptr; + QueueNotifyOutOfBandNV = nullptr; CmdSetAttachmentFeedbackLoopEnableEXT = nullptr; #ifdef VK_USE_PLATFORM_SCREEN_QNX GetScreenBufferPropertiesQNX = nullptr; diff --git a/layers/vulkan/generated/vk_function_pointers.h b/layers/vulkan/generated/vk_function_pointers.h index 259ba7f0a4d..5a03bdbecdc 100644 --- a/layers/vulkan/generated/vk_function_pointers.h +++ b/layers/vulkan/generated/vk_function_pointers.h @@ -782,6 +782,11 @@ extern PFN_vkGetShaderBinaryDataEXT GetShaderBinaryDataEXT; extern PFN_vkCmdBindShadersEXT CmdBindShadersEXT; extern PFN_vkGetFramebufferTilePropertiesQCOM GetFramebufferTilePropertiesQCOM; extern PFN_vkGetDynamicRenderingTilePropertiesQCOM GetDynamicRenderingTilePropertiesQCOM; +extern PFN_vkSetLatencySleepModeNV SetLatencySleepModeNV; +extern PFN_vkLatencySleepNV LatencySleepNV; +extern PFN_vkSetLatencyMarkerNV SetLatencyMarkerNV; +extern PFN_vkGetLatencyTimingsNV GetLatencyTimingsNV; +extern PFN_vkQueueNotifyOutOfBandNV QueueNotifyOutOfBandNV; extern PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT CmdSetAttachmentFeedbackLoopEnableEXT; #ifdef VK_USE_PLATFORM_SCREEN_QNX extern PFN_vkGetScreenBufferPropertiesQNX GetScreenBufferPropertiesQNX; diff --git a/layers/vulkan/generated/vk_layer_dispatch_table.h b/layers/vulkan/generated/vk_layer_dispatch_table.h index 1f5f6f3da32..0d593758e5b 100644 --- a/layers/vulkan/generated/vk_layer_dispatch_table.h +++ b/layers/vulkan/generated/vk_layer_dispatch_table.h @@ -778,6 +778,11 @@ typedef struct VkLayerDispatchTable_ { PFN_vkCmdBindShadersEXT CmdBindShadersEXT; PFN_vkGetFramebufferTilePropertiesQCOM GetFramebufferTilePropertiesQCOM; PFN_vkGetDynamicRenderingTilePropertiesQCOM GetDynamicRenderingTilePropertiesQCOM; + PFN_vkSetLatencySleepModeNV SetLatencySleepModeNV; + PFN_vkLatencySleepNV LatencySleepNV; + PFN_vkSetLatencyMarkerNV SetLatencyMarkerNV; + PFN_vkGetLatencyTimingsNV GetLatencyTimingsNV; + PFN_vkQueueNotifyOutOfBandNV QueueNotifyOutOfBandNV; PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT CmdSetAttachmentFeedbackLoopEnableEXT; #ifdef VK_USE_PLATFORM_SCREEN_QNX PFN_vkGetScreenBufferPropertiesQNX GetScreenBufferPropertiesQNX; diff --git a/layers/vulkan/generated/vk_safe_struct.h b/layers/vulkan/generated/vk_safe_struct.h index c72d7f06858..57dbe9eb86b 100644 --- a/layers/vulkan/generated/vk_safe_struct.h +++ b/layers/vulkan/generated/vk_safe_struct.h @@ -15967,6 +15967,80 @@ struct safe_VkPhysicalDevicePipelineProtectedAccessFeaturesEXT { return reinterpret_cast(this); } }; +#ifdef VK_USE_PLATFORM_ANDROID_KHR +struct safe_VkPhysicalDeviceExternalFormatResolveFeaturesANDROID { + VkStructureType sType; + void* pNext{}; + VkBool32 externalFormatResolve; + + safe_VkPhysicalDeviceExternalFormatResolveFeaturesANDROID(const VkPhysicalDeviceExternalFormatResolveFeaturesANDROID* in_struct, + PNextCopyState* copy_state = {}); + safe_VkPhysicalDeviceExternalFormatResolveFeaturesANDROID( + const safe_VkPhysicalDeviceExternalFormatResolveFeaturesANDROID& copy_src); + safe_VkPhysicalDeviceExternalFormatResolveFeaturesANDROID& operator=( + const safe_VkPhysicalDeviceExternalFormatResolveFeaturesANDROID& copy_src); + safe_VkPhysicalDeviceExternalFormatResolveFeaturesANDROID(); + ~safe_VkPhysicalDeviceExternalFormatResolveFeaturesANDROID(); + void initialize(const VkPhysicalDeviceExternalFormatResolveFeaturesANDROID* in_struct, PNextCopyState* copy_state = {}); + void initialize(const safe_VkPhysicalDeviceExternalFormatResolveFeaturesANDROID* copy_src, PNextCopyState* copy_state = {}); + VkPhysicalDeviceExternalFormatResolveFeaturesANDROID* ptr() { + return reinterpret_cast(this); + } + VkPhysicalDeviceExternalFormatResolveFeaturesANDROID const* ptr() const { + return reinterpret_cast(this); + } +}; +#endif // VK_USE_PLATFORM_ANDROID_KHR +#ifdef VK_USE_PLATFORM_ANDROID_KHR +struct safe_VkPhysicalDeviceExternalFormatResolvePropertiesANDROID { + VkStructureType sType; + void* pNext{}; + VkBool32 nullColorAttachmentWithExternalFormatResolve; + VkChromaLocation externalFormatResolveChromaOffsetX; + VkChromaLocation externalFormatResolveChromaOffsetY; + + safe_VkPhysicalDeviceExternalFormatResolvePropertiesANDROID( + const VkPhysicalDeviceExternalFormatResolvePropertiesANDROID* in_struct, PNextCopyState* copy_state = {}); + safe_VkPhysicalDeviceExternalFormatResolvePropertiesANDROID( + const safe_VkPhysicalDeviceExternalFormatResolvePropertiesANDROID& copy_src); + safe_VkPhysicalDeviceExternalFormatResolvePropertiesANDROID& operator=( + const safe_VkPhysicalDeviceExternalFormatResolvePropertiesANDROID& copy_src); + safe_VkPhysicalDeviceExternalFormatResolvePropertiesANDROID(); + ~safe_VkPhysicalDeviceExternalFormatResolvePropertiesANDROID(); + void initialize(const VkPhysicalDeviceExternalFormatResolvePropertiesANDROID* in_struct, PNextCopyState* copy_state = {}); + void initialize(const safe_VkPhysicalDeviceExternalFormatResolvePropertiesANDROID* copy_src, PNextCopyState* copy_state = {}); + VkPhysicalDeviceExternalFormatResolvePropertiesANDROID* ptr() { + return reinterpret_cast(this); + } + VkPhysicalDeviceExternalFormatResolvePropertiesANDROID const* ptr() const { + return reinterpret_cast(this); + } +}; +#endif // VK_USE_PLATFORM_ANDROID_KHR +#ifdef VK_USE_PLATFORM_ANDROID_KHR +struct safe_VkAndroidHardwareBufferFormatResolvePropertiesANDROID { + VkStructureType sType; + void* pNext{}; + VkFormat colorAttachmentFormat; + + safe_VkAndroidHardwareBufferFormatResolvePropertiesANDROID( + const VkAndroidHardwareBufferFormatResolvePropertiesANDROID* in_struct, PNextCopyState* copy_state = {}); + safe_VkAndroidHardwareBufferFormatResolvePropertiesANDROID( + const safe_VkAndroidHardwareBufferFormatResolvePropertiesANDROID& copy_src); + safe_VkAndroidHardwareBufferFormatResolvePropertiesANDROID& operator=( + const safe_VkAndroidHardwareBufferFormatResolvePropertiesANDROID& copy_src); + safe_VkAndroidHardwareBufferFormatResolvePropertiesANDROID(); + ~safe_VkAndroidHardwareBufferFormatResolvePropertiesANDROID(); + void initialize(const VkAndroidHardwareBufferFormatResolvePropertiesANDROID* in_struct, PNextCopyState* copy_state = {}); + void initialize(const safe_VkAndroidHardwareBufferFormatResolvePropertiesANDROID* copy_src, PNextCopyState* copy_state = {}); + VkAndroidHardwareBufferFormatResolvePropertiesANDROID* ptr() { + return reinterpret_cast(this); + } + VkAndroidHardwareBufferFormatResolvePropertiesANDROID const* ptr() const { + return reinterpret_cast(this); + } +}; +#endif // VK_USE_PLATFORM_ANDROID_KHR struct safe_VkPhysicalDeviceShaderObjectFeaturesEXT { VkStructureType sType; void* pNext{}; @@ -16256,6 +16330,159 @@ struct safe_VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT { return reinterpret_cast(this); } }; +struct safe_VkLatencySleepModeInfoNV { + VkStructureType sType; + const void* pNext{}; + VkBool32 lowLatencyMode; + VkBool32 lowLatencyBoost; + uint32_t minimumIntervalUs; + + safe_VkLatencySleepModeInfoNV(const VkLatencySleepModeInfoNV* in_struct, PNextCopyState* copy_state = {}); + safe_VkLatencySleepModeInfoNV(const safe_VkLatencySleepModeInfoNV& copy_src); + safe_VkLatencySleepModeInfoNV& operator=(const safe_VkLatencySleepModeInfoNV& copy_src); + safe_VkLatencySleepModeInfoNV(); + ~safe_VkLatencySleepModeInfoNV(); + void initialize(const VkLatencySleepModeInfoNV* in_struct, PNextCopyState* copy_state = {}); + void initialize(const safe_VkLatencySleepModeInfoNV* copy_src, PNextCopyState* copy_state = {}); + VkLatencySleepModeInfoNV* ptr() { return reinterpret_cast(this); } + VkLatencySleepModeInfoNV const* ptr() const { return reinterpret_cast(this); } +}; +struct safe_VkLatencySleepInfoNV { + VkStructureType sType; + const void* pNext{}; + VkSemaphore signalSemaphore; + uint64_t value; + + safe_VkLatencySleepInfoNV(const VkLatencySleepInfoNV* in_struct, PNextCopyState* copy_state = {}); + safe_VkLatencySleepInfoNV(const safe_VkLatencySleepInfoNV& copy_src); + safe_VkLatencySleepInfoNV& operator=(const safe_VkLatencySleepInfoNV& copy_src); + safe_VkLatencySleepInfoNV(); + ~safe_VkLatencySleepInfoNV(); + void initialize(const VkLatencySleepInfoNV* in_struct, PNextCopyState* copy_state = {}); + void initialize(const safe_VkLatencySleepInfoNV* copy_src, PNextCopyState* copy_state = {}); + VkLatencySleepInfoNV* ptr() { return reinterpret_cast(this); } + VkLatencySleepInfoNV const* ptr() const { return reinterpret_cast(this); } +}; +struct safe_VkSetLatencyMarkerInfoNV { + VkStructureType sType; + const void* pNext{}; + uint64_t presentID; + VkLatencyMarkerNV marker; + + safe_VkSetLatencyMarkerInfoNV(const VkSetLatencyMarkerInfoNV* in_struct, PNextCopyState* copy_state = {}); + safe_VkSetLatencyMarkerInfoNV(const safe_VkSetLatencyMarkerInfoNV& copy_src); + safe_VkSetLatencyMarkerInfoNV& operator=(const safe_VkSetLatencyMarkerInfoNV& copy_src); + safe_VkSetLatencyMarkerInfoNV(); + ~safe_VkSetLatencyMarkerInfoNV(); + void initialize(const VkSetLatencyMarkerInfoNV* in_struct, PNextCopyState* copy_state = {}); + void initialize(const safe_VkSetLatencyMarkerInfoNV* copy_src, PNextCopyState* copy_state = {}); + VkSetLatencyMarkerInfoNV* ptr() { return reinterpret_cast(this); } + VkSetLatencyMarkerInfoNV const* ptr() const { return reinterpret_cast(this); } +}; +struct safe_VkLatencyTimingsFrameReportNV { + VkStructureType sType; + const void* pNext{}; + uint64_t presentID; + uint64_t inputSampleTimeUs; + uint64_t simStartTimeUs; + uint64_t simEndTimeUs; + uint64_t renderSubmitStartTimeUs; + uint64_t renderSubmitEndTimeUs; + uint64_t presentStartTimeUs; + uint64_t presentEndTimeUs; + uint64_t driverStartTimeUs; + uint64_t driverEndTimeUs; + uint64_t osRenderQueueStartTimeUs; + uint64_t osRenderQueueEndTimeUs; + uint64_t gpuRenderStartTimeUs; + uint64_t gpuRenderEndTimeUs; + + safe_VkLatencyTimingsFrameReportNV(const VkLatencyTimingsFrameReportNV* in_struct, PNextCopyState* copy_state = {}); + safe_VkLatencyTimingsFrameReportNV(const safe_VkLatencyTimingsFrameReportNV& copy_src); + safe_VkLatencyTimingsFrameReportNV& operator=(const safe_VkLatencyTimingsFrameReportNV& copy_src); + safe_VkLatencyTimingsFrameReportNV(); + ~safe_VkLatencyTimingsFrameReportNV(); + void initialize(const VkLatencyTimingsFrameReportNV* in_struct, PNextCopyState* copy_state = {}); + void initialize(const safe_VkLatencyTimingsFrameReportNV* copy_src, PNextCopyState* copy_state = {}); + VkLatencyTimingsFrameReportNV* ptr() { return reinterpret_cast(this); } + VkLatencyTimingsFrameReportNV const* ptr() const { return reinterpret_cast(this); } +}; +struct safe_VkGetLatencyMarkerInfoNV { + VkStructureType sType; + const void* pNext{}; + safe_VkLatencyTimingsFrameReportNV* pTimings{}; + + safe_VkGetLatencyMarkerInfoNV(const VkGetLatencyMarkerInfoNV* in_struct, PNextCopyState* copy_state = {}); + safe_VkGetLatencyMarkerInfoNV(const safe_VkGetLatencyMarkerInfoNV& copy_src); + safe_VkGetLatencyMarkerInfoNV& operator=(const safe_VkGetLatencyMarkerInfoNV& copy_src); + safe_VkGetLatencyMarkerInfoNV(); + ~safe_VkGetLatencyMarkerInfoNV(); + void initialize(const VkGetLatencyMarkerInfoNV* in_struct, PNextCopyState* copy_state = {}); + void initialize(const safe_VkGetLatencyMarkerInfoNV* copy_src, PNextCopyState* copy_state = {}); + VkGetLatencyMarkerInfoNV* ptr() { return reinterpret_cast(this); } + VkGetLatencyMarkerInfoNV const* ptr() const { return reinterpret_cast(this); } +}; +struct safe_VkLatencySubmissionPresentIdNV { + VkStructureType sType; + const void* pNext{}; + uint64_t presentID; + + safe_VkLatencySubmissionPresentIdNV(const VkLatencySubmissionPresentIdNV* in_struct, PNextCopyState* copy_state = {}); + safe_VkLatencySubmissionPresentIdNV(const safe_VkLatencySubmissionPresentIdNV& copy_src); + safe_VkLatencySubmissionPresentIdNV& operator=(const safe_VkLatencySubmissionPresentIdNV& copy_src); + safe_VkLatencySubmissionPresentIdNV(); + ~safe_VkLatencySubmissionPresentIdNV(); + void initialize(const VkLatencySubmissionPresentIdNV* in_struct, PNextCopyState* copy_state = {}); + void initialize(const safe_VkLatencySubmissionPresentIdNV* copy_src, PNextCopyState* copy_state = {}); + VkLatencySubmissionPresentIdNV* ptr() { return reinterpret_cast(this); } + VkLatencySubmissionPresentIdNV const* ptr() const { return reinterpret_cast(this); } +}; +struct safe_VkSwapchainLatencyCreateInfoNV { + VkStructureType sType; + const void* pNext{}; + VkBool32 latencyModeEnable; + + safe_VkSwapchainLatencyCreateInfoNV(const VkSwapchainLatencyCreateInfoNV* in_struct, PNextCopyState* copy_state = {}); + safe_VkSwapchainLatencyCreateInfoNV(const safe_VkSwapchainLatencyCreateInfoNV& copy_src); + safe_VkSwapchainLatencyCreateInfoNV& operator=(const safe_VkSwapchainLatencyCreateInfoNV& copy_src); + safe_VkSwapchainLatencyCreateInfoNV(); + ~safe_VkSwapchainLatencyCreateInfoNV(); + void initialize(const VkSwapchainLatencyCreateInfoNV* in_struct, PNextCopyState* copy_state = {}); + void initialize(const safe_VkSwapchainLatencyCreateInfoNV* copy_src, PNextCopyState* copy_state = {}); + VkSwapchainLatencyCreateInfoNV* ptr() { return reinterpret_cast(this); } + VkSwapchainLatencyCreateInfoNV const* ptr() const { return reinterpret_cast(this); } +}; +struct safe_VkOutOfBandQueueTypeInfoNV { + VkStructureType sType; + const void* pNext{}; + VkOutOfBandQueueTypeNV queueType; + + safe_VkOutOfBandQueueTypeInfoNV(const VkOutOfBandQueueTypeInfoNV* in_struct, PNextCopyState* copy_state = {}); + safe_VkOutOfBandQueueTypeInfoNV(const safe_VkOutOfBandQueueTypeInfoNV& copy_src); + safe_VkOutOfBandQueueTypeInfoNV& operator=(const safe_VkOutOfBandQueueTypeInfoNV& copy_src); + safe_VkOutOfBandQueueTypeInfoNV(); + ~safe_VkOutOfBandQueueTypeInfoNV(); + void initialize(const VkOutOfBandQueueTypeInfoNV* in_struct, PNextCopyState* copy_state = {}); + void initialize(const safe_VkOutOfBandQueueTypeInfoNV* copy_src, PNextCopyState* copy_state = {}); + VkOutOfBandQueueTypeInfoNV* ptr() { return reinterpret_cast(this); } + VkOutOfBandQueueTypeInfoNV const* ptr() const { return reinterpret_cast(this); } +}; +struct safe_VkLatencySurfaceCapabilitiesNV { + VkStructureType sType; + const void* pNext{}; + uint32_t presentModeCount; + VkPresentModeKHR* pPresentModes{}; + + safe_VkLatencySurfaceCapabilitiesNV(const VkLatencySurfaceCapabilitiesNV* in_struct, PNextCopyState* copy_state = {}); + safe_VkLatencySurfaceCapabilitiesNV(const safe_VkLatencySurfaceCapabilitiesNV& copy_src); + safe_VkLatencySurfaceCapabilitiesNV& operator=(const safe_VkLatencySurfaceCapabilitiesNV& copy_src); + safe_VkLatencySurfaceCapabilitiesNV(); + ~safe_VkLatencySurfaceCapabilitiesNV(); + void initialize(const VkLatencySurfaceCapabilitiesNV* in_struct, PNextCopyState* copy_state = {}); + void initialize(const safe_VkLatencySurfaceCapabilitiesNV* copy_src, PNextCopyState* copy_state = {}); + VkLatencySurfaceCapabilitiesNV* ptr() { return reinterpret_cast(this); } + VkLatencySurfaceCapabilitiesNV const* ptr() const { return reinterpret_cast(this); } +}; struct safe_VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM { VkStructureType sType; void* pNext{}; diff --git a/layers/vulkan/generated/vk_safe_struct_utils.cpp b/layers/vulkan/generated/vk_safe_struct_utils.cpp index acda73679d3..de05e0644b7 100644 --- a/layers/vulkan/generated/vk_safe_struct_utils.cpp +++ b/layers/vulkan/generated/vk_safe_struct_utils.cpp @@ -1668,6 +1668,21 @@ void *SafePnextCopy(const void *pNext, PNextCopyState* copy_state) { case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT: safe_pNext = new safe_VkPhysicalDevicePipelineProtectedAccessFeaturesEXT(reinterpret_cast(pNext), copy_state); break; +#ifdef VK_USE_PLATFORM_ANDROID_KHR + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID: + safe_pNext = new safe_VkPhysicalDeviceExternalFormatResolveFeaturesANDROID(reinterpret_cast(pNext), copy_state); + break; +#endif // VK_USE_PLATFORM_ANDROID_KHR +#ifdef VK_USE_PLATFORM_ANDROID_KHR + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID: + safe_pNext = new safe_VkPhysicalDeviceExternalFormatResolvePropertiesANDROID(reinterpret_cast(pNext), copy_state); + break; +#endif // VK_USE_PLATFORM_ANDROID_KHR +#ifdef VK_USE_PLATFORM_ANDROID_KHR + case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID: + safe_pNext = new safe_VkAndroidHardwareBufferFormatResolvePropertiesANDROID(reinterpret_cast(pNext), copy_state); + break; +#endif // VK_USE_PLATFORM_ANDROID_KHR case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT: safe_pNext = new safe_VkPhysicalDeviceShaderObjectFeaturesEXT(reinterpret_cast(pNext), copy_state); break; @@ -1704,6 +1719,15 @@ void *SafePnextCopy(const void *pNext, PNextCopyState* copy_state) { case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT: safe_pNext = new safe_VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT(reinterpret_cast(pNext), copy_state); break; + case VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV: + safe_pNext = new safe_VkLatencySubmissionPresentIdNV(reinterpret_cast(pNext), copy_state); + break; + case VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV: + safe_pNext = new safe_VkSwapchainLatencyCreateInfoNV(reinterpret_cast(pNext), copy_state); + break; + case VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV: + safe_pNext = new safe_VkLatencySurfaceCapabilitiesNV(reinterpret_cast(pNext), copy_state); + break; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM: safe_pNext = new safe_VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM(reinterpret_cast(pNext), copy_state); break; @@ -3434,6 +3458,21 @@ void FreePnextChain(const void *pNext) { case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT: delete reinterpret_cast(header); break; +#ifdef VK_USE_PLATFORM_ANDROID_KHR + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID: + delete reinterpret_cast(header); + break; +#endif // VK_USE_PLATFORM_ANDROID_KHR +#ifdef VK_USE_PLATFORM_ANDROID_KHR + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID: + delete reinterpret_cast(header); + break; +#endif // VK_USE_PLATFORM_ANDROID_KHR +#ifdef VK_USE_PLATFORM_ANDROID_KHR + case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID: + delete reinterpret_cast(header); + break; +#endif // VK_USE_PLATFORM_ANDROID_KHR case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT: delete reinterpret_cast(header); break; @@ -3470,6 +3509,15 @@ void FreePnextChain(const void *pNext) { case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT: delete reinterpret_cast(header); break; + case VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV: + delete reinterpret_cast(header); + break; + case VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV: + delete reinterpret_cast(header); + break; + case VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV: + delete reinterpret_cast(header); + break; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM: delete reinterpret_cast(header); break; diff --git a/layers/vulkan/generated/vk_safe_struct_vendor.cpp b/layers/vulkan/generated/vk_safe_struct_vendor.cpp index b564b1db64e..9c76280b215 100644 --- a/layers/vulkan/generated/vk_safe_struct_vendor.cpp +++ b/layers/vulkan/generated/vk_safe_struct_vendor.cpp @@ -11794,6 +11794,171 @@ void safe_VkOpticalFlowExecuteInfoNV::initialize(const safe_VkOpticalFlowExecute memcpy((void*)pRegions, (void*)copy_src->pRegions, sizeof(VkRect2D) * copy_src->regionCount); } } +#ifdef VK_USE_PLATFORM_ANDROID_KHR + +safe_VkPhysicalDeviceExternalFormatResolveFeaturesANDROID::safe_VkPhysicalDeviceExternalFormatResolveFeaturesANDROID( + const VkPhysicalDeviceExternalFormatResolveFeaturesANDROID* in_struct, [[maybe_unused]] PNextCopyState* copy_state) + : sType(in_struct->sType), externalFormatResolve(in_struct->externalFormatResolve) { + pNext = SafePnextCopy(in_struct->pNext, copy_state); +} + +safe_VkPhysicalDeviceExternalFormatResolveFeaturesANDROID::safe_VkPhysicalDeviceExternalFormatResolveFeaturesANDROID() + : sType(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID), pNext(nullptr), externalFormatResolve() {} + +safe_VkPhysicalDeviceExternalFormatResolveFeaturesANDROID::safe_VkPhysicalDeviceExternalFormatResolveFeaturesANDROID( + const safe_VkPhysicalDeviceExternalFormatResolveFeaturesANDROID& copy_src) { + sType = copy_src.sType; + externalFormatResolve = copy_src.externalFormatResolve; + pNext = SafePnextCopy(copy_src.pNext); +} + +safe_VkPhysicalDeviceExternalFormatResolveFeaturesANDROID& safe_VkPhysicalDeviceExternalFormatResolveFeaturesANDROID::operator=( + const safe_VkPhysicalDeviceExternalFormatResolveFeaturesANDROID& copy_src) { + if (©_src == this) return *this; + + if (pNext) FreePnextChain(pNext); + + sType = copy_src.sType; + externalFormatResolve = copy_src.externalFormatResolve; + pNext = SafePnextCopy(copy_src.pNext); + + return *this; +} + +safe_VkPhysicalDeviceExternalFormatResolveFeaturesANDROID::~safe_VkPhysicalDeviceExternalFormatResolveFeaturesANDROID() { + if (pNext) FreePnextChain(pNext); +} + +void safe_VkPhysicalDeviceExternalFormatResolveFeaturesANDROID::initialize( + const VkPhysicalDeviceExternalFormatResolveFeaturesANDROID* in_struct, [[maybe_unused]] PNextCopyState* copy_state) { + if (pNext) FreePnextChain(pNext); + sType = in_struct->sType; + externalFormatResolve = in_struct->externalFormatResolve; + pNext = SafePnextCopy(in_struct->pNext, copy_state); +} + +void safe_VkPhysicalDeviceExternalFormatResolveFeaturesANDROID::initialize( + const safe_VkPhysicalDeviceExternalFormatResolveFeaturesANDROID* copy_src, [[maybe_unused]] PNextCopyState* copy_state) { + sType = copy_src->sType; + externalFormatResolve = copy_src->externalFormatResolve; + pNext = SafePnextCopy(copy_src->pNext); +} +#endif // VK_USE_PLATFORM_ANDROID_KHR +#ifdef VK_USE_PLATFORM_ANDROID_KHR + +safe_VkPhysicalDeviceExternalFormatResolvePropertiesANDROID::safe_VkPhysicalDeviceExternalFormatResolvePropertiesANDROID( + const VkPhysicalDeviceExternalFormatResolvePropertiesANDROID* in_struct, [[maybe_unused]] PNextCopyState* copy_state) + : sType(in_struct->sType), + nullColorAttachmentWithExternalFormatResolve(in_struct->nullColorAttachmentWithExternalFormatResolve), + externalFormatResolveChromaOffsetX(in_struct->externalFormatResolveChromaOffsetX), + externalFormatResolveChromaOffsetY(in_struct->externalFormatResolveChromaOffsetY) { + pNext = SafePnextCopy(in_struct->pNext, copy_state); +} + +safe_VkPhysicalDeviceExternalFormatResolvePropertiesANDROID::safe_VkPhysicalDeviceExternalFormatResolvePropertiesANDROID() + : sType(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID), + pNext(nullptr), + nullColorAttachmentWithExternalFormatResolve(), + externalFormatResolveChromaOffsetX(), + externalFormatResolveChromaOffsetY() {} + +safe_VkPhysicalDeviceExternalFormatResolvePropertiesANDROID::safe_VkPhysicalDeviceExternalFormatResolvePropertiesANDROID( + const safe_VkPhysicalDeviceExternalFormatResolvePropertiesANDROID& copy_src) { + sType = copy_src.sType; + nullColorAttachmentWithExternalFormatResolve = copy_src.nullColorAttachmentWithExternalFormatResolve; + externalFormatResolveChromaOffsetX = copy_src.externalFormatResolveChromaOffsetX; + externalFormatResolveChromaOffsetY = copy_src.externalFormatResolveChromaOffsetY; + pNext = SafePnextCopy(copy_src.pNext); +} + +safe_VkPhysicalDeviceExternalFormatResolvePropertiesANDROID& safe_VkPhysicalDeviceExternalFormatResolvePropertiesANDROID::operator=( + const safe_VkPhysicalDeviceExternalFormatResolvePropertiesANDROID& copy_src) { + if (©_src == this) return *this; + + if (pNext) FreePnextChain(pNext); + + sType = copy_src.sType; + nullColorAttachmentWithExternalFormatResolve = copy_src.nullColorAttachmentWithExternalFormatResolve; + externalFormatResolveChromaOffsetX = copy_src.externalFormatResolveChromaOffsetX; + externalFormatResolveChromaOffsetY = copy_src.externalFormatResolveChromaOffsetY; + pNext = SafePnextCopy(copy_src.pNext); + + return *this; +} + +safe_VkPhysicalDeviceExternalFormatResolvePropertiesANDROID::~safe_VkPhysicalDeviceExternalFormatResolvePropertiesANDROID() { + if (pNext) FreePnextChain(pNext); +} + +void safe_VkPhysicalDeviceExternalFormatResolvePropertiesANDROID::initialize( + const VkPhysicalDeviceExternalFormatResolvePropertiesANDROID* in_struct, [[maybe_unused]] PNextCopyState* copy_state) { + if (pNext) FreePnextChain(pNext); + sType = in_struct->sType; + nullColorAttachmentWithExternalFormatResolve = in_struct->nullColorAttachmentWithExternalFormatResolve; + externalFormatResolveChromaOffsetX = in_struct->externalFormatResolveChromaOffsetX; + externalFormatResolveChromaOffsetY = in_struct->externalFormatResolveChromaOffsetY; + pNext = SafePnextCopy(in_struct->pNext, copy_state); +} + +void safe_VkPhysicalDeviceExternalFormatResolvePropertiesANDROID::initialize( + const safe_VkPhysicalDeviceExternalFormatResolvePropertiesANDROID* copy_src, [[maybe_unused]] PNextCopyState* copy_state) { + sType = copy_src->sType; + nullColorAttachmentWithExternalFormatResolve = copy_src->nullColorAttachmentWithExternalFormatResolve; + externalFormatResolveChromaOffsetX = copy_src->externalFormatResolveChromaOffsetX; + externalFormatResolveChromaOffsetY = copy_src->externalFormatResolveChromaOffsetY; + pNext = SafePnextCopy(copy_src->pNext); +} +#endif // VK_USE_PLATFORM_ANDROID_KHR +#ifdef VK_USE_PLATFORM_ANDROID_KHR + +safe_VkAndroidHardwareBufferFormatResolvePropertiesANDROID::safe_VkAndroidHardwareBufferFormatResolvePropertiesANDROID( + const VkAndroidHardwareBufferFormatResolvePropertiesANDROID* in_struct, [[maybe_unused]] PNextCopyState* copy_state) + : sType(in_struct->sType), colorAttachmentFormat(in_struct->colorAttachmentFormat) { + pNext = SafePnextCopy(in_struct->pNext, copy_state); +} + +safe_VkAndroidHardwareBufferFormatResolvePropertiesANDROID::safe_VkAndroidHardwareBufferFormatResolvePropertiesANDROID() + : sType(VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID), pNext(nullptr), colorAttachmentFormat() {} + +safe_VkAndroidHardwareBufferFormatResolvePropertiesANDROID::safe_VkAndroidHardwareBufferFormatResolvePropertiesANDROID( + const safe_VkAndroidHardwareBufferFormatResolvePropertiesANDROID& copy_src) { + sType = copy_src.sType; + colorAttachmentFormat = copy_src.colorAttachmentFormat; + pNext = SafePnextCopy(copy_src.pNext); +} + +safe_VkAndroidHardwareBufferFormatResolvePropertiesANDROID& safe_VkAndroidHardwareBufferFormatResolvePropertiesANDROID::operator=( + const safe_VkAndroidHardwareBufferFormatResolvePropertiesANDROID& copy_src) { + if (©_src == this) return *this; + + if (pNext) FreePnextChain(pNext); + + sType = copy_src.sType; + colorAttachmentFormat = copy_src.colorAttachmentFormat; + pNext = SafePnextCopy(copy_src.pNext); + + return *this; +} + +safe_VkAndroidHardwareBufferFormatResolvePropertiesANDROID::~safe_VkAndroidHardwareBufferFormatResolvePropertiesANDROID() { + if (pNext) FreePnextChain(pNext); +} + +void safe_VkAndroidHardwareBufferFormatResolvePropertiesANDROID::initialize( + const VkAndroidHardwareBufferFormatResolvePropertiesANDROID* in_struct, [[maybe_unused]] PNextCopyState* copy_state) { + if (pNext) FreePnextChain(pNext); + sType = in_struct->sType; + colorAttachmentFormat = in_struct->colorAttachmentFormat; + pNext = SafePnextCopy(in_struct->pNext, copy_state); +} + +void safe_VkAndroidHardwareBufferFormatResolvePropertiesANDROID::initialize( + const safe_VkAndroidHardwareBufferFormatResolvePropertiesANDROID* copy_src, [[maybe_unused]] PNextCopyState* copy_state) { + sType = copy_src->sType; + colorAttachmentFormat = copy_src->colorAttachmentFormat; + pNext = SafePnextCopy(copy_src->pNext); +} +#endif // VK_USE_PLATFORM_ANDROID_KHR safe_VkPhysicalDeviceTilePropertiesFeaturesQCOM::safe_VkPhysicalDeviceTilePropertiesFeaturesQCOM( const VkPhysicalDeviceTilePropertiesFeaturesQCOM* in_struct, [[maybe_unused]] PNextCopyState* copy_state) @@ -12258,6 +12423,566 @@ void safe_VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM::initialize( pNext = SafePnextCopy(copy_src->pNext); } +safe_VkLatencySleepModeInfoNV::safe_VkLatencySleepModeInfoNV(const VkLatencySleepModeInfoNV* in_struct, + [[maybe_unused]] PNextCopyState* copy_state) + : sType(in_struct->sType), + lowLatencyMode(in_struct->lowLatencyMode), + lowLatencyBoost(in_struct->lowLatencyBoost), + minimumIntervalUs(in_struct->minimumIntervalUs) { + pNext = SafePnextCopy(in_struct->pNext, copy_state); +} + +safe_VkLatencySleepModeInfoNV::safe_VkLatencySleepModeInfoNV() + : sType(VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV), + pNext(nullptr), + lowLatencyMode(), + lowLatencyBoost(), + minimumIntervalUs() {} + +safe_VkLatencySleepModeInfoNV::safe_VkLatencySleepModeInfoNV(const safe_VkLatencySleepModeInfoNV& copy_src) { + sType = copy_src.sType; + lowLatencyMode = copy_src.lowLatencyMode; + lowLatencyBoost = copy_src.lowLatencyBoost; + minimumIntervalUs = copy_src.minimumIntervalUs; + pNext = SafePnextCopy(copy_src.pNext); +} + +safe_VkLatencySleepModeInfoNV& safe_VkLatencySleepModeInfoNV::operator=(const safe_VkLatencySleepModeInfoNV& copy_src) { + if (©_src == this) return *this; + + if (pNext) FreePnextChain(pNext); + + sType = copy_src.sType; + lowLatencyMode = copy_src.lowLatencyMode; + lowLatencyBoost = copy_src.lowLatencyBoost; + minimumIntervalUs = copy_src.minimumIntervalUs; + pNext = SafePnextCopy(copy_src.pNext); + + return *this; +} + +safe_VkLatencySleepModeInfoNV::~safe_VkLatencySleepModeInfoNV() { + if (pNext) FreePnextChain(pNext); +} + +void safe_VkLatencySleepModeInfoNV::initialize(const VkLatencySleepModeInfoNV* in_struct, + [[maybe_unused]] PNextCopyState* copy_state) { + if (pNext) FreePnextChain(pNext); + sType = in_struct->sType; + lowLatencyMode = in_struct->lowLatencyMode; + lowLatencyBoost = in_struct->lowLatencyBoost; + minimumIntervalUs = in_struct->minimumIntervalUs; + pNext = SafePnextCopy(in_struct->pNext, copy_state); +} + +void safe_VkLatencySleepModeInfoNV::initialize(const safe_VkLatencySleepModeInfoNV* copy_src, + [[maybe_unused]] PNextCopyState* copy_state) { + sType = copy_src->sType; + lowLatencyMode = copy_src->lowLatencyMode; + lowLatencyBoost = copy_src->lowLatencyBoost; + minimumIntervalUs = copy_src->minimumIntervalUs; + pNext = SafePnextCopy(copy_src->pNext); +} + +safe_VkLatencySleepInfoNV::safe_VkLatencySleepInfoNV(const VkLatencySleepInfoNV* in_struct, + [[maybe_unused]] PNextCopyState* copy_state) + : sType(in_struct->sType), signalSemaphore(in_struct->signalSemaphore), value(in_struct->value) { + pNext = SafePnextCopy(in_struct->pNext, copy_state); +} + +safe_VkLatencySleepInfoNV::safe_VkLatencySleepInfoNV() + : sType(VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV), pNext(nullptr), signalSemaphore(), value() {} + +safe_VkLatencySleepInfoNV::safe_VkLatencySleepInfoNV(const safe_VkLatencySleepInfoNV& copy_src) { + sType = copy_src.sType; + signalSemaphore = copy_src.signalSemaphore; + value = copy_src.value; + pNext = SafePnextCopy(copy_src.pNext); +} + +safe_VkLatencySleepInfoNV& safe_VkLatencySleepInfoNV::operator=(const safe_VkLatencySleepInfoNV& copy_src) { + if (©_src == this) return *this; + + if (pNext) FreePnextChain(pNext); + + sType = copy_src.sType; + signalSemaphore = copy_src.signalSemaphore; + value = copy_src.value; + pNext = SafePnextCopy(copy_src.pNext); + + return *this; +} + +safe_VkLatencySleepInfoNV::~safe_VkLatencySleepInfoNV() { + if (pNext) FreePnextChain(pNext); +} + +void safe_VkLatencySleepInfoNV::initialize(const VkLatencySleepInfoNV* in_struct, [[maybe_unused]] PNextCopyState* copy_state) { + if (pNext) FreePnextChain(pNext); + sType = in_struct->sType; + signalSemaphore = in_struct->signalSemaphore; + value = in_struct->value; + pNext = SafePnextCopy(in_struct->pNext, copy_state); +} + +void safe_VkLatencySleepInfoNV::initialize(const safe_VkLatencySleepInfoNV* copy_src, [[maybe_unused]] PNextCopyState* copy_state) { + sType = copy_src->sType; + signalSemaphore = copy_src->signalSemaphore; + value = copy_src->value; + pNext = SafePnextCopy(copy_src->pNext); +} + +safe_VkSetLatencyMarkerInfoNV::safe_VkSetLatencyMarkerInfoNV(const VkSetLatencyMarkerInfoNV* in_struct, + [[maybe_unused]] PNextCopyState* copy_state) + : sType(in_struct->sType), presentID(in_struct->presentID), marker(in_struct->marker) { + pNext = SafePnextCopy(in_struct->pNext, copy_state); +} + +safe_VkSetLatencyMarkerInfoNV::safe_VkSetLatencyMarkerInfoNV() + : sType(VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV), pNext(nullptr), presentID(), marker() {} + +safe_VkSetLatencyMarkerInfoNV::safe_VkSetLatencyMarkerInfoNV(const safe_VkSetLatencyMarkerInfoNV& copy_src) { + sType = copy_src.sType; + presentID = copy_src.presentID; + marker = copy_src.marker; + pNext = SafePnextCopy(copy_src.pNext); +} + +safe_VkSetLatencyMarkerInfoNV& safe_VkSetLatencyMarkerInfoNV::operator=(const safe_VkSetLatencyMarkerInfoNV& copy_src) { + if (©_src == this) return *this; + + if (pNext) FreePnextChain(pNext); + + sType = copy_src.sType; + presentID = copy_src.presentID; + marker = copy_src.marker; + pNext = SafePnextCopy(copy_src.pNext); + + return *this; +} + +safe_VkSetLatencyMarkerInfoNV::~safe_VkSetLatencyMarkerInfoNV() { + if (pNext) FreePnextChain(pNext); +} + +void safe_VkSetLatencyMarkerInfoNV::initialize(const VkSetLatencyMarkerInfoNV* in_struct, + [[maybe_unused]] PNextCopyState* copy_state) { + if (pNext) FreePnextChain(pNext); + sType = in_struct->sType; + presentID = in_struct->presentID; + marker = in_struct->marker; + pNext = SafePnextCopy(in_struct->pNext, copy_state); +} + +void safe_VkSetLatencyMarkerInfoNV::initialize(const safe_VkSetLatencyMarkerInfoNV* copy_src, + [[maybe_unused]] PNextCopyState* copy_state) { + sType = copy_src->sType; + presentID = copy_src->presentID; + marker = copy_src->marker; + pNext = SafePnextCopy(copy_src->pNext); +} + +safe_VkLatencyTimingsFrameReportNV::safe_VkLatencyTimingsFrameReportNV(const VkLatencyTimingsFrameReportNV* in_struct, + [[maybe_unused]] PNextCopyState* copy_state) + : sType(in_struct->sType), + presentID(in_struct->presentID), + inputSampleTimeUs(in_struct->inputSampleTimeUs), + simStartTimeUs(in_struct->simStartTimeUs), + simEndTimeUs(in_struct->simEndTimeUs), + renderSubmitStartTimeUs(in_struct->renderSubmitStartTimeUs), + renderSubmitEndTimeUs(in_struct->renderSubmitEndTimeUs), + presentStartTimeUs(in_struct->presentStartTimeUs), + presentEndTimeUs(in_struct->presentEndTimeUs), + driverStartTimeUs(in_struct->driverStartTimeUs), + driverEndTimeUs(in_struct->driverEndTimeUs), + osRenderQueueStartTimeUs(in_struct->osRenderQueueStartTimeUs), + osRenderQueueEndTimeUs(in_struct->osRenderQueueEndTimeUs), + gpuRenderStartTimeUs(in_struct->gpuRenderStartTimeUs), + gpuRenderEndTimeUs(in_struct->gpuRenderEndTimeUs) { + pNext = SafePnextCopy(in_struct->pNext, copy_state); +} + +safe_VkLatencyTimingsFrameReportNV::safe_VkLatencyTimingsFrameReportNV() + : sType(VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV), + pNext(nullptr), + presentID(), + inputSampleTimeUs(), + simStartTimeUs(), + simEndTimeUs(), + renderSubmitStartTimeUs(), + renderSubmitEndTimeUs(), + presentStartTimeUs(), + presentEndTimeUs(), + driverStartTimeUs(), + driverEndTimeUs(), + osRenderQueueStartTimeUs(), + osRenderQueueEndTimeUs(), + gpuRenderStartTimeUs(), + gpuRenderEndTimeUs() {} + +safe_VkLatencyTimingsFrameReportNV::safe_VkLatencyTimingsFrameReportNV(const safe_VkLatencyTimingsFrameReportNV& copy_src) { + sType = copy_src.sType; + presentID = copy_src.presentID; + inputSampleTimeUs = copy_src.inputSampleTimeUs; + simStartTimeUs = copy_src.simStartTimeUs; + simEndTimeUs = copy_src.simEndTimeUs; + renderSubmitStartTimeUs = copy_src.renderSubmitStartTimeUs; + renderSubmitEndTimeUs = copy_src.renderSubmitEndTimeUs; + presentStartTimeUs = copy_src.presentStartTimeUs; + presentEndTimeUs = copy_src.presentEndTimeUs; + driverStartTimeUs = copy_src.driverStartTimeUs; + driverEndTimeUs = copy_src.driverEndTimeUs; + osRenderQueueStartTimeUs = copy_src.osRenderQueueStartTimeUs; + osRenderQueueEndTimeUs = copy_src.osRenderQueueEndTimeUs; + gpuRenderStartTimeUs = copy_src.gpuRenderStartTimeUs; + gpuRenderEndTimeUs = copy_src.gpuRenderEndTimeUs; + pNext = SafePnextCopy(copy_src.pNext); +} + +safe_VkLatencyTimingsFrameReportNV& safe_VkLatencyTimingsFrameReportNV::operator=( + const safe_VkLatencyTimingsFrameReportNV& copy_src) { + if (©_src == this) return *this; + + if (pNext) FreePnextChain(pNext); + + sType = copy_src.sType; + presentID = copy_src.presentID; + inputSampleTimeUs = copy_src.inputSampleTimeUs; + simStartTimeUs = copy_src.simStartTimeUs; + simEndTimeUs = copy_src.simEndTimeUs; + renderSubmitStartTimeUs = copy_src.renderSubmitStartTimeUs; + renderSubmitEndTimeUs = copy_src.renderSubmitEndTimeUs; + presentStartTimeUs = copy_src.presentStartTimeUs; + presentEndTimeUs = copy_src.presentEndTimeUs; + driverStartTimeUs = copy_src.driverStartTimeUs; + driverEndTimeUs = copy_src.driverEndTimeUs; + osRenderQueueStartTimeUs = copy_src.osRenderQueueStartTimeUs; + osRenderQueueEndTimeUs = copy_src.osRenderQueueEndTimeUs; + gpuRenderStartTimeUs = copy_src.gpuRenderStartTimeUs; + gpuRenderEndTimeUs = copy_src.gpuRenderEndTimeUs; + pNext = SafePnextCopy(copy_src.pNext); + + return *this; +} + +safe_VkLatencyTimingsFrameReportNV::~safe_VkLatencyTimingsFrameReportNV() { + if (pNext) FreePnextChain(pNext); +} + +void safe_VkLatencyTimingsFrameReportNV::initialize(const VkLatencyTimingsFrameReportNV* in_struct, + [[maybe_unused]] PNextCopyState* copy_state) { + if (pNext) FreePnextChain(pNext); + sType = in_struct->sType; + presentID = in_struct->presentID; + inputSampleTimeUs = in_struct->inputSampleTimeUs; + simStartTimeUs = in_struct->simStartTimeUs; + simEndTimeUs = in_struct->simEndTimeUs; + renderSubmitStartTimeUs = in_struct->renderSubmitStartTimeUs; + renderSubmitEndTimeUs = in_struct->renderSubmitEndTimeUs; + presentStartTimeUs = in_struct->presentStartTimeUs; + presentEndTimeUs = in_struct->presentEndTimeUs; + driverStartTimeUs = in_struct->driverStartTimeUs; + driverEndTimeUs = in_struct->driverEndTimeUs; + osRenderQueueStartTimeUs = in_struct->osRenderQueueStartTimeUs; + osRenderQueueEndTimeUs = in_struct->osRenderQueueEndTimeUs; + gpuRenderStartTimeUs = in_struct->gpuRenderStartTimeUs; + gpuRenderEndTimeUs = in_struct->gpuRenderEndTimeUs; + pNext = SafePnextCopy(in_struct->pNext, copy_state); +} + +void safe_VkLatencyTimingsFrameReportNV::initialize(const safe_VkLatencyTimingsFrameReportNV* copy_src, + [[maybe_unused]] PNextCopyState* copy_state) { + sType = copy_src->sType; + presentID = copy_src->presentID; + inputSampleTimeUs = copy_src->inputSampleTimeUs; + simStartTimeUs = copy_src->simStartTimeUs; + simEndTimeUs = copy_src->simEndTimeUs; + renderSubmitStartTimeUs = copy_src->renderSubmitStartTimeUs; + renderSubmitEndTimeUs = copy_src->renderSubmitEndTimeUs; + presentStartTimeUs = copy_src->presentStartTimeUs; + presentEndTimeUs = copy_src->presentEndTimeUs; + driverStartTimeUs = copy_src->driverStartTimeUs; + driverEndTimeUs = copy_src->driverEndTimeUs; + osRenderQueueStartTimeUs = copy_src->osRenderQueueStartTimeUs; + osRenderQueueEndTimeUs = copy_src->osRenderQueueEndTimeUs; + gpuRenderStartTimeUs = copy_src->gpuRenderStartTimeUs; + gpuRenderEndTimeUs = copy_src->gpuRenderEndTimeUs; + pNext = SafePnextCopy(copy_src->pNext); +} + +safe_VkGetLatencyMarkerInfoNV::safe_VkGetLatencyMarkerInfoNV(const VkGetLatencyMarkerInfoNV* in_struct, + [[maybe_unused]] PNextCopyState* copy_state) + : sType(in_struct->sType), pTimings(nullptr) { + pNext = SafePnextCopy(in_struct->pNext, copy_state); + if (in_struct->pTimings) pTimings = new safe_VkLatencyTimingsFrameReportNV(in_struct->pTimings); +} + +safe_VkGetLatencyMarkerInfoNV::safe_VkGetLatencyMarkerInfoNV() + : sType(VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV), pNext(nullptr), pTimings(nullptr) {} + +safe_VkGetLatencyMarkerInfoNV::safe_VkGetLatencyMarkerInfoNV(const safe_VkGetLatencyMarkerInfoNV& copy_src) { + sType = copy_src.sType; + pTimings = nullptr; + pNext = SafePnextCopy(copy_src.pNext); + if (copy_src.pTimings) pTimings = new safe_VkLatencyTimingsFrameReportNV(*copy_src.pTimings); +} + +safe_VkGetLatencyMarkerInfoNV& safe_VkGetLatencyMarkerInfoNV::operator=(const safe_VkGetLatencyMarkerInfoNV& copy_src) { + if (©_src == this) return *this; + + if (pTimings) delete pTimings; + if (pNext) FreePnextChain(pNext); + + sType = copy_src.sType; + pTimings = nullptr; + pNext = SafePnextCopy(copy_src.pNext); + if (copy_src.pTimings) pTimings = new safe_VkLatencyTimingsFrameReportNV(*copy_src.pTimings); + + return *this; +} + +safe_VkGetLatencyMarkerInfoNV::~safe_VkGetLatencyMarkerInfoNV() { + if (pTimings) delete pTimings; + if (pNext) FreePnextChain(pNext); +} + +void safe_VkGetLatencyMarkerInfoNV::initialize(const VkGetLatencyMarkerInfoNV* in_struct, + [[maybe_unused]] PNextCopyState* copy_state) { + if (pTimings) delete pTimings; + if (pNext) FreePnextChain(pNext); + sType = in_struct->sType; + pTimings = nullptr; + pNext = SafePnextCopy(in_struct->pNext, copy_state); + if (in_struct->pTimings) pTimings = new safe_VkLatencyTimingsFrameReportNV(in_struct->pTimings); +} + +void safe_VkGetLatencyMarkerInfoNV::initialize(const safe_VkGetLatencyMarkerInfoNV* copy_src, + [[maybe_unused]] PNextCopyState* copy_state) { + sType = copy_src->sType; + pTimings = nullptr; + pNext = SafePnextCopy(copy_src->pNext); + if (copy_src->pTimings) pTimings = new safe_VkLatencyTimingsFrameReportNV(*copy_src->pTimings); +} + +safe_VkLatencySubmissionPresentIdNV::safe_VkLatencySubmissionPresentIdNV(const VkLatencySubmissionPresentIdNV* in_struct, + [[maybe_unused]] PNextCopyState* copy_state) + : sType(in_struct->sType), presentID(in_struct->presentID) { + pNext = SafePnextCopy(in_struct->pNext, copy_state); +} + +safe_VkLatencySubmissionPresentIdNV::safe_VkLatencySubmissionPresentIdNV() + : sType(VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV), pNext(nullptr), presentID() {} + +safe_VkLatencySubmissionPresentIdNV::safe_VkLatencySubmissionPresentIdNV(const safe_VkLatencySubmissionPresentIdNV& copy_src) { + sType = copy_src.sType; + presentID = copy_src.presentID; + pNext = SafePnextCopy(copy_src.pNext); +} + +safe_VkLatencySubmissionPresentIdNV& safe_VkLatencySubmissionPresentIdNV::operator=( + const safe_VkLatencySubmissionPresentIdNV& copy_src) { + if (©_src == this) return *this; + + if (pNext) FreePnextChain(pNext); + + sType = copy_src.sType; + presentID = copy_src.presentID; + pNext = SafePnextCopy(copy_src.pNext); + + return *this; +} + +safe_VkLatencySubmissionPresentIdNV::~safe_VkLatencySubmissionPresentIdNV() { + if (pNext) FreePnextChain(pNext); +} + +void safe_VkLatencySubmissionPresentIdNV::initialize(const VkLatencySubmissionPresentIdNV* in_struct, + [[maybe_unused]] PNextCopyState* copy_state) { + if (pNext) FreePnextChain(pNext); + sType = in_struct->sType; + presentID = in_struct->presentID; + pNext = SafePnextCopy(in_struct->pNext, copy_state); +} + +void safe_VkLatencySubmissionPresentIdNV::initialize(const safe_VkLatencySubmissionPresentIdNV* copy_src, + [[maybe_unused]] PNextCopyState* copy_state) { + sType = copy_src->sType; + presentID = copy_src->presentID; + pNext = SafePnextCopy(copy_src->pNext); +} + +safe_VkSwapchainLatencyCreateInfoNV::safe_VkSwapchainLatencyCreateInfoNV(const VkSwapchainLatencyCreateInfoNV* in_struct, + [[maybe_unused]] PNextCopyState* copy_state) + : sType(in_struct->sType), latencyModeEnable(in_struct->latencyModeEnable) { + pNext = SafePnextCopy(in_struct->pNext, copy_state); +} + +safe_VkSwapchainLatencyCreateInfoNV::safe_VkSwapchainLatencyCreateInfoNV() + : sType(VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV), pNext(nullptr), latencyModeEnable() {} + +safe_VkSwapchainLatencyCreateInfoNV::safe_VkSwapchainLatencyCreateInfoNV(const safe_VkSwapchainLatencyCreateInfoNV& copy_src) { + sType = copy_src.sType; + latencyModeEnable = copy_src.latencyModeEnable; + pNext = SafePnextCopy(copy_src.pNext); +} + +safe_VkSwapchainLatencyCreateInfoNV& safe_VkSwapchainLatencyCreateInfoNV::operator=( + const safe_VkSwapchainLatencyCreateInfoNV& copy_src) { + if (©_src == this) return *this; + + if (pNext) FreePnextChain(pNext); + + sType = copy_src.sType; + latencyModeEnable = copy_src.latencyModeEnable; + pNext = SafePnextCopy(copy_src.pNext); + + return *this; +} + +safe_VkSwapchainLatencyCreateInfoNV::~safe_VkSwapchainLatencyCreateInfoNV() { + if (pNext) FreePnextChain(pNext); +} + +void safe_VkSwapchainLatencyCreateInfoNV::initialize(const VkSwapchainLatencyCreateInfoNV* in_struct, + [[maybe_unused]] PNextCopyState* copy_state) { + if (pNext) FreePnextChain(pNext); + sType = in_struct->sType; + latencyModeEnable = in_struct->latencyModeEnable; + pNext = SafePnextCopy(in_struct->pNext, copy_state); +} + +void safe_VkSwapchainLatencyCreateInfoNV::initialize(const safe_VkSwapchainLatencyCreateInfoNV* copy_src, + [[maybe_unused]] PNextCopyState* copy_state) { + sType = copy_src->sType; + latencyModeEnable = copy_src->latencyModeEnable; + pNext = SafePnextCopy(copy_src->pNext); +} + +safe_VkOutOfBandQueueTypeInfoNV::safe_VkOutOfBandQueueTypeInfoNV(const VkOutOfBandQueueTypeInfoNV* in_struct, + [[maybe_unused]] PNextCopyState* copy_state) + : sType(in_struct->sType), queueType(in_struct->queueType) { + pNext = SafePnextCopy(in_struct->pNext, copy_state); +} + +safe_VkOutOfBandQueueTypeInfoNV::safe_VkOutOfBandQueueTypeInfoNV() + : sType(VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV), pNext(nullptr), queueType() {} + +safe_VkOutOfBandQueueTypeInfoNV::safe_VkOutOfBandQueueTypeInfoNV(const safe_VkOutOfBandQueueTypeInfoNV& copy_src) { + sType = copy_src.sType; + queueType = copy_src.queueType; + pNext = SafePnextCopy(copy_src.pNext); +} + +safe_VkOutOfBandQueueTypeInfoNV& safe_VkOutOfBandQueueTypeInfoNV::operator=(const safe_VkOutOfBandQueueTypeInfoNV& copy_src) { + if (©_src == this) return *this; + + if (pNext) FreePnextChain(pNext); + + sType = copy_src.sType; + queueType = copy_src.queueType; + pNext = SafePnextCopy(copy_src.pNext); + + return *this; +} + +safe_VkOutOfBandQueueTypeInfoNV::~safe_VkOutOfBandQueueTypeInfoNV() { + if (pNext) FreePnextChain(pNext); +} + +void safe_VkOutOfBandQueueTypeInfoNV::initialize(const VkOutOfBandQueueTypeInfoNV* in_struct, + [[maybe_unused]] PNextCopyState* copy_state) { + if (pNext) FreePnextChain(pNext); + sType = in_struct->sType; + queueType = in_struct->queueType; + pNext = SafePnextCopy(in_struct->pNext, copy_state); +} + +void safe_VkOutOfBandQueueTypeInfoNV::initialize(const safe_VkOutOfBandQueueTypeInfoNV* copy_src, + [[maybe_unused]] PNextCopyState* copy_state) { + sType = copy_src->sType; + queueType = copy_src->queueType; + pNext = SafePnextCopy(copy_src->pNext); +} + +safe_VkLatencySurfaceCapabilitiesNV::safe_VkLatencySurfaceCapabilitiesNV(const VkLatencySurfaceCapabilitiesNV* in_struct, + [[maybe_unused]] PNextCopyState* copy_state) + : sType(in_struct->sType), presentModeCount(in_struct->presentModeCount), pPresentModes(nullptr) { + pNext = SafePnextCopy(in_struct->pNext, copy_state); + + if (in_struct->pPresentModes) { + pPresentModes = new VkPresentModeKHR[in_struct->presentModeCount]; + memcpy((void*)pPresentModes, (void*)in_struct->pPresentModes, sizeof(VkPresentModeKHR) * in_struct->presentModeCount); + } +} + +safe_VkLatencySurfaceCapabilitiesNV::safe_VkLatencySurfaceCapabilitiesNV() + : sType(VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV), pNext(nullptr), presentModeCount(), pPresentModes(nullptr) {} + +safe_VkLatencySurfaceCapabilitiesNV::safe_VkLatencySurfaceCapabilitiesNV(const safe_VkLatencySurfaceCapabilitiesNV& copy_src) { + sType = copy_src.sType; + presentModeCount = copy_src.presentModeCount; + pPresentModes = nullptr; + pNext = SafePnextCopy(copy_src.pNext); + + if (copy_src.pPresentModes) { + pPresentModes = new VkPresentModeKHR[copy_src.presentModeCount]; + memcpy((void*)pPresentModes, (void*)copy_src.pPresentModes, sizeof(VkPresentModeKHR) * copy_src.presentModeCount); + } +} + +safe_VkLatencySurfaceCapabilitiesNV& safe_VkLatencySurfaceCapabilitiesNV::operator=( + const safe_VkLatencySurfaceCapabilitiesNV& copy_src) { + if (©_src == this) return *this; + + if (pPresentModes) delete[] pPresentModes; + if (pNext) FreePnextChain(pNext); + + sType = copy_src.sType; + presentModeCount = copy_src.presentModeCount; + pPresentModes = nullptr; + pNext = SafePnextCopy(copy_src.pNext); + + if (copy_src.pPresentModes) { + pPresentModes = new VkPresentModeKHR[copy_src.presentModeCount]; + memcpy((void*)pPresentModes, (void*)copy_src.pPresentModes, sizeof(VkPresentModeKHR) * copy_src.presentModeCount); + } + + return *this; +} + +safe_VkLatencySurfaceCapabilitiesNV::~safe_VkLatencySurfaceCapabilitiesNV() { + if (pPresentModes) delete[] pPresentModes; + if (pNext) FreePnextChain(pNext); +} + +void safe_VkLatencySurfaceCapabilitiesNV::initialize(const VkLatencySurfaceCapabilitiesNV* in_struct, + [[maybe_unused]] PNextCopyState* copy_state) { + if (pPresentModes) delete[] pPresentModes; + if (pNext) FreePnextChain(pNext); + sType = in_struct->sType; + presentModeCount = in_struct->presentModeCount; + pPresentModes = nullptr; + pNext = SafePnextCopy(in_struct->pNext, copy_state); + + if (in_struct->pPresentModes) { + pPresentModes = new VkPresentModeKHR[in_struct->presentModeCount]; + memcpy((void*)pPresentModes, (void*)in_struct->pPresentModes, sizeof(VkPresentModeKHR) * in_struct->presentModeCount); + } +} + +void safe_VkLatencySurfaceCapabilitiesNV::initialize(const safe_VkLatencySurfaceCapabilitiesNV* copy_src, + [[maybe_unused]] PNextCopyState* copy_state) { + sType = copy_src->sType; + presentModeCount = copy_src->presentModeCount; + pPresentModes = nullptr; + pNext = SafePnextCopy(copy_src->pNext); + + if (copy_src->pPresentModes) { + pPresentModes = new VkPresentModeKHR[copy_src->presentModeCount]; + memcpy((void*)pPresentModes, (void*)copy_src->pPresentModes, sizeof(VkPresentModeKHR) * copy_src->presentModeCount); + } +} + safe_VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM::safe_VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM( const VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM* in_struct, [[maybe_unused]] PNextCopyState* copy_state) : sType(in_struct->sType), multiviewPerViewRenderAreas(in_struct->multiviewPerViewRenderAreas) { diff --git a/layers/vulkan/generated/vk_validation_error_messages.h b/layers/vulkan/generated/vk_validation_error_messages.h index c4dc0c42845..44e523bac26 100644 --- a/layers/vulkan/generated/vk_validation_error_messages.h +++ b/layers/vulkan/generated/vk_validation_error_messages.h @@ -1,5 +1,5 @@ /* THIS FILE IS GENERATED - DO NOT EDIT (scripts/vk_validation_stats.py) */ -/* Vulkan specification version: 1.3.265 */ +/* Vulkan specification version: 1.3.266 */ /* * Vulkan * @@ -574,7 +574,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-StandaloneSpirv-LocalSize-06426", "For each compute shader entry point, either a LocalSize or LocalSizeId Execution Mode, or an object decorated with the WorkgroupSize decoration must be specified", "1.3-extensions"}, {"VUID-StandaloneSpirv-Location-04915", "The Location or Component decorations must not be used with BuiltIn", "1.3-extensions"}, {"VUID-StandaloneSpirv-Location-04916", "The Location decorations must be used on user-defined variables", "1.3-extensions"}, - {"VUID-StandaloneSpirv-Location-04917", "If a user-defined variable is a pointer to a Block decorated OpTypeStruct, then the OpVariable must have a Location decoration", "1.3-extensions"}, + {"VUID-StandaloneSpirv-Location-04917", "If a user-defined variable is not a pointer to a Block decorated OpTypeStruct, then the OpVariable must have a Location decoration", "1.3-extensions"}, {"VUID-StandaloneSpirv-Location-04918", "If a user-defined variable has a Location decoration, and the variable is a pointer to a OpTypeStruct, then the members of that structure must not have Location decorations", "1.3-extensions"}, {"VUID-StandaloneSpirv-Location-04919", "If a user-defined variable does not have a Location decoration, and the variable is a pointer to a Block decorated OpTypeStruct, then each member of the struct must have a Location decoration", "1.3-extensions"}, {"VUID-StandaloneSpirv-Location-06672", "The Location or Component decorations must only be used with the Input, Output, RayPayloadKHR, IncomingRayPayloadKHR, HitAttributeKHR, HitObjectAttributeNV, CallableDataKHR, IncomingCallableDataKHR, or ShaderRecordBufferKHR storage classes", "1.3-extensions"}, @@ -880,7 +880,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkAmigoProfilingSubmitInfoSEC-sType-sType", "sType must be VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC", "1.3-extensions"}, {"VUID-VkAndroidHardwareBufferFormatProperties2ANDROID-sType-sType", "sType must be VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID", "1.3-extensions"}, {"VUID-VkAndroidHardwareBufferFormatPropertiesANDROID-sType-sType", "sType must be VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID", "1.3-extensions"}, - {"VUID-VkAndroidHardwareBufferPropertiesANDROID-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 VkAndroidHardwareBufferFormatProperties2ANDROID or VkAndroidHardwareBufferFormatPropertiesANDROID", "1.3-extensions"}, + {"VUID-VkAndroidHardwareBufferFormatResolvePropertiesANDROID-sType-sType", "sType must be VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID", "1.3-extensions"}, + {"VUID-VkAndroidHardwareBufferPropertiesANDROID-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 VkAndroidHardwareBufferFormatProperties2ANDROID, VkAndroidHardwareBufferFormatPropertiesANDROID, or VkAndroidHardwareBufferFormatResolvePropertiesANDROID", "1.3-extensions"}, {"VUID-VkAndroidHardwareBufferPropertiesANDROID-sType-sType", "sType must be VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID", "1.3-extensions"}, {"VUID-VkAndroidHardwareBufferPropertiesANDROID-sType-unique", "The sType value of each struct in the pNext chain must be unique", "1.3-extensions"}, {"VUID-VkAndroidHardwareBufferUsageANDROID-sType-sType", "sType must be VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID", "1.3-extensions"}, @@ -931,6 +932,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkAttachmentDescription-synchronization2-06909", "If the synchronization2 feature is not enabled, finalLayout must not be VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR or VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR", "1.3-extensions"}, {"VUID-VkAttachmentDescription2-attachmentFeedbackLoopLayout-07309", "If the attachmentFeedbackLoopLayout feature is not enabled, initialLayout must not be VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT", "1.3-extensions"}, {"VUID-VkAttachmentDescription2-attachmentFeedbackLoopLayout-07310", "If the attachmentFeedbackLoopLayout feature is not enabled, finalLayout must not be VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT", "1.3-extensions"}, + {"VUID-VkAttachmentDescription2-externalFormatResolve-09333", "If externalFormatResolve is not enabled, format must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, {"VUID-VkAttachmentDescription2-finalLayout-00843", "finalLayout must not be VK_IMAGE_LAYOUT_UNDEFINED or VK_IMAGE_LAYOUT_PREINITIALIZED", "1.3-extensions"}, {"VUID-VkAttachmentDescription2-finalLayout-parameter", "finalLayout must be a valid VkImageLayout value", "1.3-extensions"}, {"VUID-VkAttachmentDescription2-flags-parameter", "flags must be a valid combination of VkAttachmentDescriptionFlagBits values", "1.3-extensions"}, @@ -948,16 +950,16 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkAttachmentDescription2-format-06250", "If format is a depth/stencil format which includes both depth and stencil components, and finalLayout is VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL, the pNext chain must include a VkAttachmentDescriptionStencilLayout structure", "1.3-extensions"}, {"VUID-VkAttachmentDescription2-format-06487", "If format is a color format, initialLayout must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL", "1.3-extensions"}, {"VUID-VkAttachmentDescription2-format-06488", "If format is a color format, finalLayout must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL", "1.3-extensions"}, - {"VUID-VkAttachmentDescription2-format-06698", "format must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, {"VUID-VkAttachmentDescription2-format-06699", "If format includes a color or depth component and loadOp is VK_ATTACHMENT_LOAD_OP_LOAD, then initialLayout must not be VK_IMAGE_LAYOUT_UNDEFINED", "1.3-extensions"}, {"VUID-VkAttachmentDescription2-format-06906", "If format is a depth/stencil format which includes both depth and stencil components, initialLayout must not be VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL", "1.3-extensions"}, {"VUID-VkAttachmentDescription2-format-06907", "If format is a depth/stencil format which includes both depth and stencil components, finalLayout must not be VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL", "1.3-extensions"}, + {"VUID-VkAttachmentDescription2-format-09334", "If format is VK_FORMAT_UNDEFINED, there must be a VkExternalFormatANDROID structure in the pNext chain with a externalFormat that is not equal to 0", "1.3-extensions"}, {"VUID-VkAttachmentDescription2-format-parameter", "format must be a valid VkFormat value", "1.3-extensions"}, {"VUID-VkAttachmentDescription2-initialLayout-parameter", "initialLayout must be a valid VkImageLayout value", "1.3-extensions"}, {"VUID-VkAttachmentDescription2-loadOp-parameter", "loadOp must be a valid VkAttachmentLoadOp value", "1.3-extensions"}, {"VUID-VkAttachmentDescription2-pNext-06704", "If the pNext chain does not include a VkAttachmentDescriptionStencilLayout structure, format includes a stencil component, and stencilLoadOp is VK_ATTACHMENT_LOAD_OP_LOAD, then initialLayout must not be VK_IMAGE_LAYOUT_UNDEFINED", "1.3-extensions"}, {"VUID-VkAttachmentDescription2-pNext-06705", "If the pNext chain does includes a VkAttachmentDescriptionStencilLayout structure, format includes a stencil component, and stencilLoadOp is VK_ATTACHMENT_LOAD_OP_LOAD, then VkAttachmentDescriptionStencilLayout::stencilInitialLayout must not be VK_IMAGE_LAYOUT_UNDEFINED", "1.3-extensions"}, - {"VUID-VkAttachmentDescription2-pNext-pNext", "pNext must be NULL or a pointer to a valid instance of VkAttachmentDescriptionStencilLayout", "1.3-extensions"}, + {"VUID-VkAttachmentDescription2-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 VkAttachmentDescriptionStencilLayout or VkExternalFormatANDROID", "1.3-extensions"}, {"VUID-VkAttachmentDescription2-sType-sType", "sType must be VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2", "1.3-extensions"}, {"VUID-VkAttachmentDescription2-sType-unique", "The sType value of each struct in the pNext chain must be unique", "1.3-extensions"}, {"VUID-VkAttachmentDescription2-samples-08745", "samples must be a bit value that is set in imageCreateSampleCounts (as defined in Image Creation Limits) for the given format", "1.3-extensions"}, @@ -1506,7 +1508,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT", "1.3-extensions"}, {"VUID-VkCommandBufferInheritanceInfo-commonparent", "Both of framebuffer, and renderPass that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice", "1.3-extensions"}, {"VUID-VkCommandBufferInheritanceInfo-occlusionQueryEnable-00056", "If the inheritedQueries feature is not enabled, occlusionQueryEnable must be VK_FALSE", "1.3-extensions"}, - {"VUID-VkCommandBufferInheritanceInfo-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 VkAttachmentSampleCountInfoAMD, VkCommandBufferInheritanceConditionalRenderingInfoEXT, VkCommandBufferInheritanceRenderPassTransformInfoQCOM, VkCommandBufferInheritanceRenderingInfo, VkCommandBufferInheritanceViewportScissorInfoNV, or VkMultiviewPerViewAttributesInfoNVX", "1.3-extensions"}, + {"VUID-VkCommandBufferInheritanceInfo-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 VkAttachmentSampleCountInfoAMD, VkCommandBufferInheritanceConditionalRenderingInfoEXT, VkCommandBufferInheritanceRenderPassTransformInfoQCOM, VkCommandBufferInheritanceRenderingInfo, VkCommandBufferInheritanceViewportScissorInfoNV, VkExternalFormatANDROID, or VkMultiviewPerViewAttributesInfoNVX", "1.3-extensions"}, {"VUID-VkCommandBufferInheritanceInfo-pipelineStatistics-00058", "If the pipelineStatisticsQuery feature is not enabled, pipelineStatistics must be 0", "1.3-extensions"}, {"VUID-VkCommandBufferInheritanceInfo-pipelineStatistics-02789", "If the pipelineStatisticsQuery feature is enabled, pipelineStatistics must be a valid combination of VkQueryPipelineStatisticFlagBits values", "1.3-extensions"}, {"VUID-VkCommandBufferInheritanceInfo-queryFlags-00057", "If the inheritedQueries feature is enabled, queryFlags must be a valid combination of VkQueryControlFlagBits values", "1.3-extensions"}, @@ -2344,7 +2346,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkDeviceCreateInfo-pNext-02830", "If the pNext chain includes a VkPhysicalDeviceVulkan12Features structure, then it must not include a VkPhysicalDevice8BitStorageFeatures, VkPhysicalDeviceShaderAtomicInt64Features, VkPhysicalDeviceShaderFloat16Int8Features, VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceScalarBlockLayoutFeatures, VkPhysicalDeviceImagelessFramebufferFeatures, VkPhysicalDeviceUniformBufferStandardLayoutFeatures, VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures, VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures, VkPhysicalDeviceHostQueryResetFeatures, VkPhysicalDeviceTimelineSemaphoreFeatures, VkPhysicalDeviceBufferDeviceAddressFeatures, or VkPhysicalDeviceVulkanMemoryModelFeatures structure", "1.3-extensions"}, {"VUID-VkDeviceCreateInfo-pNext-04748", "If the pNext chain includes a VkPhysicalDeviceVulkan12Features structure and VkPhysicalDeviceVulkan12Features::bufferDeviceAddress is VK_TRUE, ppEnabledExtensionNames must not contain VK_EXT_buffer_device_address", "1.3-extensions"}, {"VUID-VkDeviceCreateInfo-pNext-06532", "If the pNext chain includes a VkPhysicalDeviceVulkan13Features structure, then it must not include a VkPhysicalDeviceDynamicRenderingFeatures, VkPhysicalDeviceImageRobustnessFeatures, VkPhysicalDeviceInlineUniformBlockFeatures, VkPhysicalDeviceMaintenance4Features, VkPhysicalDevicePipelineCreationCacheControlFeatures, VkPhysicalDevicePrivateDataFeatures, VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures, VkPhysicalDeviceShaderIntegerDotProductFeatures, VkPhysicalDeviceShaderTerminateInvocationFeatures, VkPhysicalDeviceSubgroupSizeControlFeatures, VkPhysicalDeviceSynchronization2Features, VkPhysicalDeviceTextureCompressionASTCHDRFeatures, or VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures structure", "1.3-extensions"}, - {"VUID-VkDeviceCreateInfo-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 VkDeviceDeviceMemoryReportCreateInfoEXT, VkDeviceDiagnosticsConfigCreateInfoNV, VkDeviceGroupDeviceCreateInfo, VkDeviceMemoryOverallocationCreateInfoAMD, VkDevicePrivateDataCreateInfo, VkPhysicalDevice16BitStorageFeatures, VkPhysicalDevice4444FormatsFeaturesEXT, VkPhysicalDevice8BitStorageFeatures, VkPhysicalDeviceASTCDecodeFeaturesEXT, VkPhysicalDeviceAccelerationStructureFeaturesKHR, VkPhysicalDeviceAddressBindingReportFeaturesEXT, VkPhysicalDeviceAmigoProfilingFeaturesSEC, VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT, VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT, VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, VkPhysicalDeviceBorderColorSwizzleFeaturesEXT, VkPhysicalDeviceBufferDeviceAddressFeatures, VkPhysicalDeviceBufferDeviceAddressFeaturesEXT, VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI, VkPhysicalDeviceCoherentMemoryFeaturesAMD, VkPhysicalDeviceColorWriteEnableFeaturesEXT, VkPhysicalDeviceComputeShaderDerivativesFeaturesNV, VkPhysicalDeviceConditionalRenderingFeaturesEXT, VkPhysicalDeviceCooperativeMatrixFeaturesKHR, VkPhysicalDeviceCooperativeMatrixFeaturesNV, VkPhysicalDeviceCopyMemoryIndirectFeaturesNV, VkPhysicalDeviceCornerSampledImageFeaturesNV, VkPhysicalDeviceCoverageReductionModeFeaturesNV, VkPhysicalDeviceCubicClampFeaturesQCOM, VkPhysicalDeviceCubicWeightsFeaturesQCOM, VkPhysicalDeviceCustomBorderColorFeaturesEXT, VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV, VkPhysicalDeviceDepthBiasControlFeaturesEXT, VkPhysicalDeviceDepthClampZeroOneFeaturesEXT, VkPhysicalDeviceDepthClipControlFeaturesEXT, VkPhysicalDeviceDepthClipEnableFeaturesEXT, VkPhysicalDeviceDescriptorBufferFeaturesEXT, VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV, VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE, VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV, VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV, VkPhysicalDeviceDeviceMemoryReportFeaturesEXT, VkPhysicalDeviceDiagnosticsConfigFeaturesNV, VkPhysicalDeviceDisplacementMicromapFeaturesNV, VkPhysicalDeviceDynamicRenderingFeatures, VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT, VkPhysicalDeviceExclusiveScissorFeaturesNV, VkPhysicalDeviceExtendedDynamicState2FeaturesEXT, VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, VkPhysicalDeviceExtendedDynamicStateFeaturesEXT, VkPhysicalDeviceExternalMemoryRDMAFeaturesNV, VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX, VkPhysicalDeviceFaultFeaturesEXT, VkPhysicalDeviceFeatures2, VkPhysicalDeviceFragmentDensityMap2FeaturesEXT, VkPhysicalDeviceFragmentDensityMapFeaturesEXT, VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM, VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR, VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT, VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV, VkPhysicalDeviceFragmentShadingRateFeaturesKHR, VkPhysicalDeviceFrameBoundaryFeaturesEXT, VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR, VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT, VkPhysicalDeviceHostImageCopyFeaturesEXT, VkPhysicalDeviceHostQueryResetFeatures, VkPhysicalDeviceImage2DViewOf3DFeaturesEXT, VkPhysicalDeviceImageCompressionControlFeaturesEXT, VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT, VkPhysicalDeviceImageProcessing2FeaturesQCOM, VkPhysicalDeviceImageProcessingFeaturesQCOM, VkPhysicalDeviceImageRobustnessFeatures, VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT, VkPhysicalDeviceImageViewMinLodFeaturesEXT, VkPhysicalDeviceImagelessFramebufferFeatures, VkPhysicalDeviceIndexTypeUint8FeaturesEXT, VkPhysicalDeviceInheritedViewportScissorFeaturesNV, VkPhysicalDeviceInlineUniformBlockFeatures, VkPhysicalDeviceInvocationMaskFeaturesHUAWEI, VkPhysicalDeviceLegacyDitheringFeaturesEXT, VkPhysicalDeviceLineRasterizationFeaturesEXT, VkPhysicalDeviceLinearColorAttachmentFeaturesNV, VkPhysicalDeviceMaintenance4Features, VkPhysicalDeviceMaintenance5FeaturesKHR, VkPhysicalDeviceMemoryDecompressionFeaturesNV, VkPhysicalDeviceMemoryPriorityFeaturesEXT, VkPhysicalDeviceMeshShaderFeaturesEXT, VkPhysicalDeviceMeshShaderFeaturesNV, VkPhysicalDeviceMultiDrawFeaturesEXT, VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT, VkPhysicalDeviceMultiviewFeatures, VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM, VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM, VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT, VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT, VkPhysicalDeviceOpacityMicromapFeaturesEXT, VkPhysicalDeviceOpticalFlowFeaturesNV, VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT, VkPhysicalDevicePerformanceQueryFeaturesKHR, VkPhysicalDevicePipelineCreationCacheControlFeatures, VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR, VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT, VkPhysicalDevicePipelinePropertiesFeaturesEXT, VkPhysicalDevicePipelineProtectedAccessFeaturesEXT, VkPhysicalDevicePipelineRobustnessFeaturesEXT, VkPhysicalDevicePortabilitySubsetFeaturesKHR, VkPhysicalDevicePresentBarrierFeaturesNV, VkPhysicalDevicePresentIdFeaturesKHR, VkPhysicalDevicePresentWaitFeaturesKHR, VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT, VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT, VkPhysicalDevicePrivateDataFeatures, VkPhysicalDeviceProtectedMemoryFeatures, VkPhysicalDeviceProvokingVertexFeaturesEXT, VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT, VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT, VkPhysicalDeviceRayQueryFeaturesKHR, VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV, VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR, VkPhysicalDeviceRayTracingMotionBlurFeaturesNV, VkPhysicalDeviceRayTracingPipelineFeaturesKHR, VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR, VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV, VkPhysicalDeviceRobustness2FeaturesEXT, VkPhysicalDeviceSamplerYcbcrConversionFeatures, VkPhysicalDeviceScalarBlockLayoutFeatures, VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures, VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT, VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, VkPhysicalDeviceShaderAtomicInt64Features, VkPhysicalDeviceShaderClockFeaturesKHR, VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM, VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures, VkPhysicalDeviceShaderDrawParametersFeatures, VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD, VkPhysicalDeviceShaderEnqueueFeaturesAMDX, VkPhysicalDeviceShaderFloat16Int8Features, VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT, VkPhysicalDeviceShaderImageFootprintFeaturesNV, VkPhysicalDeviceShaderIntegerDotProductFeatures, VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL, VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT, VkPhysicalDeviceShaderObjectFeaturesEXT, VkPhysicalDeviceShaderSMBuiltinsFeaturesNV, VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures, VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR, VkPhysicalDeviceShaderTerminateInvocationFeatures, VkPhysicalDeviceShaderTileImageFeaturesEXT, VkPhysicalDeviceShadingRateImageFeaturesNV, VkPhysicalDeviceSubgroupSizeControlFeatures, VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT, VkPhysicalDeviceSubpassShadingFeaturesHUAWEI, VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT, VkPhysicalDeviceSynchronization2Features, VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT, VkPhysicalDeviceTextureCompressionASTCHDRFeatures, VkPhysicalDeviceTilePropertiesFeaturesQCOM, VkPhysicalDeviceTimelineSemaphoreFeatures, VkPhysicalDeviceTransformFeedbackFeaturesEXT, VkPhysicalDeviceUniformBufferStandardLayoutFeatures, VkPhysicalDeviceVariablePointersFeatures, VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT, VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT, VkPhysicalDeviceVulkan11Features, VkPhysicalDeviceVulkan12Features, VkPhysicalDeviceVulkan13Features, VkPhysicalDeviceVulkanMemoryModelFeatures, VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR, VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT, VkPhysicalDeviceYcbcrDegammaFeaturesQCOM, VkPhysicalDeviceYcbcrImageArraysFeaturesEXT, or VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures", "1.3-extensions"}, + {"VUID-VkDeviceCreateInfo-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 VkDeviceDeviceMemoryReportCreateInfoEXT, VkDeviceDiagnosticsConfigCreateInfoNV, VkDeviceGroupDeviceCreateInfo, VkDeviceMemoryOverallocationCreateInfoAMD, VkDevicePrivateDataCreateInfo, VkPhysicalDevice16BitStorageFeatures, VkPhysicalDevice4444FormatsFeaturesEXT, VkPhysicalDevice8BitStorageFeatures, VkPhysicalDeviceASTCDecodeFeaturesEXT, VkPhysicalDeviceAccelerationStructureFeaturesKHR, VkPhysicalDeviceAddressBindingReportFeaturesEXT, VkPhysicalDeviceAmigoProfilingFeaturesSEC, VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT, VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT, VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, VkPhysicalDeviceBorderColorSwizzleFeaturesEXT, VkPhysicalDeviceBufferDeviceAddressFeatures, VkPhysicalDeviceBufferDeviceAddressFeaturesEXT, VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI, VkPhysicalDeviceCoherentMemoryFeaturesAMD, VkPhysicalDeviceColorWriteEnableFeaturesEXT, VkPhysicalDeviceComputeShaderDerivativesFeaturesNV, VkPhysicalDeviceConditionalRenderingFeaturesEXT, VkPhysicalDeviceCooperativeMatrixFeaturesKHR, VkPhysicalDeviceCooperativeMatrixFeaturesNV, VkPhysicalDeviceCopyMemoryIndirectFeaturesNV, VkPhysicalDeviceCornerSampledImageFeaturesNV, VkPhysicalDeviceCoverageReductionModeFeaturesNV, VkPhysicalDeviceCubicClampFeaturesQCOM, VkPhysicalDeviceCubicWeightsFeaturesQCOM, VkPhysicalDeviceCustomBorderColorFeaturesEXT, VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV, VkPhysicalDeviceDepthBiasControlFeaturesEXT, VkPhysicalDeviceDepthClampZeroOneFeaturesEXT, VkPhysicalDeviceDepthClipControlFeaturesEXT, VkPhysicalDeviceDepthClipEnableFeaturesEXT, VkPhysicalDeviceDescriptorBufferFeaturesEXT, VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV, VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE, VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV, VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV, VkPhysicalDeviceDeviceMemoryReportFeaturesEXT, VkPhysicalDeviceDiagnosticsConfigFeaturesNV, VkPhysicalDeviceDisplacementMicromapFeaturesNV, VkPhysicalDeviceDynamicRenderingFeatures, VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT, VkPhysicalDeviceExclusiveScissorFeaturesNV, VkPhysicalDeviceExtendedDynamicState2FeaturesEXT, VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, VkPhysicalDeviceExtendedDynamicStateFeaturesEXT, VkPhysicalDeviceExternalFormatResolveFeaturesANDROID, VkPhysicalDeviceExternalMemoryRDMAFeaturesNV, VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX, VkPhysicalDeviceFaultFeaturesEXT, VkPhysicalDeviceFeatures2, VkPhysicalDeviceFragmentDensityMap2FeaturesEXT, VkPhysicalDeviceFragmentDensityMapFeaturesEXT, VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM, VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR, VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT, VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV, VkPhysicalDeviceFragmentShadingRateFeaturesKHR, VkPhysicalDeviceFrameBoundaryFeaturesEXT, VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR, VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT, VkPhysicalDeviceHostImageCopyFeaturesEXT, VkPhysicalDeviceHostQueryResetFeatures, VkPhysicalDeviceImage2DViewOf3DFeaturesEXT, VkPhysicalDeviceImageCompressionControlFeaturesEXT, VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT, VkPhysicalDeviceImageProcessing2FeaturesQCOM, VkPhysicalDeviceImageProcessingFeaturesQCOM, VkPhysicalDeviceImageRobustnessFeatures, VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT, VkPhysicalDeviceImageViewMinLodFeaturesEXT, VkPhysicalDeviceImagelessFramebufferFeatures, VkPhysicalDeviceIndexTypeUint8FeaturesEXT, VkPhysicalDeviceInheritedViewportScissorFeaturesNV, VkPhysicalDeviceInlineUniformBlockFeatures, VkPhysicalDeviceInvocationMaskFeaturesHUAWEI, VkPhysicalDeviceLegacyDitheringFeaturesEXT, VkPhysicalDeviceLineRasterizationFeaturesEXT, VkPhysicalDeviceLinearColorAttachmentFeaturesNV, VkPhysicalDeviceMaintenance4Features, VkPhysicalDeviceMaintenance5FeaturesKHR, VkPhysicalDeviceMemoryDecompressionFeaturesNV, VkPhysicalDeviceMemoryPriorityFeaturesEXT, VkPhysicalDeviceMeshShaderFeaturesEXT, VkPhysicalDeviceMeshShaderFeaturesNV, VkPhysicalDeviceMultiDrawFeaturesEXT, VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT, VkPhysicalDeviceMultiviewFeatures, VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM, VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM, VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT, VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT, VkPhysicalDeviceOpacityMicromapFeaturesEXT, VkPhysicalDeviceOpticalFlowFeaturesNV, VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT, VkPhysicalDevicePerformanceQueryFeaturesKHR, VkPhysicalDevicePipelineCreationCacheControlFeatures, VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR, VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT, VkPhysicalDevicePipelinePropertiesFeaturesEXT, VkPhysicalDevicePipelineProtectedAccessFeaturesEXT, VkPhysicalDevicePipelineRobustnessFeaturesEXT, VkPhysicalDevicePortabilitySubsetFeaturesKHR, VkPhysicalDevicePresentBarrierFeaturesNV, VkPhysicalDevicePresentIdFeaturesKHR, VkPhysicalDevicePresentWaitFeaturesKHR, VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT, VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT, VkPhysicalDevicePrivateDataFeatures, VkPhysicalDeviceProtectedMemoryFeatures, VkPhysicalDeviceProvokingVertexFeaturesEXT, VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT, VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT, VkPhysicalDeviceRayQueryFeaturesKHR, VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV, VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR, VkPhysicalDeviceRayTracingMotionBlurFeaturesNV, VkPhysicalDeviceRayTracingPipelineFeaturesKHR, VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR, VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV, VkPhysicalDeviceRobustness2FeaturesEXT, VkPhysicalDeviceSamplerYcbcrConversionFeatures, VkPhysicalDeviceScalarBlockLayoutFeatures, VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures, VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT, VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, VkPhysicalDeviceShaderAtomicInt64Features, VkPhysicalDeviceShaderClockFeaturesKHR, VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM, VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures, VkPhysicalDeviceShaderDrawParametersFeatures, VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD, VkPhysicalDeviceShaderEnqueueFeaturesAMDX, VkPhysicalDeviceShaderFloat16Int8Features, VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT, VkPhysicalDeviceShaderImageFootprintFeaturesNV, VkPhysicalDeviceShaderIntegerDotProductFeatures, VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL, VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT, VkPhysicalDeviceShaderObjectFeaturesEXT, VkPhysicalDeviceShaderSMBuiltinsFeaturesNV, VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures, VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR, VkPhysicalDeviceShaderTerminateInvocationFeatures, VkPhysicalDeviceShaderTileImageFeaturesEXT, VkPhysicalDeviceShadingRateImageFeaturesNV, VkPhysicalDeviceSubgroupSizeControlFeatures, VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT, VkPhysicalDeviceSubpassShadingFeaturesHUAWEI, VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT, VkPhysicalDeviceSynchronization2Features, VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT, VkPhysicalDeviceTextureCompressionASTCHDRFeatures, VkPhysicalDeviceTilePropertiesFeaturesQCOM, VkPhysicalDeviceTimelineSemaphoreFeatures, VkPhysicalDeviceTransformFeedbackFeaturesEXT, VkPhysicalDeviceUniformBufferStandardLayoutFeatures, VkPhysicalDeviceVariablePointersFeatures, VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT, VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT, VkPhysicalDeviceVulkan11Features, VkPhysicalDeviceVulkan12Features, VkPhysicalDeviceVulkan13Features, VkPhysicalDeviceVulkanMemoryModelFeatures, VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR, VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT, VkPhysicalDeviceYcbcrDegammaFeaturesQCOM, VkPhysicalDeviceYcbcrImageArraysFeaturesEXT, or VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures", "1.3-extensions"}, {"VUID-VkDeviceCreateInfo-pProperties-04451", "If the VK_KHR_portability_subset extension is included in pProperties of vkEnumerateDeviceExtensionProperties, ppEnabledExtensionNames must include \"VK_KHR_portability_subset\"", "1.3-extensions"}, {"VUID-VkDeviceCreateInfo-pQueueCreateInfos-06654", "If multiple elements of pQueueCreateInfos share the same queueFamilyIndex, then all of such elements must have the same global priority level, which can be specified explicitly by the including a VkDeviceQueueGlobalPriorityCreateInfoKHR structure in the pNext chain, or by the implicit default value", "1.3-extensions"}, {"VUID-VkDeviceCreateInfo-pQueueCreateInfos-06755", "If multiple elements of pQueueCreateInfos share the same queueFamilyIndex, the sum of their queueCount members must be less than or equal to the queueCount member of the VkQueueFamilyProperties structure, as returned by vkGetPhysicalDeviceQueueFamilyProperties in the pQueueFamilyProperties[queueFamilyIndex]", "1.3-extensions"}, @@ -2762,6 +2764,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkFramebufferCreateInfo-flags-04548", "If flags does not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, each element of pAttachments that is used as a fragment shading rate attachment by renderPass must have been created with a usage value including VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR", "1.3-extensions"}, {"VUID-VkFramebufferCreateInfo-flags-04549", "If flags includes VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, the usage member of any element of the pAttachmentImageInfos member of a VkFramebufferAttachmentsCreateInfo structure included in the pNext chain that refers to an attachment used as a fragment shading rate attachment by renderPass must include VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR", "1.3-extensions"}, {"VUID-VkFramebufferCreateInfo-flags-04587", "If flags includes VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT and renderPass was specified with non-zero view masks, each element of pAttachments that is used as a fragment shading rate attachment by renderPass must have a layerCount that is either 1, or greater than the index of the most significant bit set in any of those view masks", "1.3-extensions"}, + {"VUID-VkFramebufferCreateInfo-flags-09351", "If flags does not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT and the nullColorAttachmentWithExternalFormatResolve is VK_FALSE, the format of the color attachment for each subpass in renderPass that includes an external format image as a resolve attachment must have a format equal to the value of VkAndroidHardwareBufferFormatResolvePropertiesANDROID::colorAttachmentFormat as returned by a call to vkGetAndroidHardwareBufferPropertiesANDROID for the Android hardware buffer that was used to create the image view used as its resolve attachment", "1.3-extensions"}, + {"VUID-VkFramebufferCreateInfo-flags-09352", "If flags does not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, each element of pAttachments with a format of VK_FORMAT_UNDEFINED must have been created with a VkExternalFormatANDROID::externalFormat value identical to that provided in the VkExternalFormatANDROID::externalFormat specified by the corresponding VkAttachmentDescription2 in renderPass", "1.3-extensions"}, {"VUID-VkFramebufferCreateInfo-flags-parameter", "flags must be a valid combination of VkFramebufferCreateFlagBits values", "1.3-extensions"}, {"VUID-VkFramebufferCreateInfo-height-00887", "height must be greater than 0", "1.3-extensions"}, {"VUID-VkFramebufferCreateInfo-height-00888", "height must be less than or equal to maxFramebufferHeight", "1.3-extensions"}, @@ -2877,6 +2881,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkGeometryTrianglesNV-vertexOffset-02428", "vertexOffset must be less than the size of vertexData", "1.3-extensions"}, {"VUID-VkGeometryTrianglesNV-vertexOffset-02429", "vertexOffset must be a multiple of the component size of vertexFormat", "1.3-extensions"}, {"VUID-VkGeometryTrianglesNV-vertexStride-03818", "vertexStride must be less than or equal to 232-1", "1.3-extensions"}, + {"VUID-VkGetLatencyMarkerInfoNV-pTimings-parameter", "pTimings must be a valid pointer to a VkLatencyTimingsFrameReportNV structure", "1.3-extensions"}, + {"VUID-VkGetLatencyMarkerInfoNV-sType-sType", "sType must be VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV", "1.3-extensions"}, {"VUID-VkGraphicsPipelineCreateInfo-Geometry-07726", "If the pipeline is being created with a Geometry Execution Model, uses the OutputPoints Execution Mode, and shaderTessellationAndGeometryPointSize is not enabled, a PointSize decorated variable must not be written to", "1.3-extensions"}, {"VUID-VkGraphicsPipelineCreateInfo-Input-06632", "If the pipeline requires fragment shader state with a fragment shader that either enables sample shading or decorates any variable in the Input storage class with Sample, then pMultisampleState must not be NULL", "1.3-extensions"}, {"VUID-VkGraphicsPipelineCreateInfo-Input-07904", "If the pipeline is being created with vertex input state and pVertexInputState is not dynamic, then all variables with the Input storage class decorated with Location in the Vertex Execution Model OpEntryPoint must contain a location in VkVertexInputAttributeDescription::location", "1.3-extensions"}, @@ -2886,7 +2892,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkGraphicsPipelineCreateInfo-None-04575", "If the pipeline requires fragment shader state, and the noInvocationFragmentShadingRates feature is not enabled, VkPipelineFragmentShadingRateEnumStateCreateInfoNV::shadingRate must not be equal to VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV", "1.3-extensions"}, {"VUID-VkGraphicsPipelineCreateInfo-None-04889", "If the pipeline requires pre-rasterization shader state and fragment shader state, the fragment shader and last pre-rasterization shader stage and any relevant state must adhere to the pipeline linking rules described in the Shader Interfaces chapter", "1.3-extensions"}, {"VUID-VkGraphicsPipelineCreateInfo-None-06569", "If the pipeline requires fragment shader state and VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR is not included in pDynamicState->pDynamicStates, VkPipelineFragmentShadingRateEnumStateCreateInfoNV::shadingRateType must be a valid VkFragmentShadingRateTypeNV value", "1.3-extensions"}, - {"VUID-VkGraphicsPipelineCreateInfo-None-07826", "If the pipeline includes a complete set of state, VkPipelineLayout must be a valid pipeline layout", "1.3-extensions"}, + {"VUID-VkGraphicsPipelineCreateInfo-None-07826", "If the pipeline includes a complete set of state, and there are no libraries included in VkPipelineLibraryCreateInfoKHR::pLibraries, then VkPipelineLayout must be a valid pipeline layout", "1.3-extensions"}, {"VUID-VkGraphicsPipelineCreateInfo-None-09043", "If pDynamicState->pDynamicStates does not include VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT, and the format of any color attachment is VK_FORMAT_E5B9G9R9_UFLOAT_PACK32, the colorWriteMask member of the corresponding element of pColorBlendState->pAttachments must either include all of VK_COLOR_COMPONENT_R_BIT, VK_COLOR_COMPONENT_G_BIT, and VK_COLOR_COMPONENT_B_BIT, or none of them", "1.3-extensions"}, {"VUID-VkGraphicsPipelineCreateInfo-PrimitiveId-06264", "If the pipeline requires pre-rasterization shader state, it includes a mesh shader and the fragment shader code reads from an input variable that is decorated with PrimitiveId, then the mesh shader code must write to a matching output variable, decorated with PrimitiveId, in all execution paths", "1.3-extensions"}, {"VUID-VkGraphicsPipelineCreateInfo-TaskNV-07063", "The shader stages for VK_SHADER_STAGE_TASK_BIT_EXT or VK_SHADER_STAGE_MESH_BIT_EXT must use either the TaskNV and MeshNV Execution Model or the TaskEXT and MeshEXT Execution Model, but must not use both", "1.3-extensions"}, @@ -2932,6 +2938,19 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3TessellationDomainOrigin-07370", "If the extendedDynamicState3TessellationDomainOrigin feature is not enabled, there must be no element of the pDynamicStates member of pDynamicState set to VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT", "1.3-extensions"}, {"VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ViewportSwizzle-07392", "If the extendedDynamicState3ViewportSwizzle feature is not enabled, there must be no element of the pDynamicStates member of pDynamicState set to VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV", "1.3-extensions"}, {"VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ViewportWScalingEnable-07391", "If the extendedDynamicState3ViewportWScalingEnable feature is not enabled, there must be no element of the pDynamicStates member of pDynamicState set to VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV", "1.3-extensions"}, + {"VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09301", "If the externalFormatResolve feature is enabled, the pipeline requires fragment output interface state, renderPass is VK_NULL_HANDLE, and VkExternalFormatANDROID::externalFormat is not 0, VkPipelineRenderingCreateInfo::viewMask must be 0", "1.3-extensions"}, + {"VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09304", "If the externalFormatResolve feature is enabled, the pipeline requires fragment output interface state, renderPass is VK_NULL_HANDLE, VkExternalFormatANDROID::externalFormat is not 0, and pDynamicState->pDynamicStates does not include VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT, VkPipelineMultisampleStateCreateInfo::rasterizationSamples must be 1", "1.3-extensions"}, + {"VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09305", "If the externalFormatResolve feature is enabled, the pipeline requires fragment output interface state, renderPass is VK_NULL_HANDLE, and VkExternalFormatANDROID::externalFormat is not 0, and pDynamicState->pDynamicStates does not include VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT, the blendEnable member of each element of pColorBlendState->pAttachments must be VK_FALSE", "1.3-extensions"}, + {"VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09306", "If the externalFormatResolve feature is enabled, the pipeline requires fragment output interface state, renderPass is VK_NULL_HANDLE, and VkExternalFormatANDROID::externalFormat is not 0, and pDynamicState->pDynamicStates does not include VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR, VkPipelineFragmentShadingRateStateCreateInfoKHR::width must be 1", "1.3-extensions"}, + {"VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09307", "If the externalFormatResolve feature is enabled, the pipeline requires fragment output interface state, renderPass is VK_NULL_HANDLE, and VkExternalFormatANDROID::externalFormat is not 0, and pDynamicState->pDynamicStates does not include VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR, VkPipelineFragmentShadingRateStateCreateInfoKHR::height must be 1", "1.3-extensions"}, + {"VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09308", "If the externalFormatResolve feature is enabled, the pipeline requires pre-rasterization shader state and fragment output interface state, renderPass is VK_NULL_HANDLE, and VkExternalFormatANDROID::externalFormat is not 0, the last pre-rasterization shader stage must not statically use a variable with the PrimitiveShadingRateKHR built-in", "1.3-extensions"}, + {"VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09309", "If the externalFormatResolve feature is enabled, the pipeline requires fragment output interface state, renderPass is VK_NULL_HANDLE, and VkExternalFormatANDROID::externalFormat is not 0, VkPipelineRenderingCreateInfo::colorAttachmentCount must be 1", "1.3-extensions"}, + {"VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09310", "If the externalFormatResolve feature is enabled, the pipeline requires fragment shader state and fragment output interface state, renderPass is VK_NULL_HANDLE, and VkExternalFormatANDROID::externalFormat is not 0, the fragment shader must not declare the DepthReplacing or StencilRefReplacingEXT execution modes", "1.3-extensions"}, + {"VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09313", "If the externalFormatResolve feature is enabled, the pipeline requires fragment output interface state, renderPass is not VK_NULL_HANDLE, subpass includes an external format resolve attachment, and pDynamicState->pDynamicStates does not include VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT, VkPipelineMultisampleStateCreateInfo::rasterizationSamples must be VK_SAMPLE_COUNT_1_BIT", "1.3-extensions"}, + {"VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09314", "If the externalFormatResolve feature is enabled, the pipeline requires fragment output interface state, renderPass is not VK_NULL_HANDLE, subpass includes an external format resolve attachment, and pDynamicState->pDynamicStates does not include VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT, the blendEnable member of each element of pColorBlendState->pAttachments must be VK_FALSE", "1.3-extensions"}, + {"VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09315", "If the externalFormatResolve feature is enabled, the pipeline requires fragment output interface state, renderPass is not VK_NULL_HANDLE, subpass includes an external format resolve attachment, and pDynamicState->pDynamicStates does not include VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR, VkPipelineFragmentShadingRateStateCreateInfoKHR::width must be 1", "1.3-extensions"}, + {"VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09316", "If the externalFormatResolve feature is enabled, the pipeline requires fragment output interface state, renderPass is not VK_NULL_HANDLE, subpass includes an external format resolve attachment, and pDynamicState->pDynamicStates does not include VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR, VkPipelineFragmentShadingRateStateCreateInfoKHR::height must be 1", "1.3-extensions"}, + {"VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09317", "If the externalFormatResolve feature is enabled, the pipeline requires pre-rasterization shader state and fragment output interface state, renderPass is not VK_NULL_HANDLE, and subpass includes an external format resolve attachment, the last pre-rasterization shader stage must not statically use a variable with the PrimitiveShadingRateKHR built-in", "1.3-extensions"}, {"VUID-VkGraphicsPipelineCreateInfo-flags-00764", "flags must not contain the VK_PIPELINE_CREATE_DISPATCH_BASE flag", "1.3-extensions"}, {"VUID-VkGraphicsPipelineCreateInfo-flags-02877", "If flags includes VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV, then the deviceGeneratedCommands feature must be enabled", "1.3-extensions"}, {"VUID-VkGraphicsPipelineCreateInfo-flags-02966", "If the pipeline requires pre-rasterization shader state and flags includes VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV, then all stages must not specify Xfb execution mode", "1.3-extensions"}, @@ -3092,7 +3111,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkGraphicsPipelineCreateInfo-pMultisampleState-06629", "If the pipeline requires fragment shader state pMultisampleState must be NULL or a valid pointer to a valid VkPipelineMultisampleStateCreateInfo structure", "1.3-extensions"}, {"VUID-VkGraphicsPipelineCreateInfo-pMultisampleState-09026", "If the pipeline requires fragment output interface state, and the VK_EXT_extended_dynamic_state3 extension is not enabled or any of the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT, VK_DYNAMIC_STATE_SAMPLE_MASK_EXT, or VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic states is not set, or alphaToOne is enabled on the device and VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT is not set, pMultisampleState must be a valid pointer to a valid VkPipelineMultisampleStateCreateInfo structure", "1.3-extensions"}, {"VUID-VkGraphicsPipelineCreateInfo-pMultisampleState-09027", "If pMultisampleState is not NULL is must be a valid pointer to a valid VkPipelineMultisampleStateCreateInfo structure", "1.3-extensions"}, - {"VUID-VkGraphicsPipelineCreateInfo-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 VkAttachmentSampleCountInfoAMD, VkGraphicsPipelineLibraryCreateInfoEXT, VkGraphicsPipelineShaderGroupsCreateInfoNV, VkMultiviewPerViewAttributesInfoNVX, VkPipelineCompilerControlCreateInfoAMD, VkPipelineCreateFlags2CreateInfoKHR, VkPipelineCreationFeedbackCreateInfo, VkPipelineDiscardRectangleStateCreateInfoEXT, VkPipelineFragmentShadingRateEnumStateCreateInfoNV, VkPipelineFragmentShadingRateStateCreateInfoKHR, VkPipelineLibraryCreateInfoKHR, VkPipelineRenderingCreateInfo, VkPipelineRepresentativeFragmentTestStateCreateInfoNV, or VkPipelineRobustnessCreateInfoEXT", "1.3-extensions"}, + {"VUID-VkGraphicsPipelineCreateInfo-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 VkAttachmentSampleCountInfoAMD, VkExternalFormatANDROID, VkGraphicsPipelineLibraryCreateInfoEXT, VkGraphicsPipelineShaderGroupsCreateInfoNV, VkMultiviewPerViewAttributesInfoNVX, VkPipelineCompilerControlCreateInfoAMD, VkPipelineCreateFlags2CreateInfoKHR, VkPipelineCreationFeedbackCreateInfo, VkPipelineDiscardRectangleStateCreateInfoEXT, VkPipelineFragmentShadingRateEnumStateCreateInfoNV, VkPipelineFragmentShadingRateStateCreateInfoKHR, VkPipelineLibraryCreateInfoKHR, VkPipelineRenderingCreateInfo, VkPipelineRepresentativeFragmentTestStateCreateInfoNV, or VkPipelineRobustnessCreateInfoEXT", "1.3-extensions"}, {"VUID-VkGraphicsPipelineCreateInfo-pRasterizationState-09039", "If the VK_EXT_extended_dynamic_state3 extension is not enabled, or any of the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT, VK_DYNAMIC_STATE_SAMPLE_MASK_EXT, or VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT dynamic states are not set, or alphaToOne is enabled on the device and VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT is not set, then pMultisampleState must be a valid pointer to a valid VkPipelineMultisampleStateCreateInfo structure", "1.3-extensions"}, {"VUID-VkGraphicsPipelineCreateInfo-pRasterizationState-09040", "If pRasterizationState is not NULL it must be a valid pointer to a valid VkPipelineRasterizationStateCreateInfo structure", "1.3-extensions"}, {"VUID-VkGraphicsPipelineCreateInfo-pRasterizationState-09042", "If pRasterizationState is not NULL it must be a valid pointer to a valid VkPipelineRasterizationStateCreateInfo structure", "1.3-extensions"}, @@ -3765,6 +3784,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkImageViewCaptureDescriptorDataInfoEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT", "1.3-extensions"}, {"VUID-VkImageViewCreateInfo-None-02273", "The format features of the resultant image view must contain at least one bit", "1.3-extensions"}, {"VUID-VkImageViewCreateInfo-components-parameter", "components must be a valid VkComponentMapping structure", "1.3-extensions"}, + {"VUID-VkImageViewCreateInfo-externalFormatResolve-09358", "If the externalFormatResolve feature is not enabled and usage contains VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, then the image view's format features must contain at least one of VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT, VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT, or VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV", "1.3-extensions"}, {"VUID-VkImageViewCreateInfo-flags-02572", "If the fragmentDensityMapDynamic feature is not enabled, flags must not contain VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT", "1.3-extensions"}, {"VUID-VkImageViewCreateInfo-flags-03567", "If the fragmentDensityMapDeferred feature is not enabled, flags must not contain VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT", "1.3-extensions"}, {"VUID-VkImageViewCreateInfo-flags-03568", "If flags contains VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT, flags must not contain VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT", "1.3-extensions"}, @@ -3802,12 +3822,14 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkImageViewCreateInfo-image-08957", "If image has an QNX Screen external format, format must be VK_FORMAT_UNDEFINED", "1.3-extensions"}, {"VUID-VkImageViewCreateInfo-image-08958", "If image has an QNX Screen external format, the pNext chain must include a VkSamplerYcbcrConversionInfo structure with a conversion object created with the same external format as image", "1.3-extensions"}, {"VUID-VkImageViewCreateInfo-image-08959", "If image has an QNX Screen external format, all members of components must be the identity swizzle", "1.3-extensions"}, + {"VUID-VkImageViewCreateInfo-image-09360", "If image was created with a VkExternalFormatANDROID::externalFormat value of 0 and usage contains VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, then the image view's format features must contain at least one of VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT, VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT, or VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV", "1.3-extensions"}, {"VUID-VkImageViewCreateInfo-image-parameter", "image must be a valid VkImage handle", "1.3-extensions"}, {"VUID-VkImageViewCreateInfo-imageViewFormatReinterpretation-04466", "If the VK_KHR_portability_subset extension is enabled, and VkPhysicalDevicePortabilitySubsetFeaturesKHR::imageViewFormatReinterpretation is VK_FALSE, the VkFormat in format must not contain a different number of components, or a different number of bits in each component, than the format of the VkImage in image", "1.3-extensions"}, {"VUID-VkImageViewCreateInfo-imageViewFormatSwizzle-04465", "If the VK_KHR_portability_subset extension is enabled, and VkPhysicalDevicePortabilitySubsetFeaturesKHR::imageViewFormatSwizzle is VK_FALSE, all elements of components must have the identity swizzle", "1.3-extensions"}, {"VUID-VkImageViewCreateInfo-imageViewType-04973", "If viewType is VK_IMAGE_VIEW_TYPE_1D, VK_IMAGE_VIEW_TYPE_2D, or VK_IMAGE_VIEW_TYPE_3D; and subresourceRange.layerCount is not VK_REMAINING_ARRAY_LAYERS, then subresourceRange.layerCount must be 1", "1.3-extensions"}, {"VUID-VkImageViewCreateInfo-imageViewType-04974", "If viewType is VK_IMAGE_VIEW_TYPE_1D, VK_IMAGE_VIEW_TYPE_2D, or VK_IMAGE_VIEW_TYPE_3D; and subresourceRange.layerCount is VK_REMAINING_ARRAY_LAYERS, then the remaining number of layers must be 1", "1.3-extensions"}, {"VUID-VkImageViewCreateInfo-invocationMask-04993", "If the invocationMask feature is enabled, and if image was created with usage containing VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI, format must be VK_FORMAT_R8_UINT", "1.3-extensions"}, + {"VUID-VkImageViewCreateInfo-nullColorAttachmentWithExternalFormatResolve-09359", "If the nullColorAttachmentWithExternalFormatResolve property is VK_FALSE and usage contains VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, then the image view's format features must contain at least one of VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT, VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT, or VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV", "1.3-extensions"}, {"VUID-VkImageViewCreateInfo-pNext-01585", "If a VkImageFormatListCreateInfo structure was included in the pNext chain of the VkImageCreateInfo structure used when creating image and VkImageFormatListCreateInfo::viewFormatCount is not zero then format must be one of the formats in VkImageFormatListCreateInfo::pViewFormats", "1.3-extensions"}, {"VUID-VkImageViewCreateInfo-pNext-01970", "If the pNext chain includes a VkSamplerYcbcrConversionInfo structure with a conversion value other than VK_NULL_HANDLE, all members of components must have the identity swizzle", "1.3-extensions"}, {"VUID-VkImageViewCreateInfo-pNext-02662", "If the pNext chain includes a VkImageViewUsageCreateInfo structure, and image was not created with a VkImageStencilUsageCreateInfo structure included in the pNext chain of VkImageCreateInfo, its usage member must not include any bits that were not set in the usage member of the VkImageCreateInfo structure used to create image", "1.3-extensions"}, @@ -3846,7 +3868,6 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkImageViewCreateInfo-usage-04550", "If the attachmentFragmentShadingRate feature is enabled, and the usage for the image view includes VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, then the image view's format features must contain VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR", "1.3-extensions"}, {"VUID-VkImageViewCreateInfo-usage-04551", "If the attachmentFragmentShadingRate feature is enabled, the usage for the image view includes VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, and layeredShadingRateAttachments is VK_FALSE, subresourceRange.layerCount must be 1", "1.3-extensions"}, {"VUID-VkImageViewCreateInfo-usage-08931", "If usage contains VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, then the image view's format features must contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT or VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV", "1.3-extensions"}, - {"VUID-VkImageViewCreateInfo-usage-08932", "If usage contains VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, then the image view's format features must contain at least one of VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT, VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT or, VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV", "1.3-extensions"}, {"VUID-VkImageViewCreateInfo-viewType-01004", "If the imageCubeArray feature is not enabled, viewType must not be VK_IMAGE_VIEW_TYPE_CUBE_ARRAY", "1.3-extensions"}, {"VUID-VkImageViewCreateInfo-viewType-02960", "If viewType is VK_IMAGE_VIEW_TYPE_CUBE and subresourceRange.layerCount is not VK_REMAINING_ARRAY_LAYERS, subresourceRange.layerCount must be 6", "1.3-extensions"}, {"VUID-VkImageViewCreateInfo-viewType-02961", "If viewType is VK_IMAGE_VIEW_TYPE_CUBE_ARRAY and subresourceRange.layerCount is not VK_REMAINING_ARRAY_LAYERS, subresourceRange.layerCount must be a multiple of 6", "1.3-extensions"}, @@ -4047,6 +4068,14 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkInstanceCreateInfo-ppEnabledLayerNames-parameter", "If enabledLayerCount is not 0, ppEnabledLayerNames must be a valid pointer to an array of enabledLayerCount null-terminated UTF-8 strings", "1.3-extensions"}, {"VUID-VkInstanceCreateInfo-sType-sType", "sType must be VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO", "1.3-extensions"}, {"VUID-VkInstanceCreateInfo-sType-unique", "The sType value of each struct in the pNext chain must be unique, with the exception of structures of type VkDebugUtilsMessengerCreateInfoEXT or VkExportMetalObjectCreateInfoEXT", "1.3-extensions"}, + {"VUID-VkLatencySleepInfoNV-sType-sType", "sType must be VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV", "1.3-extensions"}, + {"VUID-VkLatencySleepInfoNV-signalSemaphore-09361", "signalSemaphore must be a timeline semaphore", "1.3-extensions"}, + {"VUID-VkLatencySleepInfoNV-signalSemaphore-parameter", "signalSemaphore must be a valid VkSemaphore handle", "1.3-extensions"}, + {"VUID-VkLatencySleepModeInfoNV-sType-sType", "sType must be VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV", "1.3-extensions"}, + {"VUID-VkLatencySubmissionPresentIdNV-sType-sType", "sType must be VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV", "1.3-extensions"}, + {"VUID-VkLatencySurfaceCapabilitiesNV-pPresentModes-parameter", "If presentModeCount is not 0, and pPresentModes is not NULL, pPresentModes must be a valid pointer to an array of presentModeCount VkPresentModeKHR values", "1.3-extensions"}, + {"VUID-VkLatencySurfaceCapabilitiesNV-sType-sType", "sType must be VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV", "1.3-extensions"}, + {"VUID-VkLatencyTimingsFrameReportNV-sType-sType", "sType must be VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV", "1.3-extensions"}, {"VUID-VkMacOSSurfaceCreateInfoMVK-flags-zerobitmask", "flags must be 0", "1.3-extensions"}, {"VUID-VkMacOSSurfaceCreateInfoMVK-pNext-pNext", "pNext must be NULL", "1.3-extensions"}, {"VUID-VkMacOSSurfaceCreateInfoMVK-pView-01317", "If pView is an NSView object, it must be a valid NSView, must be backed by a CALayer object of type CAMetalLayer, and vkCreateMacOSSurfaceMVK must be called on the main thread", "1.3-extensions"}, @@ -4422,6 +4451,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkOpticalFlowSessionCreateInfoNV-width-07581", "width must be greater than or equal to VkPhysicalDeviceOpticalFlowPropertiesNV::minWidth and less than or equal to VkPhysicalDeviceOpticalFlowPropertiesNV::maxWidth", "1.3-extensions"}, {"VUID-VkOpticalFlowSessionCreatePrivateDataInfoNV-pPrivateData-parameter", "pPrivateData must be a pointer value", "1.3-extensions"}, {"VUID-VkOpticalFlowSessionCreatePrivateDataInfoNV-sType-sType", "sType must be VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV", "1.3-extensions"}, + {"VUID-VkOutOfBandQueueTypeInfoNV-queueType-parameter", "queueType must be a valid VkOutOfBandQueueTypeNV value", "1.3-extensions"}, + {"VUID-VkOutOfBandQueueTypeInfoNV-sType-sType", "sType must be VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV", "1.3-extensions"}, {"VUID-VkPerformanceConfigurationAcquireInfoINTEL-pNext-pNext", "pNext must be NULL", "1.3-extensions"}, {"VUID-VkPerformanceConfigurationAcquireInfoINTEL-sType-sType", "sType must be VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL", "1.3-extensions"}, {"VUID-VkPerformanceConfigurationAcquireInfoINTEL-type-parameter", "type must be a valid VkPerformanceConfigurationTypeINTEL value", "1.3-extensions"}, @@ -4515,6 +4546,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkPhysicalDeviceExternalFenceInfo-handleType-parameter", "handleType must be a valid VkExternalFenceHandleTypeFlagBits value", "1.3-extensions"}, {"VUID-VkPhysicalDeviceExternalFenceInfo-pNext-pNext", "pNext must be NULL", "1.3-extensions"}, {"VUID-VkPhysicalDeviceExternalFenceInfo-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO", "1.3-extensions"}, + {"VUID-VkPhysicalDeviceExternalFormatResolveFeaturesANDROID-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID", "1.3-extensions"}, + {"VUID-VkPhysicalDeviceExternalFormatResolvePropertiesANDROID-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID", "1.3-extensions"}, {"VUID-VkPhysicalDeviceExternalImageFormatInfo-handleType-parameter", "If handleType is not 0, handleType must be a valid VkExternalMemoryHandleTypeFlagBits value", "1.3-extensions"}, {"VUID-VkPhysicalDeviceExternalImageFormatInfo-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO", "1.3-extensions"}, {"VUID-VkPhysicalDeviceExternalMemoryHostPropertiesEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT", "1.3-extensions"}, @@ -4648,7 +4681,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT", "1.3-extensions"}, {"VUID-VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT", "1.3-extensions"}, {"VUID-VkPhysicalDevicePrivateDataFeatures-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES", "1.3-extensions"}, - {"VUID-VkPhysicalDeviceProperties2-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 VkPhysicalDeviceAccelerationStructurePropertiesKHR, VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI, VkPhysicalDeviceConservativeRasterizationPropertiesEXT, VkPhysicalDeviceCooperativeMatrixPropertiesKHR, VkPhysicalDeviceCooperativeMatrixPropertiesNV, VkPhysicalDeviceCopyMemoryIndirectPropertiesNV, VkPhysicalDeviceCustomBorderColorPropertiesEXT, VkPhysicalDeviceDepthStencilResolveProperties, VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT, VkPhysicalDeviceDescriptorBufferPropertiesEXT, VkPhysicalDeviceDescriptorIndexingProperties, VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV, VkPhysicalDeviceDiscardRectanglePropertiesEXT, VkPhysicalDeviceDisplacementMicromapPropertiesNV, VkPhysicalDeviceDriverProperties, VkPhysicalDeviceDrmPropertiesEXT, VkPhysicalDeviceExtendedDynamicState3PropertiesEXT, VkPhysicalDeviceExternalMemoryHostPropertiesEXT, VkPhysicalDeviceFloatControlsProperties, VkPhysicalDeviceFragmentDensityMap2PropertiesEXT, VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM, VkPhysicalDeviceFragmentDensityMapPropertiesEXT, VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR, VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV, VkPhysicalDeviceFragmentShadingRatePropertiesKHR, VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT, VkPhysicalDeviceHostImageCopyPropertiesEXT, VkPhysicalDeviceIDProperties, VkPhysicalDeviceImageProcessing2PropertiesQCOM, VkPhysicalDeviceImageProcessingPropertiesQCOM, VkPhysicalDeviceInlineUniformBlockProperties, VkPhysicalDeviceLayeredDriverPropertiesMSFT, VkPhysicalDeviceLineRasterizationPropertiesEXT, VkPhysicalDeviceMaintenance3Properties, VkPhysicalDeviceMaintenance4Properties, VkPhysicalDeviceMaintenance5PropertiesKHR, VkPhysicalDeviceMemoryDecompressionPropertiesNV, VkPhysicalDeviceMeshShaderPropertiesEXT, VkPhysicalDeviceMeshShaderPropertiesNV, VkPhysicalDeviceMultiDrawPropertiesEXT, VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, VkPhysicalDeviceMultiviewProperties, VkPhysicalDeviceOpacityMicromapPropertiesEXT, VkPhysicalDeviceOpticalFlowPropertiesNV, VkPhysicalDevicePCIBusInfoPropertiesEXT, VkPhysicalDevicePerformanceQueryPropertiesKHR, VkPhysicalDevicePipelineRobustnessPropertiesEXT, VkPhysicalDevicePointClippingProperties, VkPhysicalDevicePortabilitySubsetPropertiesKHR, VkPhysicalDeviceProtectedMemoryProperties, VkPhysicalDeviceProvokingVertexPropertiesEXT, VkPhysicalDevicePushDescriptorPropertiesKHR, VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV, VkPhysicalDeviceRayTracingPipelinePropertiesKHR, VkPhysicalDeviceRayTracingPropertiesNV, VkPhysicalDeviceRobustness2PropertiesEXT, VkPhysicalDeviceSampleLocationsPropertiesEXT, VkPhysicalDeviceSamplerFilterMinmaxProperties, VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM, VkPhysicalDeviceShaderCoreProperties2AMD, VkPhysicalDeviceShaderCorePropertiesAMD, VkPhysicalDeviceShaderCorePropertiesARM, VkPhysicalDeviceShaderEnqueuePropertiesAMDX, VkPhysicalDeviceShaderIntegerDotProductProperties, VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT, VkPhysicalDeviceShaderObjectPropertiesEXT, VkPhysicalDeviceShaderSMBuiltinsPropertiesNV, VkPhysicalDeviceShaderTileImagePropertiesEXT, VkPhysicalDeviceShadingRateImagePropertiesNV, VkPhysicalDeviceSubgroupProperties, VkPhysicalDeviceSubgroupSizeControlProperties, VkPhysicalDeviceSubpassShadingPropertiesHUAWEI, VkPhysicalDeviceTexelBufferAlignmentProperties, VkPhysicalDeviceTimelineSemaphoreProperties, VkPhysicalDeviceTransformFeedbackPropertiesEXT, VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT, VkPhysicalDeviceVulkan11Properties, VkPhysicalDeviceVulkan12Properties, or VkPhysicalDeviceVulkan13Properties", "1.3-extensions"}, + {"VUID-VkPhysicalDeviceProperties2-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 VkPhysicalDeviceAccelerationStructurePropertiesKHR, VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI, VkPhysicalDeviceConservativeRasterizationPropertiesEXT, VkPhysicalDeviceCooperativeMatrixPropertiesKHR, VkPhysicalDeviceCooperativeMatrixPropertiesNV, VkPhysicalDeviceCopyMemoryIndirectPropertiesNV, VkPhysicalDeviceCustomBorderColorPropertiesEXT, VkPhysicalDeviceDepthStencilResolveProperties, VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT, VkPhysicalDeviceDescriptorBufferPropertiesEXT, VkPhysicalDeviceDescriptorIndexingProperties, VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV, VkPhysicalDeviceDiscardRectanglePropertiesEXT, VkPhysicalDeviceDisplacementMicromapPropertiesNV, VkPhysicalDeviceDriverProperties, VkPhysicalDeviceDrmPropertiesEXT, VkPhysicalDeviceExtendedDynamicState3PropertiesEXT, VkPhysicalDeviceExternalFormatResolvePropertiesANDROID, VkPhysicalDeviceExternalMemoryHostPropertiesEXT, VkPhysicalDeviceFloatControlsProperties, VkPhysicalDeviceFragmentDensityMap2PropertiesEXT, VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM, VkPhysicalDeviceFragmentDensityMapPropertiesEXT, VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR, VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV, VkPhysicalDeviceFragmentShadingRatePropertiesKHR, VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT, VkPhysicalDeviceHostImageCopyPropertiesEXT, VkPhysicalDeviceIDProperties, VkPhysicalDeviceImageProcessing2PropertiesQCOM, VkPhysicalDeviceImageProcessingPropertiesQCOM, VkPhysicalDeviceInlineUniformBlockProperties, VkPhysicalDeviceLayeredDriverPropertiesMSFT, VkPhysicalDeviceLineRasterizationPropertiesEXT, VkPhysicalDeviceMaintenance3Properties, VkPhysicalDeviceMaintenance4Properties, VkPhysicalDeviceMaintenance5PropertiesKHR, VkPhysicalDeviceMemoryDecompressionPropertiesNV, VkPhysicalDeviceMeshShaderPropertiesEXT, VkPhysicalDeviceMeshShaderPropertiesNV, VkPhysicalDeviceMultiDrawPropertiesEXT, VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, VkPhysicalDeviceMultiviewProperties, VkPhysicalDeviceOpacityMicromapPropertiesEXT, VkPhysicalDeviceOpticalFlowPropertiesNV, VkPhysicalDevicePCIBusInfoPropertiesEXT, VkPhysicalDevicePerformanceQueryPropertiesKHR, VkPhysicalDevicePipelineRobustnessPropertiesEXT, VkPhysicalDevicePointClippingProperties, VkPhysicalDevicePortabilitySubsetPropertiesKHR, VkPhysicalDeviceProtectedMemoryProperties, VkPhysicalDeviceProvokingVertexPropertiesEXT, VkPhysicalDevicePushDescriptorPropertiesKHR, VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV, VkPhysicalDeviceRayTracingPipelinePropertiesKHR, VkPhysicalDeviceRayTracingPropertiesNV, VkPhysicalDeviceRobustness2PropertiesEXT, VkPhysicalDeviceSampleLocationsPropertiesEXT, VkPhysicalDeviceSamplerFilterMinmaxProperties, VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM, VkPhysicalDeviceShaderCoreProperties2AMD, VkPhysicalDeviceShaderCorePropertiesAMD, VkPhysicalDeviceShaderCorePropertiesARM, VkPhysicalDeviceShaderEnqueuePropertiesAMDX, VkPhysicalDeviceShaderIntegerDotProductProperties, VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT, VkPhysicalDeviceShaderObjectPropertiesEXT, VkPhysicalDeviceShaderSMBuiltinsPropertiesNV, VkPhysicalDeviceShaderTileImagePropertiesEXT, VkPhysicalDeviceShadingRateImagePropertiesNV, VkPhysicalDeviceSubgroupProperties, VkPhysicalDeviceSubgroupSizeControlProperties, VkPhysicalDeviceSubpassShadingPropertiesHUAWEI, VkPhysicalDeviceTexelBufferAlignmentProperties, VkPhysicalDeviceTimelineSemaphoreProperties, VkPhysicalDeviceTransformFeedbackPropertiesEXT, VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT, VkPhysicalDeviceVulkan11Properties, VkPhysicalDeviceVulkan12Properties, or VkPhysicalDeviceVulkan13Properties", "1.3-extensions"}, {"VUID-VkPhysicalDeviceProperties2-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2", "1.3-extensions"}, {"VUID-VkPhysicalDeviceProperties2-sType-unique", "The sType value of each struct in the pNext chain must be unique", "1.3-extensions"}, {"VUID-VkPhysicalDeviceProtectedMemoryFeatures-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES", "1.3-extensions"}, @@ -5340,6 +5373,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkRenderPassBeginInfo-framebuffer-03216", "If framebuffer was created with a VkFramebufferCreateInfo::flags value that included VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, each element of the pAttachments member of a VkRenderPassAttachmentBeginInfo structure included in the pNext chain must be a VkImageView of an image created with a value of VkImageViewCreateInfo::format equal to the corresponding value of VkAttachmentDescription::format in renderPass", "1.3-extensions"}, {"VUID-VkRenderPassBeginInfo-framebuffer-04627", "If framebuffer was created with a VkFramebufferCreateInfo::flags value that included VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, each element of the pAttachments member of a VkRenderPassAttachmentBeginInfo structure included in the pNext chain must be a VkImageView with an inherited usage equal to the usage member of the corresponding element of VkFramebufferAttachmentsCreateInfo::pAttachmentImageInfos used to create framebuffer", "1.3-extensions"}, {"VUID-VkRenderPassBeginInfo-framebuffer-09047", "If framebuffer was created with a VkFramebufferCreateInfo::flags value that included VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, each element of the pAttachments member of a VkRenderPassAttachmentBeginInfo structure included in the pNext chain must be a VkImageView of an image created with a value of VkImageCreateInfo::samples equal to the corresponding value of VkAttachmentDescription::samples in renderPass , or VK_SAMPLE_COUNT_1_BIT if renderPass was created with VkMultisampledRenderToSingleSampledInfoEXT structure in the pNext chain with multisampledRenderToSingleSampledEnable equal to VK_TRUE", "1.3-extensions"}, + {"VUID-VkRenderPassBeginInfo-framebuffer-09353", "If framebuffer was created with a VkFramebufferCreateInfo::flags value that included VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, and the nullColorAttachmentWithExternalFormatResolve is VK_FALSE, the format of the color attachment for each subpass that includes an external format image as a resolve attachment must have a format equal to the value of VkAndroidHardwareBufferFormatResolvePropertiesANDROID::colorAttachmentFormat as returned by a call to vkGetAndroidHardwareBufferPropertiesANDROID for the Android hardware buffer that was used to create the image view use as its resolve attachment", "1.3-extensions"}, + {"VUID-VkRenderPassBeginInfo-framebuffer-09354", "If framebuffer was created with a VkFramebufferCreateInfo::flags value that included VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, each element of the pAttachments member of a VkRenderPassAttachmentBeginInfo structure included in the pNext chain must be a VkImageView of an image created with a value of VkExternalFormatANDROID::externalFormat equal to VkExternalFormatANDROID::externalFormat in the pNext chain of the corresponding VkAttachmentDescription2 structure used to create renderPass", "1.3-extensions"}, {"VUID-VkRenderPassBeginInfo-framebuffer-parameter", "framebuffer must be a valid VkFramebuffer handle", "1.3-extensions"}, {"VUID-VkRenderPassBeginInfo-pNext-02850", "If the pNext chain does not contain VkDeviceGroupRenderPassBeginInfo or its deviceRenderAreaCount member is equal to 0, renderArea.offset.x must be greater than or equal to 0", "1.3-extensions"}, {"VUID-VkRenderPassBeginInfo-pNext-02851", "If the pNext chain does not contain VkDeviceGroupRenderPassBeginInfo or its deviceRenderAreaCount member is equal to 0, renderArea.offset.y must be greater than or equal to 0", "1.3-extensions"}, @@ -5410,6 +5445,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkRenderPassCreateInfo2-pDependencies-03060", "For any element of pDependencies where its srcSubpass member equals its dstSubpass member, if the viewMask member of the corresponding element of pSubpasses includes more than one bit, its dependencyFlags member must include VK_DEPENDENCY_VIEW_LOCAL_BIT", "1.3-extensions"}, {"VUID-VkRenderPassCreateInfo2-pDependencies-parameter", "If dependencyCount is not 0, pDependencies must be a valid pointer to an array of dependencyCount valid VkSubpassDependency2 structures", "1.3-extensions"}, {"VUID-VkRenderPassCreateInfo2-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 VkRenderPassCreationControlEXT, VkRenderPassCreationFeedbackCreateInfoEXT, or VkRenderPassFragmentDensityMapCreateInfoEXT", "1.3-extensions"}, + {"VUID-VkRenderPassCreateInfo2-pResolveAttachments-09331", "If any element of pResolveAttachments of any element of pSubpasses references an attachment description with a format of VK_FORMAT_UNDEFINED, VkRenderPassFragmentDensityMapCreateInfoEXT::fragmentDensityMapAttachment->attachment must be VK_ATTACHMENT_UNUSED", "1.3-extensions"}, {"VUID-VkRenderPassCreateInfo2-pSubpasses-06473", "If the pSubpasses pNext chain includes a VkSubpassDescriptionDepthStencilResolve structure and the pDepthStencilResolveAttachment member is not NULL and does not have the value VK_ATTACHMENT_UNUSED, then attachment must be less than attachmentCount", "1.3-extensions"}, {"VUID-VkRenderPassCreateInfo2-pSubpasses-parameter", "pSubpasses must be a valid pointer to an array of subpassCount valid VkSubpassDescription2 structures", "1.3-extensions"}, {"VUID-VkRenderPassCreateInfo2-rasterizationSamples-04905", "If the pipeline is being created with fragment shader state, and the VK_QCOM_render_pass_shader_resolve extension is enabled, and if subpass has any input attachments, and if the subpass description contains VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM, then the sample count of the input attachments must equal rasterizationSamples", "1.3-extensions"}, @@ -5452,6 +5488,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkRenderingAreaInfoKHR-sType-sType", "sType must be VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR", "1.3-extensions"}, {"VUID-VkRenderingAttachmentInfo-clearValue-parameter", "clearValue must be a valid VkClearValue union", "1.3-extensions"}, {"VUID-VkRenderingAttachmentInfo-commonparent", "Both of imageView, and resolveImageView that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice", "1.3-extensions"}, + {"VUID-VkRenderingAttachmentInfo-externalFormatResolve-09323", "If externalFormatResolve is not enabled, resolveMode must not be VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID", "1.3-extensions"}, {"VUID-VkRenderingAttachmentInfo-imageLayout-parameter", "imageLayout must be a valid VkImageLayout value", "1.3-extensions"}, {"VUID-VkRenderingAttachmentInfo-imageView-06129", "If imageView is not VK_NULL_HANDLE and has a non-integer color format, resolveMode must be VK_RESOLVE_MODE_NONE or VK_RESOLVE_MODE_AVERAGE_BIT", "1.3-extensions"}, {"VUID-VkRenderingAttachmentInfo-imageView-06130", "If imageView is not VK_NULL_HANDLE and has an integer color format, resolveMode must be VK_RESOLVE_MODE_NONE or VK_RESOLVE_MODE_SAMPLE_ZERO_BIT", "1.3-extensions"}, @@ -5474,9 +5511,16 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkRenderingAttachmentInfo-imageView-06865", "If imageView is not VK_NULL_HANDLE, resolveImageView is not VK_NULL_HANDLE, and resolveMode is not VK_RESOLVE_MODE_NONE, imageView and resolveImageView must have the same VkFormat", "1.3-extensions"}, {"VUID-VkRenderingAttachmentInfo-imageView-parameter", "If imageView is not VK_NULL_HANDLE, imageView must be a valid VkImageView handle", "1.3-extensions"}, {"VUID-VkRenderingAttachmentInfo-loadOp-parameter", "loadOp must be a valid VkAttachmentLoadOp value", "1.3-extensions"}, + {"VUID-VkRenderingAttachmentInfo-nullColorAttachmentWithExternalFormatResolve-09325", "If the nullColorAttachmentWithExternalFormatResolve property is VK_TRUE and resolveMode is VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, resolveImageView must have been created with an image with a samples value of VK_SAMPLE_COUNT_1_BIT", "1.3-extensions"}, {"VUID-VkRenderingAttachmentInfo-pNext-pNext", "pNext must be NULL", "1.3-extensions"}, {"VUID-VkRenderingAttachmentInfo-resolveImageLayout-parameter", "resolveImageLayout must be a valid VkImageLayout value", "1.3-extensions"}, {"VUID-VkRenderingAttachmentInfo-resolveImageView-parameter", "If resolveImageView is not VK_NULL_HANDLE, resolveImageView must be a valid VkImageView handle", "1.3-extensions"}, + {"VUID-VkRenderingAttachmentInfo-resolveMode-09324", "If resolveMode is VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, resolveImageView must be a valid image view", "1.3-extensions"}, + {"VUID-VkRenderingAttachmentInfo-resolveMode-09326", "If resolveMode is VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, resolveImageView must have been created with an external format specified by VkExternalFormatANDROID", "1.3-extensions"}, + {"VUID-VkRenderingAttachmentInfo-resolveMode-09327", "If resolveMode is VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, resolveImageView must have been created with a subresourceRange.layerCount of 1", "1.3-extensions"}, + {"VUID-VkRenderingAttachmentInfo-resolveMode-09328", "If resolveMode is VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID and nullColorAttachmentWithExternalFormatResolve is VK_TRUE, imageView must be VK_NULL_HANDLE", "1.3-extensions"}, + {"VUID-VkRenderingAttachmentInfo-resolveMode-09329", "If resolveMode is VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID and nullColorAttachmentWithExternalFormatResolve is VK_FALSE, imageView must be a valid VkImageView", "1.3-extensions"}, + {"VUID-VkRenderingAttachmentInfo-resolveMode-09330", "If resolveMode is VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID and nullColorAttachmentWithExternalFormatResolve is VK_FALSE, imageView must have a format equal to the value of VkAndroidHardwareBufferFormatResolvePropertiesANDROID::colorAttachmentFormat as returned by a call to vkGetAndroidHardwareBufferPropertiesANDROID for the Android hardware buffer that was used to create resolveImageView", "1.3-extensions"}, {"VUID-VkRenderingAttachmentInfo-resolveMode-parameter", "If resolveMode is not 0, resolveMode must be a valid VkResolveModeFlagBits value", "1.3-extensions"}, {"VUID-VkRenderingAttachmentInfo-sType-sType", "sType must be VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO", "1.3-extensions"}, {"VUID-VkRenderingAttachmentInfo-storeOp-parameter", "storeOp must be a valid VkAttachmentStoreOp value", "1.3-extensions"}, @@ -5511,6 +5555,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkRenderingInfo-colorAttachmentCount-06100", "If colorAttachmentCount is not 0 and the imageView member of an element of pColorAttachments is not VK_NULL_HANDLE, the layout member of that element of pColorAttachments must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL, VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL, or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL", "1.3-extensions"}, {"VUID-VkRenderingInfo-colorAttachmentCount-06101", "If colorAttachmentCount is not 0 and the imageView member of an element of pColorAttachments is not VK_NULL_HANDLE, if the resolveMode member of that element of pColorAttachments is not VK_RESOLVE_MODE_NONE, its resolveImageLayout member must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL, VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL, or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL", "1.3-extensions"}, {"VUID-VkRenderingInfo-colorAttachmentCount-06106", "colorAttachmentCount must be less than or equal to VkPhysicalDeviceLimits::maxColorAttachments", "1.3-extensions"}, + {"VUID-VkRenderingInfo-colorAttachmentCount-09320", "If colorAttachmentCount is not 1, the resolveMode member of any element of pColorAttachments must not be VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID", "1.3-extensions"}, {"VUID-VkRenderingInfo-flags-parameter", "flags must be a valid combination of VkRenderingFlagBits values", "1.3-extensions"}, {"VUID-VkRenderingInfo-imageView-06107", "If the imageView member of a VkRenderingFragmentDensityMapAttachmentInfoEXT structure included in the pNext chain is not VK_NULL_HANDLE, and the fragmentDensityMapNonSubsampledImages feature is not enabled, valid imageView and resolveImageView members of pDepthAttachment, pStencilAttachment, and each element of pColorAttachments must be a VkImageView created with VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT", "1.3-extensions"}, {"VUID-VkRenderingInfo-imageView-06108", "If the imageView member of a VkRenderingFragmentDensityMapAttachmentInfoEXT structure included in the pNext chain is not VK_NULL_HANDLE, and viewMask is not 0, imageView must have a layerCount greater than or equal to the index of the most significant bit in viewMask", "1.3-extensions"}, @@ -5538,6 +5583,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkRenderingInfo-pDepthAttachment-06547", "If pDepthAttachment is not NULL and pDepthAttachment->imageView is not VK_NULL_HANDLE, pDepthAttachment->imageView must have been created with a format that includes a depth component", "1.3-extensions"}, {"VUID-VkRenderingInfo-pDepthAttachment-07732", "If pDepthAttachment is not NULL and pDepthAttachment->imageView is not VK_NULL_HANDLE, pDepthAttachment->layout must not be VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL", "1.3-extensions"}, {"VUID-VkRenderingInfo-pDepthAttachment-07733", "If pDepthAttachment is not NULL, pDepthAttachment->imageView is not VK_NULL_HANDLE, and pDepthAttachment->resolveMode is not VK_RESOLVE_MODE_NONE, pDepthAttachment->resolveImageLayout must not be VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL", "1.3-extensions"}, + {"VUID-VkRenderingInfo-pDepthAttachment-09318", "pDepthAttachment->resolveMode must not be VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID", "1.3-extensions"}, {"VUID-VkRenderingInfo-pDepthAttachment-parameter", "If pDepthAttachment is not NULL, pDepthAttachment must be a valid pointer to a valid VkRenderingAttachmentInfo structure", "1.3-extensions"}, {"VUID-VkRenderingInfo-pNext-06077", "If the pNext chain does not contain VkDeviceGroupRenderPassBeginInfo or its deviceRenderAreaCount member is equal to 0, renderArea.offset.x must be greater than or equal to 0", "1.3-extensions"}, {"VUID-VkRenderingInfo-pNext-06078", "If the pNext chain does not contain VkDeviceGroupRenderPassBeginInfo or its deviceRenderAreaCount member is equal to 0, renderArea.offset.y must be greater than or equal to 0", "1.3-extensions"}, @@ -5564,9 +5610,12 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkRenderingInfo-pStencilAttachment-06548", "If pStencilAttachment is not NULL and pStencilAttachment->imageView is not VK_NULL_HANDLE, pStencilAttachment->imageView must have been created with a format that includes a stencil aspect", "1.3-extensions"}, {"VUID-VkRenderingInfo-pStencilAttachment-07734", "If pStencilAttachment is not NULL and pStencilAttachment->imageView is not VK_NULL_HANDLE, pStencilAttachment->layout must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL", "1.3-extensions"}, {"VUID-VkRenderingInfo-pStencilAttachment-07735", "If pStencilAttachment is not NULL, pStencilAttachment->imageView is not VK_NULL_HANDLE, and pStencilAttachment->resolveMode is not VK_RESOLVE_MODE_NONE, pStencilAttachment->resolveImageLayout must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL", "1.3-extensions"}, + {"VUID-VkRenderingInfo-pStencilAttachment-09319", "pStencilAttachment->resolveMode must not be VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID", "1.3-extensions"}, {"VUID-VkRenderingInfo-pStencilAttachment-parameter", "If pStencilAttachment is not NULL, pStencilAttachment must be a valid pointer to a valid VkRenderingAttachmentInfo structure", "1.3-extensions"}, {"VUID-VkRenderingInfo-perViewRenderAreaCount-07857", "If the perViewRenderAreaCount member of a VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM structure included in the pNext chain is not 0, then the multiviewPerViewRenderAreas feature must be enabled.", "1.3-extensions"}, {"VUID-VkRenderingInfo-perViewRenderAreaCount-07858", "If the perViewRenderAreaCount member of a VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM structure included in the pNext chain is not 0, then renderArea must specify a render area that includes the union of all per view render areas.", "1.3-extensions"}, + {"VUID-VkRenderingInfo-resolveMode-09321", "If the resolveMode of any element of pColorAttachments is VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView must be VK_NULL_HANDLE", "1.3-extensions"}, + {"VUID-VkRenderingInfo-resolveMode-09322", "If the resolveMode of any element of pColorAttachments is VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView must be VK_NULL_HANDLE", "1.3-extensions"}, {"VUID-VkRenderingInfo-sType-sType", "sType must be VK_STRUCTURE_TYPE_RENDERING_INFO", "1.3-extensions"}, {"VUID-VkRenderingInfo-sType-unique", "The sType value of each struct in the pNext chain must be unique", "1.3-extensions"}, {"VUID-VkRenderingInfo-viewMask-06069", "If viewMask is 0, layerCount must not be 0", "1.3-extensions"}, @@ -5799,6 +5848,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkSemaphoreWaitInfo-pValues-parameter", "pValues must be a valid pointer to an array of semaphoreCount uint64_t values", "1.3-extensions"}, {"VUID-VkSemaphoreWaitInfo-sType-sType", "sType must be VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO", "1.3-extensions"}, {"VUID-VkSemaphoreWaitInfo-semaphoreCount-arraylength", "semaphoreCount must be greater than 0", "1.3-extensions"}, + {"VUID-VkSetLatencyMarkerInfoNV-marker-parameter", "marker must be a valid VkLatencyMarkerNV value", "1.3-extensions"}, + {"VUID-VkSetLatencyMarkerInfoNV-sType-sType", "sType must be VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV", "1.3-extensions"}, {"VUID-VkShaderCreateInfoEXT-codeSize-08735", "If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, codeSize must be a multiple of 4", "1.3-extensions"}, {"VUID-VkShaderCreateInfoEXT-codeSize-arraylength", "codeSize must be greater than 0", "1.3-extensions"}, {"VUID-VkShaderCreateInfoEXT-codeType-08872", "If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, and stage is VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT, pCode must contain an OpExecutionMode instruction specifying the type of subdivision", "1.3-extensions"}, @@ -5957,7 +6008,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkSubmitInfo-pNext-03241", "If the pNext chain of this structure includes a VkTimelineSemaphoreSubmitInfo structure and any element of pSignalSemaphores was created with a VkSemaphoreType of VK_SEMAPHORE_TYPE_TIMELINE, then its signalSemaphoreValueCount member must equal signalSemaphoreCount", "1.3-extensions"}, {"VUID-VkSubmitInfo-pNext-04120", "If the pNext chain of this structure does not include a VkProtectedSubmitInfo structure with protectedSubmit set to VK_TRUE, then each element of the pCommandBuffers array must be an unprotected command buffer", "1.3-extensions"}, {"VUID-VkSubmitInfo-pNext-04148", "If the pNext chain of this structure includes a VkProtectedSubmitInfo structure with protectedSubmit set to VK_TRUE, then each element of the pCommandBuffers array must be a protected command buffer", "1.3-extensions"}, - {"VUID-VkSubmitInfo-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 VkAmigoProfilingSubmitInfoSEC, VkD3D12FenceSubmitInfoKHR, VkDeviceGroupSubmitInfo, VkFrameBoundaryEXT, VkPerformanceQuerySubmitInfoKHR, VkProtectedSubmitInfo, VkTimelineSemaphoreSubmitInfo, VkWin32KeyedMutexAcquireReleaseInfoKHR, or VkWin32KeyedMutexAcquireReleaseInfoNV", "1.3-extensions"}, + {"VUID-VkSubmitInfo-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 VkAmigoProfilingSubmitInfoSEC, VkD3D12FenceSubmitInfoKHR, VkDeviceGroupSubmitInfo, VkFrameBoundaryEXT, VkLatencySubmissionPresentIdNV, VkPerformanceQuerySubmitInfoKHR, VkProtectedSubmitInfo, VkTimelineSemaphoreSubmitInfo, VkWin32KeyedMutexAcquireReleaseInfoKHR, or VkWin32KeyedMutexAcquireReleaseInfoNV", "1.3-extensions"}, {"VUID-VkSubmitInfo-pSignalSemaphores-03242", "For each element of pSignalSemaphores created with a VkSemaphoreType of VK_SEMAPHORE_TYPE_TIMELINE the corresponding element of VkTimelineSemaphoreSubmitInfo::pSignalSemaphoreValues must have a value greater than the current value of the semaphore when the semaphore signal operation is executed", "1.3-extensions"}, {"VUID-VkSubmitInfo-pSignalSemaphores-03244", "For each element of pSignalSemaphores created with a VkSemaphoreType of VK_SEMAPHORE_TYPE_TIMELINE the corresponding element of VkTimelineSemaphoreSubmitInfo::pSignalSemaphoreValues must have a value which does not differ from the current value of the semaphore or the value of any outstanding semaphore wait or signal operation on that semaphore by more than maxTimelineSemaphoreValueDifference", "1.3-extensions"}, {"VUID-VkSubmitInfo-pSignalSemaphores-parameter", "If signalSemaphoreCount is not 0, pSignalSemaphores must be a valid pointer to an array of signalSemaphoreCount valid VkSemaphore handles", "1.3-extensions"}, @@ -5983,7 +6034,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkSubmitInfo2-flags-03887", "If flags does not include VK_SUBMIT_PROTECTED_BIT, each element of pCommandBuffers must not be a protected command buffer", "1.3-extensions"}, {"VUID-VkSubmitInfo2-flags-parameter", "flags must be a valid combination of VkSubmitFlagBits values", "1.3-extensions"}, {"VUID-VkSubmitInfo2-pCommandBufferInfos-parameter", "If commandBufferInfoCount is not 0, pCommandBufferInfos must be a valid pointer to an array of commandBufferInfoCount valid VkCommandBufferSubmitInfo structures", "1.3-extensions"}, - {"VUID-VkSubmitInfo2-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 VkFrameBoundaryEXT, VkPerformanceQuerySubmitInfoKHR, VkWin32KeyedMutexAcquireReleaseInfoKHR, or VkWin32KeyedMutexAcquireReleaseInfoNV", "1.3-extensions"}, + {"VUID-VkSubmitInfo2-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 VkFrameBoundaryEXT, VkLatencySubmissionPresentIdNV, VkPerformanceQuerySubmitInfoKHR, VkWin32KeyedMutexAcquireReleaseInfoKHR, or VkWin32KeyedMutexAcquireReleaseInfoNV", "1.3-extensions"}, {"VUID-VkSubmitInfo2-pSignalSemaphoreInfos-parameter", "If signalSemaphoreInfoCount is not 0, pSignalSemaphoreInfos must be a valid pointer to an array of signalSemaphoreInfoCount valid VkSemaphoreSubmitInfo structures", "1.3-extensions"}, {"VUID-VkSubmitInfo2-pWaitSemaphoreInfos-parameter", "If waitSemaphoreInfoCount is not 0, pWaitSemaphoreInfos must be a valid pointer to an array of waitSemaphoreInfoCount valid VkSemaphoreSubmitInfo structures", "1.3-extensions"}, {"VUID-VkSubmitInfo2-sType-sType", "sType must be VK_STRUCTURE_TYPE_SUBMIT_INFO_2", "1.3-extensions"}, @@ -6135,6 +6186,15 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkSubpassDescription2-attachment-06922", "If the attachment member of an element of pColorAttachments is not VK_ATTACHMENT_UNUSED, its layout member must not be VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR", "1.3-extensions"}, {"VUID-VkSubpassDescription2-attachment-06923", "If the attachment member of an element of pResolveAttachments is not VK_ATTACHMENT_UNUSED, its layout member must not be VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR", "1.3-extensions"}, {"VUID-VkSubpassDescription2-colorAttachmentCount-03063", "colorAttachmentCount must be less than or equal to VkPhysicalDeviceLimits::maxColorAttachments", "1.3-extensions"}, + {"VUID-VkSubpassDescription2-externalFormatResolve-09335", "If externalFormatResolve is not enabled and pResolveAttachments is not NULL, for each resolve attachment that does not have the value VK_ATTACHMENT_UNUSED, the corresponding color attachment must not have the value VK_ATTACHMENT_UNUSED", "1.3-extensions"}, + {"VUID-VkSubpassDescription2-externalFormatResolve-09338", "If externalFormatResolve is not enabled and pResolveAttachments is not NULL, for each resolve attachment that is not VK_ATTACHMENT_UNUSED, the corresponding color attachment must not have a sample count of VK_SAMPLE_COUNT_1_BIT", "1.3-extensions"}, + {"VUID-VkSubpassDescription2-externalFormatResolve-09339", "If externalFormatResolve is not enabled, each element of pResolveAttachments must have the same VkFormat as its corresponding color attachment", "1.3-extensions"}, + {"VUID-VkSubpassDescription2-externalFormatResolve-09340", "If the externalFormatResolve feature is not enabled, all attachments in pInputAttachments that are not VK_ATTACHMENT_UNUSED must have image formats whose potential format features contain at least VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT or VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT", "1.3-extensions"}, + {"VUID-VkSubpassDescription2-externalFormatResolve-09344", "If externalFormatResolve is enabled, pResolveAttachments is not NULL, and colorAttachmentCount is not 1, any element of pResolveAttachments that is not VK_ATTACHMENT_UNUSED, must not have a format of VK_FORMAT_UNDEFINED", "1.3-extensions"}, + {"VUID-VkSubpassDescription2-externalFormatResolve-09345", "If externalFormatResolve is enabled, pResolveAttachments is not NULL, any element of pResolveAttachments is not VK_ATTACHMENT_UNUSED and has a format of VK_FORMAT_UNDEFINED, and the corresponding element of pColorAttachments is not VK_ATTACHMENT_UNUSED, the color attachment must have a samples value of 1", "1.3-extensions"}, + {"VUID-VkSubpassDescription2-externalFormatResolve-09346", "If externalFormatResolve is enabled, pResolveAttachments is not NULL, and any element of pResolveAttachments is not VK_ATTACHMENT_UNUSED and has a format of VK_FORMAT_UNDEFINED, viewMask must be 0", "1.3-extensions"}, + {"VUID-VkSubpassDescription2-externalFormatResolve-09347", "If externalFormatResolve is enabled, pResolveAttachments is not NULL, and any element of pResolveAttachments is not VK_ATTACHMENT_UNUSED and has a format of VK_FORMAT_UNDEFINED, VkFragmentShadingRateAttachmentInfoKHR::pFragmentShadingRateAttachment must either be NULL or a VkAttachmentReference2 structure with a attachment value of VK_ATTACHMENT_UNUSED", "1.3-extensions"}, + {"VUID-VkSubpassDescription2-externalFormatResolve-09348", "If externalFormatResolve is enabled, pResolveAttachments is not NULL, and any element of pResolveAttachments is not VK_ATTACHMENT_UNUSED and has a format of VK_FORMAT_UNDEFINED, elements of pInputAttachments referencing either a color attachment or resolve attachment used in this subpass must not include VK_IMAGE_ASPECT_PLANE_i_BIT_EXT for any index i in its aspectMask", "1.3-extensions"}, {"VUID-VkSubpassDescription2-flags-03076", "If flags includes VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX, it must also include VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX", "1.3-extensions"}, {"VUID-VkSubpassDescription2-flags-parameter", "flags must be a valid combination of VkSubpassDescriptionFlagBits values", "1.3-extensions"}, {"VUID-VkSubpassDescription2-layout-02528", "If any attachment is used by more than one VkAttachmentReference2 member, then each use must use the same layout", "1.3-extensions"}, @@ -6145,24 +6205,24 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkSubpassDescription2-multisampledRenderToSingleSampled-06869", "If none of the VK_AMD_mixed_attachment_samples extension, the VK_NV_framebuffer_mixed_samples extension, or the multisampledRenderToSingleSampled feature are enabled, all attachments in pColorAttachments that are not VK_ATTACHMENT_UNUSED must have the same sample count", "1.3-extensions"}, {"VUID-VkSubpassDescription2-multisampledRenderToSingleSampled-06872", "If none of the VK_AMD_mixed_attachment_samples extension, the VK_NV_framebuffer_mixed_samples extension, or the multisampledRenderToSingleSampled feature are enabled, all attachments in pDepthStencilAttachment or pColorAttachments that are not VK_ATTACHMENT_UNUSED must have the same sample count", "1.3-extensions"}, {"VUID-VkSubpassDescription2-multiview-06558", "If the multiview feature is not enabled, viewMask must be 0", "1.3-extensions"}, + {"VUID-VkSubpassDescription2-nullColorAttachmentWithExternalFormatResolve-09336", "If the nullColorAttachmentWithExternalFormatResolve property is VK_FALSE and pResolveAttachments is not NULL, for each resolve attachment that has a format of VK_FORMAT_UNDEFINED, the corresponding color attachment must not have the value VK_ATTACHMENT_UNUSED", "1.3-extensions"}, + {"VUID-VkSubpassDescription2-nullColorAttachmentWithExternalFormatResolve-09337", "If the nullColorAttachmentWithExternalFormatResolve property is VK_TRUE and pResolveAttachments is not NULL, for each resolve attachment that has a format of VK_FORMAT_UNDEFINED, the corresponding color attachment must have the value VK_ATTACHMENT_UNUSED", "1.3-extensions"}, + {"VUID-VkSubpassDescription2-nullColorAttachmentWithExternalFormatResolve-09341", "If the nullColorAttachmentWithExternalFormatResolve property is VK_FALSE, all attachments in pInputAttachments that are not VK_ATTACHMENT_UNUSED must have image formats whose potential format features contain at least VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT or VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT", "1.3-extensions"}, {"VUID-VkSubpassDescription2-pColorAttachments-02898", "All attachments in pColorAttachments that are not VK_ATTACHMENT_UNUSED must have image formats whose potential format features contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT", "1.3-extensions"}, {"VUID-VkSubpassDescription2-pColorAttachments-03070", "If the VK_AMD_mixed_attachment_samples extension is enabled, all attachments in pColorAttachments that are not VK_ATTACHMENT_UNUSED must have a sample count that is smaller than or equal to the sample count of pDepthStencilAttachment if it is not VK_ATTACHMENT_UNUSED", "1.3-extensions"}, {"VUID-VkSubpassDescription2-pColorAttachments-parameter", "If colorAttachmentCount is not 0, pColorAttachments must be a valid pointer to an array of colorAttachmentCount valid VkAttachmentReference2 structures", "1.3-extensions"}, {"VUID-VkSubpassDescription2-pDepthStencilAttachment-02900", "If pDepthStencilAttachment is not NULL and the attachment is not VK_ATTACHMENT_UNUSED then it must have an image format whose potential format features contain VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT", "1.3-extensions"}, {"VUID-VkSubpassDescription2-pDepthStencilAttachment-04440", "An attachment must not be used in both pDepthStencilAttachment and pColorAttachments", "1.3-extensions"}, {"VUID-VkSubpassDescription2-pDepthStencilAttachment-parameter", "If pDepthStencilAttachment is not NULL, pDepthStencilAttachment must be a valid pointer to a valid VkAttachmentReference2 structure", "1.3-extensions"}, - {"VUID-VkSubpassDescription2-pInputAttachments-02897", "All attachments in pInputAttachments that are not VK_ATTACHMENT_UNUSED must have image formats whose potential format features contain at least VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT or VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT", "1.3-extensions"}, + {"VUID-VkSubpassDescription2-pInputAttachments-09342", "All attachments in pInputAttachments that are not VK_ATTACHMENT_UNUSED and do not have a non-zero value of VkExternalFormatANDROID::externalFormat must have image formats whose potential format features contain at least VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT or VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT", "1.3-extensions"}, {"VUID-VkSubpassDescription2-pInputAttachments-parameter", "If inputAttachmentCount is not 0, pInputAttachments must be a valid pointer to an array of inputAttachmentCount valid VkAttachmentReference2 structures", "1.3-extensions"}, {"VUID-VkSubpassDescription2-pNext-06870", "If the pNext chain includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then all attachments in pColorAttachments and pDepthStencilAttachment that are not VK_ATTACHMENT_UNUSED must have a sample count that is either VK_SAMPLE_COUNT_1_BIT or equal to VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples", "1.3-extensions"}, {"VUID-VkSubpassDescription2-pNext-06871", "If the pNext chain includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, and pDepthStencilAttachment is not NULL, does not have the value VK_ATTACHMENT_UNUSED, and has a sample count of VK_SAMPLE_COUNT_1_BIT, the pNext chain must also include a VkSubpassDescriptionDepthStencilResolve structure with pDepthStencilResolveAttachment that is either NULL or has the value VK_ATTACHMENT_UNUSED", "1.3-extensions"}, {"VUID-VkSubpassDescription2-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 VkFragmentShadingRateAttachmentInfoKHR, VkMultisampledRenderToSingleSampledInfoEXT, VkRenderPassCreationControlEXT, VkRenderPassSubpassFeedbackCreateInfoEXT, or VkSubpassDescriptionDepthStencilResolve", "1.3-extensions"}, {"VUID-VkSubpassDescription2-pPreserveAttachments-03074", "Each element of pPreserveAttachments must not also be an element of any other member of the subpass description", "1.3-extensions"}, {"VUID-VkSubpassDescription2-pPreserveAttachments-parameter", "If preserveAttachmentCount is not 0, pPreserveAttachments must be a valid pointer to an array of preserveAttachmentCount uint32_t values", "1.3-extensions"}, - {"VUID-VkSubpassDescription2-pResolveAttachments-02899", "All attachments in pResolveAttachments that are not VK_ATTACHMENT_UNUSED must have image formats whose potential format features contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT", "1.3-extensions"}, - {"VUID-VkSubpassDescription2-pResolveAttachments-03065", "If pResolveAttachments is not NULL, for each resolve attachment that does not have the value VK_ATTACHMENT_UNUSED, the corresponding color attachment must not have the value VK_ATTACHMENT_UNUSED", "1.3-extensions"}, - {"VUID-VkSubpassDescription2-pResolveAttachments-03066", "If pResolveAttachments is not NULL, for each resolve attachment that is not VK_ATTACHMENT_UNUSED, the corresponding color attachment must not have a sample count of VK_SAMPLE_COUNT_1_BIT", "1.3-extensions"}, {"VUID-VkSubpassDescription2-pResolveAttachments-03067", "If pResolveAttachments is not NULL, each resolve attachment that is not VK_ATTACHMENT_UNUSED must have a sample count of VK_SAMPLE_COUNT_1_BIT", "1.3-extensions"}, - {"VUID-VkSubpassDescription2-pResolveAttachments-03068", "Each element of pResolveAttachments must have the same VkFormat as its corresponding color attachment", "1.3-extensions"}, + {"VUID-VkSubpassDescription2-pResolveAttachments-09343", "All attachments in pResolveAttachments that are not VK_ATTACHMENT_UNUSED and do not have an image format of VK_FORMAT_UNDEFINED must have image formats whose potential format features contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT", "1.3-extensions"}, {"VUID-VkSubpassDescription2-pResolveAttachments-parameter", "If colorAttachmentCount is not 0, and pResolveAttachments is not NULL, pResolveAttachments must be a valid pointer to an array of colorAttachmentCount valid VkAttachmentReference2 structures", "1.3-extensions"}, {"VUID-VkSubpassDescription2-pipelineBindPoint-04953", "pipelineBindPoint must be VK_PIPELINE_BIND_POINT_GRAPHICS or VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI", "1.3-extensions"}, {"VUID-VkSubpassDescription2-pipelineBindPoint-parameter", "pipelineBindPoint must be a valid VkPipelineBindPoint value", "1.3-extensions"}, @@ -6215,7 +6275,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkSurfaceCapabilities2EXT-pNext-pNext", "pNext must be NULL", "1.3-extensions"}, {"VUID-VkSurfaceCapabilities2EXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT", "1.3-extensions"}, {"VUID-VkSurfaceCapabilities2EXT-supportedSurfaceCounters-01246", "supportedSurfaceCounters must not include VK_SURFACE_COUNTER_VBLANK_BIT_EXT unless the surface queried is a display surface", "1.3-extensions"}, - {"VUID-VkSurfaceCapabilities2KHR-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 VkDisplayNativeHdrSurfaceCapabilitiesAMD, VkSharedPresentSurfaceCapabilitiesKHR, VkSurfaceCapabilitiesFullScreenExclusiveEXT, VkSurfaceCapabilitiesPresentBarrierNV, VkSurfacePresentModeCompatibilityEXT, VkSurfacePresentScalingCapabilitiesEXT, or VkSurfaceProtectedCapabilitiesKHR", "1.3-extensions"}, + {"VUID-VkSurfaceCapabilities2KHR-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 VkDisplayNativeHdrSurfaceCapabilitiesAMD, VkLatencySurfaceCapabilitiesNV, VkSharedPresentSurfaceCapabilitiesKHR, VkSurfaceCapabilitiesFullScreenExclusiveEXT, VkSurfaceCapabilitiesPresentBarrierNV, VkSurfacePresentModeCompatibilityEXT, VkSurfacePresentScalingCapabilitiesEXT, or VkSurfaceProtectedCapabilitiesKHR", "1.3-extensions"}, {"VUID-VkSurfaceCapabilities2KHR-sType-sType", "sType must be VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR", "1.3-extensions"}, {"VUID-VkSurfaceCapabilities2KHR-sType-unique", "The sType value of each struct in the pNext chain must be unique", "1.3-extensions"}, {"VUID-VkSurfaceCapabilitiesFullScreenExclusiveEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT", "1.3-extensions"}, @@ -6270,7 +6330,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkSwapchainCreateInfoKHR-pNext-06752", "If the imageCompressionControlSwapchain feature is not enabled, the pNext chain must not include an VkImageCompressionControlEXT structure", "1.3-extensions"}, {"VUID-VkSwapchainCreateInfoKHR-pNext-07781", "If a VkSwapchainPresentScalingCreateInfoEXT structure was not included in the pNext chain, or it is included and VkSwapchainPresentScalingCreateInfoEXT::scalingBehavior is zero then imageExtent must be between minImageExtent and maxImageExtent, inclusive, where minImageExtent and maxImageExtent are members of the VkSurfaceCapabilitiesKHR structure returned by vkGetPhysicalDeviceSurfaceCapabilitiesKHR for the surface", "1.3-extensions"}, {"VUID-VkSwapchainCreateInfoKHR-pNext-07782", "If a VkSwapchainPresentScalingCreateInfoEXT structure was included in the pNext chain and VkSwapchainPresentScalingCreateInfoEXT::scalingBehavior is not zero then imageExtent must be between minScaledImageExtent and maxScaledImageExtent, inclusive, where minScaledImageExtent and maxScaledImageExtent are members of the VkSurfacePresentScalingCapabilitiesEXT structure returned by vkGetPhysicalDeviceSurfaceCapabilities2KHR for the surface and presentMode", "1.3-extensions"}, - {"VUID-VkSwapchainCreateInfoKHR-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 VkDeviceGroupSwapchainCreateInfoKHR, VkImageCompressionControlEXT, VkImageFormatListCreateInfo, VkSurfaceFullScreenExclusiveInfoEXT, VkSurfaceFullScreenExclusiveWin32InfoEXT, VkSwapchainCounterCreateInfoEXT, VkSwapchainDisplayNativeHdrCreateInfoAMD, VkSwapchainPresentBarrierCreateInfoNV, VkSwapchainPresentModesCreateInfoEXT, or VkSwapchainPresentScalingCreateInfoEXT", "1.3-extensions"}, + {"VUID-VkSwapchainCreateInfoKHR-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 VkDeviceGroupSwapchainCreateInfoKHR, VkImageCompressionControlEXT, VkImageFormatListCreateInfo, VkSurfaceFullScreenExclusiveInfoEXT, VkSurfaceFullScreenExclusiveWin32InfoEXT, VkSwapchainCounterCreateInfoEXT, VkSwapchainDisplayNativeHdrCreateInfoAMD, VkSwapchainLatencyCreateInfoNV, VkSwapchainPresentBarrierCreateInfoNV, VkSwapchainPresentModesCreateInfoEXT, or VkSwapchainPresentScalingCreateInfoEXT", "1.3-extensions"}, {"VUID-VkSwapchainCreateInfoKHR-physicalDeviceCount-01429", "If the logical device was created with VkDeviceGroupDeviceCreateInfo::physicalDeviceCount equal to 1, flags must not contain VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR", "1.3-extensions"}, {"VUID-VkSwapchainCreateInfoKHR-preTransform-01279", "preTransform must be one of the bits present in the supportedTransforms member of the VkSurfaceCapabilitiesKHR structure returned by vkGetPhysicalDeviceSurfaceCapabilitiesKHR for the surface", "1.3-extensions"}, {"VUID-VkSwapchainCreateInfoKHR-preTransform-parameter", "preTransform must be a valid VkSurfaceTransformFlagBitsKHR value", "1.3-extensions"}, @@ -6284,6 +6344,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkSwapchainCreateInfoKHR-surface-parameter", "surface must be a valid VkSurfaceKHR handle", "1.3-extensions"}, {"VUID-VkSwapchainDisplayNativeHdrCreateInfoAMD-localDimmingEnable-04449", "It is only valid to set localDimmingEnable to VK_TRUE if VkDisplayNativeHdrSurfaceCapabilitiesAMD::localDimmingSupport is supported", "1.3-extensions"}, {"VUID-VkSwapchainDisplayNativeHdrCreateInfoAMD-sType-sType", "sType must be VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD", "1.3-extensions"}, + {"VUID-VkSwapchainLatencyCreateInfoNV-sType-sType", "sType must be VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV", "1.3-extensions"}, {"VUID-VkSwapchainPresentBarrierCreateInfoNV-sType-sType", "sType must be VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV", "1.3-extensions"}, {"VUID-VkSwapchainPresentFenceInfoEXT-pFences-07758", "Each element of pFences must be unsignaled", "1.3-extensions"}, {"VUID-VkSwapchainPresentFenceInfoEXT-pFences-07759", "Each element of pFences must not be associated with any other queue command that has not yet completed execution on that queue", "1.3-extensions"}, @@ -7695,6 +7756,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdClearAttachments-aspectMask-07271", "If the aspectMask member of any element of pAttachments contains VK_IMAGE_ASPECT_COLOR_BIT, the colorAttachment must be a valid color attachment index in the current render pass instance", "1.3-extensions"}, {"VUID-vkCmdClearAttachments-aspectMask-07884", "If the current render pass instance does not use dynamic rendering, and the aspectMask member of any element of pAttachments contains VK_IMAGE_ASPECT_DEPTH_BIT, the current subpass instance's depth-stencil attachment must be either VK_ATTACHMENT_UNUSED or the attachment format must contain a depth component", "1.3-extensions"}, {"VUID-vkCmdClearAttachments-aspectMask-07885", "If the current render pass instance does not use dynamic rendering, and the aspectMask member of any element of pAttachments contains VK_IMAGE_ASPECT_STENCIL_BIT, the current subpass instance's depth-stencil attachment must be either VK_ATTACHMENT_UNUSED or the attachment format must contain a stencil component", "1.3-extensions"}, + {"VUID-vkCmdClearAttachments-aspectMask-09298", "If the subpass this is recorded in performs an external format resolve, the aspectMask member of any element of pAttachments must not include VK_IMAGE_ASPECT_PLANE_i_BIT_EXT for any index i", "1.3-extensions"}, {"VUID-vkCmdClearAttachments-attachmentCount-arraylength", "attachmentCount must be greater than 0", "1.3-extensions"}, {"VUID-vkCmdClearAttachments-baseArrayLayer-00018", "If the render pass instance this is recorded in uses multiview, then baseArrayLayer must be zero and layerCount must be one", "1.3-extensions"}, {"VUID-vkCmdClearAttachments-commandBuffer-02504", "If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, each attachment to be cleared must not be a protected image", "1.3-extensions"}, @@ -8813,10 +8875,10 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"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 in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDraw-None-07834", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then vkCmdSetDepthBias or vkCmdSetDepthBias2EXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDraw-None-07835", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then vkCmdSetBlendConstants must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDraw-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDraw-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDraw-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDraw-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDraw-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled, and if the current depthBoundsTestEnable state is VK_TRUE, then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDraw-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDraw-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDraw-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDraw-None-07840", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CULL_MODE dynamic state enabled then vkCmdSetCullMode must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDraw-None-07841", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_FRONT_FACE dynamic state enabled then vkCmdSetFrontFace must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDraw-None-07842", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, @@ -8946,6 +9008,12 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDraw-None-09211", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the rasterizationSamples member of that structure", "1.3-extensions"}, {"VUID-vkCmdDraw-None-09232", "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDraw-None-09237", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage, then vkCmdSetTessellationDomainOriginEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDraw-None-09363", "If there is no shader object bound to any graphics stage, the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDraw-None-09364", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled, then vkCmdSetColorBlendEnableEXT must have set the blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDraw-None-09365", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDraw-None-09366", "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 vkCmdSetColorBlendEnableEXT must have set blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDraw-None-09368", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently 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->width to 1 prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDraw-None-09369", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently 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", "1.3-extensions"}, {"VUID-vkCmdDraw-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", "1.3-extensions"}, {"VUID-vkCmdDraw-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", "1.3-extensions"}, {"VUID-vkCmdDraw-OpImageBlockMatchSSDQCOM-06974", "If OpImageBlockMatchSSDQCOM is used to read from an VkImageView as a result of this command, then the image view's format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM", "1.3-extensions"}, @@ -8978,6 +9046,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDraw-blendEnable-04727", "If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view's format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the blendEnable member of the corresponding element of the pAttachments member of pColorBlendState must be VK_FALSE", "1.3-extensions"}, {"VUID-vkCmdDraw-colorAttachmentCount-06179", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount equal to VkRenderingInfo::colorAttachmentCount", "1.3-extensions"}, {"VUID-vkCmdDraw-colorAttachmentCount-06185", "If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount parameter greater than 0, then each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDraw-colorAttachmentCount-09362", "If the current render pass instance was begun with vkCmdBeginRendering, with a VkRenderingInfo::colorAttachmentCount equal to 1, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a resolveImageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDraw-colorAttachmentCount-09372", "If the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, and a fragment shader is bound, it must not declare the DepthReplacing or StencilRefReplacingEXT execution modes", "1.3-extensions"}, {"VUID-vkCmdDraw-commandBuffer-02707", "If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, any resource accessed by bound shaders must not be a protected resource", "1.3-extensions"}, {"VUID-vkCmdDraw-commandBuffer-02712", "If commandBuffer is a protected command buffer and protectedNoFault is not supported, any resource written to by the VkPipeline object bound to the pipeline bind point used by this command must not be an unprotected resource", "1.3-extensions"}, {"VUID-vkCmdDraw-commandBuffer-02713", "If commandBuffer is a protected command buffer and protectedNoFault is not supported, pipeline stages other than the framebuffer-space and compute stages in the VkPipeline object bound to the pipeline bind point used by this command must not write to any resource", "1.3-extensions"}, @@ -9035,6 +9105,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDraw-pDepthAttachment-08964", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the VkRenderingInfo::pDepthAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::depthAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, {"VUID-vkCmdDraw-pDynamicStates-08715", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpDepthAttachmentReadEXT, the depthWriteEnable parameter in the last call to vkCmdSetDepthWriteEnable must be VK_FALSE", "1.3-extensions"}, {"VUID-vkCmdDraw-pDynamicStates-08716", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_STENCIL_WRITE_MASK set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpStencilAttachmentReadEXT, the writeMask parameter in the last call to vkCmdSetStencilWriteMask must be 0", "1.3-extensions"}, + {"VUID-vkCmdDraw-pFragmentSize-09370", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->width to 1 prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDraw-pFragmentSize-09371", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDraw-pNext-07935", "If this command has been called inside a render pass instance started with vkCmdBeginRendering, and the pNext chain of VkRenderingInfo includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the value of rasterizationSamples for the currently bound graphics pipeline must be equal to VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples", "1.3-extensions"}, {"VUID-vkCmdDraw-pStencilAttachment-06187", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView", "1.3-extensions"}, {"VUID-vkCmdDraw-pStencilAttachment-08965", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, stencil test is enabled and the VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::stencilAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, @@ -9049,6 +9121,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDraw-rasterizationSamples-07474", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples extensions are enabled, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments", "1.3-extensions"}, {"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 currently bound pipeline state, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "1.3-extensions"}, {"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", "1.3-extensions"}, + {"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", "1.3-extensions"}, {"VUID-vkCmdDraw-rasterizerDiscardEnable-08884", "If 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, vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"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, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDraw-reductionMode-09213", "Any VkImageView being sampled with a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM as a result of this command must sample with VK_FILTER_CUBIC_EXT", "1.3-extensions"}, @@ -9152,10 +9225,10 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawClusterHUAWEI-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 in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawClusterHUAWEI-None-07834", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then vkCmdSetDepthBias or vkCmdSetDepthBias2EXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawClusterHUAWEI-None-07835", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then vkCmdSetBlendConstants must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawClusterHUAWEI-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawClusterHUAWEI-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawClusterHUAWEI-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawClusterHUAWEI-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawClusterHUAWEI-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled, and if the current depthBoundsTestEnable state is VK_TRUE, then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawClusterHUAWEI-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawClusterHUAWEI-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawClusterHUAWEI-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawClusterHUAWEI-None-07840", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CULL_MODE dynamic state enabled then vkCmdSetCullMode must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawClusterHUAWEI-None-07841", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_FRONT_FACE dynamic state enabled then vkCmdSetFrontFace must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawClusterHUAWEI-None-07843", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE dynamic state enabled then vkCmdSetDepthTestEnable must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, @@ -9279,6 +9352,12 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawClusterHUAWEI-None-09211", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the rasterizationSamples member of that structure", "1.3-extensions"}, {"VUID-vkCmdDrawClusterHUAWEI-None-09232", "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawClusterHUAWEI-None-09237", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage, then vkCmdSetTessellationDomainOriginEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawClusterHUAWEI-None-09363", "If there is no shader object bound to any graphics stage, the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawClusterHUAWEI-None-09364", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled, then vkCmdSetColorBlendEnableEXT must have set the blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawClusterHUAWEI-None-09365", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawClusterHUAWEI-None-09366", "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 vkCmdSetColorBlendEnableEXT must have set blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawClusterHUAWEI-None-09368", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently 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->width to 1 prior to this drawing command", "1.3-extensions"}, + {"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 currently 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", "1.3-extensions"}, {"VUID-vkCmdDrawClusterHUAWEI-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", "1.3-extensions"}, {"VUID-vkCmdDrawClusterHUAWEI-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", "1.3-extensions"}, {"VUID-vkCmdDrawClusterHUAWEI-OpImageBlockMatchSSDQCOM-06974", "If OpImageBlockMatchSSDQCOM is used to read from an VkImageView as a result of this command, then the image view's format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM", "1.3-extensions"}, @@ -9311,6 +9390,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawClusterHUAWEI-blendEnable-04727", "If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view's format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the blendEnable member of the corresponding element of the pAttachments member of pColorBlendState must be VK_FALSE", "1.3-extensions"}, {"VUID-vkCmdDrawClusterHUAWEI-colorAttachmentCount-06179", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount equal to VkRenderingInfo::colorAttachmentCount", "1.3-extensions"}, {"VUID-vkCmdDrawClusterHUAWEI-colorAttachmentCount-06185", "If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount parameter greater than 0, then each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawClusterHUAWEI-colorAttachmentCount-09362", "If the current render pass instance was begun with vkCmdBeginRendering, with a VkRenderingInfo::colorAttachmentCount equal to 1, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a resolveImageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawClusterHUAWEI-colorAttachmentCount-09372", "If the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, and a fragment shader is bound, it must not declare the DepthReplacing or StencilRefReplacingEXT execution modes", "1.3-extensions"}, {"VUID-vkCmdDrawClusterHUAWEI-commandBuffer-02707", "If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, any resource accessed by bound shaders must not be a protected resource", "1.3-extensions"}, {"VUID-vkCmdDrawClusterHUAWEI-commandBuffer-cmdpool", "The VkCommandPool that commandBuffer was allocated from must support graphics operations", "1.3-extensions"}, {"VUID-vkCmdDrawClusterHUAWEI-commandBuffer-parameter", "commandBuffer must be a valid VkCommandBuffer handle", "1.3-extensions"}, @@ -9365,6 +9446,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawClusterHUAWEI-pDepthAttachment-08964", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the VkRenderingInfo::pDepthAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::depthAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, {"VUID-vkCmdDrawClusterHUAWEI-pDynamicStates-08715", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpDepthAttachmentReadEXT, the depthWriteEnable parameter in the last call to vkCmdSetDepthWriteEnable must be VK_FALSE", "1.3-extensions"}, {"VUID-vkCmdDrawClusterHUAWEI-pDynamicStates-08716", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_STENCIL_WRITE_MASK set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpStencilAttachmentReadEXT, the writeMask parameter in the last call to vkCmdSetStencilWriteMask must be 0", "1.3-extensions"}, + {"VUID-vkCmdDrawClusterHUAWEI-pFragmentSize-09370", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->width to 1 prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawClusterHUAWEI-pFragmentSize-09371", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawClusterHUAWEI-pNext-07935", "If this command has been called inside a render pass instance started with vkCmdBeginRendering, and the pNext chain of VkRenderingInfo includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the value of rasterizationSamples for the currently bound graphics pipeline must be equal to VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples", "1.3-extensions"}, {"VUID-vkCmdDrawClusterHUAWEI-pStencilAttachment-06187", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView", "1.3-extensions"}, {"VUID-vkCmdDrawClusterHUAWEI-pStencilAttachment-08965", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, stencil test is enabled and the VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::stencilAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, @@ -9379,6 +9462,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawClusterHUAWEI-rasterizationSamples-07474", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples extensions are enabled, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments", "1.3-extensions"}, {"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 currently bound pipeline state, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "1.3-extensions"}, {"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", "1.3-extensions"}, + {"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", "1.3-extensions"}, {"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, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawClusterHUAWEI-reductionMode-09213", "Any VkImageView being sampled with a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM as a result of this command must sample with VK_FILTER_CUBIC_EXT", "1.3-extensions"}, {"VUID-vkCmdDrawClusterHUAWEI-renderPass-02684", "The current render pass must be compatible with the renderPass member of the VkGraphicsPipelineCreateInfo structure specified when creating the VkPipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS", "1.3-extensions"}, @@ -9480,10 +9564,10 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"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 in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-07834", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then vkCmdSetDepthBias or vkCmdSetDepthBias2EXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-07835", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then vkCmdSetBlendConstants must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled, and if the current depthBoundsTestEnable state is VK_TRUE, then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-07840", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CULL_MODE dynamic state enabled then vkCmdSetCullMode must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-07841", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_FRONT_FACE dynamic state enabled then vkCmdSetFrontFace must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-07843", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE dynamic state enabled then vkCmdSetDepthTestEnable must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, @@ -9607,6 +9691,12 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-09211", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the rasterizationSamples member of that structure", "1.3-extensions"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-09232", "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-09237", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage, then vkCmdSetTessellationDomainOriginEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-09363", "If there is no shader object bound to any graphics stage, the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-09364", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled, then vkCmdSetColorBlendEnableEXT must have set the blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-09365", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-09366", "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 vkCmdSetColorBlendEnableEXT must have set blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-09368", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently 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->width to 1 prior to this drawing command", "1.3-extensions"}, + {"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 currently 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", "1.3-extensions"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-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", "1.3-extensions"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-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", "1.3-extensions"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBlockMatchSSDQCOM-06974", "If OpImageBlockMatchSSDQCOM is used to read from an VkImageView as a result of this command, then the image view's format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM", "1.3-extensions"}, @@ -9640,6 +9730,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawClusterIndirectHUAWEI-buffer-parameter", "buffer must be a valid VkBuffer handle", "1.3-extensions"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-colorAttachmentCount-06179", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount equal to VkRenderingInfo::colorAttachmentCount", "1.3-extensions"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-colorAttachmentCount-06185", "If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount parameter greater than 0, then each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawClusterIndirectHUAWEI-colorAttachmentCount-09362", "If the current render pass instance was begun with vkCmdBeginRendering, with a VkRenderingInfo::colorAttachmentCount equal to 1, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a resolveImageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawClusterIndirectHUAWEI-colorAttachmentCount-09372", "If the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, and a fragment shader is bound, it must not declare the DepthReplacing or StencilRefReplacingEXT execution modes", "1.3-extensions"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-commandBuffer-02707", "If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, any resource accessed by bound shaders must not be a protected resource", "1.3-extensions"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-commandBuffer-cmdpool", "The VkCommandPool that commandBuffer was allocated from must support graphics operations", "1.3-extensions"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-commandBuffer-parameter", "commandBuffer must be a valid VkCommandBuffer handle", "1.3-extensions"}, @@ -9695,6 +9787,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawClusterIndirectHUAWEI-pDepthAttachment-08964", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the VkRenderingInfo::pDepthAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::depthAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-pDynamicStates-08715", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpDepthAttachmentReadEXT, the depthWriteEnable parameter in the last call to vkCmdSetDepthWriteEnable must be VK_FALSE", "1.3-extensions"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-pDynamicStates-08716", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_STENCIL_WRITE_MASK set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpStencilAttachmentReadEXT, the writeMask parameter in the last call to vkCmdSetStencilWriteMask must be 0", "1.3-extensions"}, + {"VUID-vkCmdDrawClusterIndirectHUAWEI-pFragmentSize-09370", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->width to 1 prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawClusterIndirectHUAWEI-pFragmentSize-09371", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-pNext-07935", "If this command has been called inside a render pass instance started with vkCmdBeginRendering, and the pNext chain of VkRenderingInfo includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the value of rasterizationSamples for the currently bound graphics pipeline must be equal to VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples", "1.3-extensions"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-pStencilAttachment-06187", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView", "1.3-extensions"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-pStencilAttachment-08965", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, stencil test is enabled and the VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::stencilAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, @@ -9709,6 +9803,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizationSamples-07474", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples extensions are enabled, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments", "1.3-extensions"}, {"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 currently bound pipeline state, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "1.3-extensions"}, {"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", "1.3-extensions"}, + {"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", "1.3-extensions"}, {"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, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-reductionMode-09213", "Any VkImageView being sampled with a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM as a result of this command must sample with VK_FILTER_CUBIC_EXT", "1.3-extensions"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-renderPass-02684", "The current render pass must be compatible with the renderPass member of the VkGraphicsPipelineCreateInfo structure specified when creating the VkPipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS", "1.3-extensions"}, @@ -9817,10 +9912,10 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"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 in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndexed-None-07834", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then vkCmdSetDepthBias or vkCmdSetDepthBias2EXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndexed-None-07835", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then vkCmdSetBlendConstants must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawIndexed-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawIndexed-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawIndexed-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawIndexed-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexed-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled, and if the current depthBoundsTestEnable state is VK_TRUE, then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexed-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexed-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexed-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndexed-None-07840", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CULL_MODE dynamic state enabled then vkCmdSetCullMode must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndexed-None-07841", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_FRONT_FACE dynamic state enabled then vkCmdSetFrontFace must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndexed-None-07842", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, @@ -9950,6 +10045,12 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexed-None-09211", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the rasterizationSamples member of that structure", "1.3-extensions"}, {"VUID-vkCmdDrawIndexed-None-09232", "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndexed-None-09237", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage, then vkCmdSetTessellationDomainOriginEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexed-None-09363", "If there is no shader object bound to any graphics stage, the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexed-None-09364", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled, then vkCmdSetColorBlendEnableEXT must have set the blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexed-None-09365", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexed-None-09366", "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 vkCmdSetColorBlendEnableEXT must have set blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexed-None-09368", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently 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->width to 1 prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexed-None-09369", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently 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", "1.3-extensions"}, {"VUID-vkCmdDrawIndexed-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", "1.3-extensions"}, {"VUID-vkCmdDrawIndexed-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", "1.3-extensions"}, {"VUID-vkCmdDrawIndexed-OpImageBlockMatchSSDQCOM-06974", "If OpImageBlockMatchSSDQCOM is used to read from an VkImageView as a result of this command, then the image view's format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM", "1.3-extensions"}, @@ -9982,6 +10083,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexed-blendEnable-04727", "If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view's format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the blendEnable member of the corresponding element of the pAttachments member of pColorBlendState must be VK_FALSE", "1.3-extensions"}, {"VUID-vkCmdDrawIndexed-colorAttachmentCount-06179", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount equal to VkRenderingInfo::colorAttachmentCount", "1.3-extensions"}, {"VUID-vkCmdDrawIndexed-colorAttachmentCount-06185", "If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount parameter greater than 0, then each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexed-colorAttachmentCount-09362", "If the current render pass instance was begun with vkCmdBeginRendering, with a VkRenderingInfo::colorAttachmentCount equal to 1, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a resolveImageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexed-colorAttachmentCount-09372", "If the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, and a fragment shader is bound, it must not declare the DepthReplacing or StencilRefReplacingEXT execution modes", "1.3-extensions"}, {"VUID-vkCmdDrawIndexed-commandBuffer-02707", "If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, any resource accessed by bound shaders must not be a protected resource", "1.3-extensions"}, {"VUID-vkCmdDrawIndexed-commandBuffer-02712", "If commandBuffer is a protected command buffer and protectedNoFault is not supported, any resource written to by the VkPipeline object bound to the pipeline bind point used by this command must not be an unprotected resource", "1.3-extensions"}, {"VUID-vkCmdDrawIndexed-commandBuffer-02713", "If commandBuffer is a protected command buffer and protectedNoFault is not supported, pipeline stages other than the framebuffer-space and compute stages in the VkPipeline object bound to the pipeline bind point used by this command must not write to any resource", "1.3-extensions"}, @@ -10039,6 +10142,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexed-pDepthAttachment-08964", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the VkRenderingInfo::pDepthAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::depthAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, {"VUID-vkCmdDrawIndexed-pDynamicStates-08715", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpDepthAttachmentReadEXT, the depthWriteEnable parameter in the last call to vkCmdSetDepthWriteEnable must be VK_FALSE", "1.3-extensions"}, {"VUID-vkCmdDrawIndexed-pDynamicStates-08716", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_STENCIL_WRITE_MASK set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpStencilAttachmentReadEXT, the writeMask parameter in the last call to vkCmdSetStencilWriteMask must be 0", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexed-pFragmentSize-09370", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->width to 1 prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexed-pFragmentSize-09371", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndexed-pNext-07935", "If this command has been called inside a render pass instance started with vkCmdBeginRendering, and the pNext chain of VkRenderingInfo includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the value of rasterizationSamples for the currently bound graphics pipeline must be equal to VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples", "1.3-extensions"}, {"VUID-vkCmdDrawIndexed-pStencilAttachment-06187", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView", "1.3-extensions"}, {"VUID-vkCmdDrawIndexed-pStencilAttachment-08965", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, stencil test is enabled and the VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::stencilAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, @@ -10053,6 +10158,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexed-rasterizationSamples-07474", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples extensions are enabled, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments", "1.3-extensions"}, {"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 currently bound pipeline state, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "1.3-extensions"}, {"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", "1.3-extensions"}, + {"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", "1.3-extensions"}, {"VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-08884", "If 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, vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"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, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndexed-reductionMode-09213", "Any VkImageView being sampled with a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM as a result of this command must sample with VK_FILTER_CUBIC_EXT", "1.3-extensions"}, @@ -10164,10 +10270,10 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"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 in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirect-None-07834", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then vkCmdSetDepthBias or vkCmdSetDepthBias2EXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirect-None-07835", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then vkCmdSetBlendConstants must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawIndexedIndirect-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawIndexedIndirect-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawIndexedIndirect-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawIndexedIndirect-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexedIndirect-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled, and if the current depthBoundsTestEnable state is VK_TRUE, then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexedIndirect-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexedIndirect-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexedIndirect-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirect-None-07840", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CULL_MODE dynamic state enabled then vkCmdSetCullMode must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirect-None-07841", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_FRONT_FACE dynamic state enabled then vkCmdSetFrontFace must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirect-None-07842", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, @@ -10297,6 +10403,12 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexedIndirect-None-09211", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the rasterizationSamples member of that structure", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirect-None-09232", "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirect-None-09237", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage, then vkCmdSetTessellationDomainOriginEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexedIndirect-None-09363", "If there is no shader object bound to any graphics stage, the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexedIndirect-None-09364", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled, then vkCmdSetColorBlendEnableEXT must have set the blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexedIndirect-None-09365", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexedIndirect-None-09366", "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 vkCmdSetColorBlendEnableEXT must have set blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexedIndirect-None-09368", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently 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->width to 1 prior to this drawing command", "1.3-extensions"}, + {"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 currently 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", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirect-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", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirect-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", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchSSDQCOM-06974", "If OpImageBlockMatchSSDQCOM is used to read from an VkImageView as a result of this command, then the image view's format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM", "1.3-extensions"}, @@ -10332,6 +10444,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexedIndirect-buffer-parameter", "buffer must be a valid VkBuffer handle", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06179", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount equal to VkRenderingInfo::colorAttachmentCount", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06185", "If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount parameter greater than 0, then each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-09362", "If the current render pass instance was begun with vkCmdBeginRendering, with a VkRenderingInfo::colorAttachmentCount equal to 1, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a resolveImageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-09372", "If the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, and a fragment shader is bound, it must not declare the DepthReplacing or StencilRefReplacingEXT execution modes", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirect-commandBuffer-02707", "If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, any resource accessed by bound shaders must not be a protected resource", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirect-commandBuffer-02711", "commandBuffer must not be a protected command buffer", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirect-commandBuffer-cmdpool", "The VkCommandPool that commandBuffer was allocated from must support graphics operations", "1.3-extensions"}, @@ -10394,6 +10508,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexedIndirect-pDepthAttachment-08964", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the VkRenderingInfo::pDepthAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::depthAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirect-pDynamicStates-08715", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpDepthAttachmentReadEXT, the depthWriteEnable parameter in the last call to vkCmdSetDepthWriteEnable must be VK_FALSE", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirect-pDynamicStates-08716", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_STENCIL_WRITE_MASK set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpStencilAttachmentReadEXT, the writeMask parameter in the last call to vkCmdSetStencilWriteMask must be 0", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexedIndirect-pFragmentSize-09370", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->width to 1 prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexedIndirect-pFragmentSize-09371", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirect-pNext-07935", "If this command has been called inside a render pass instance started with vkCmdBeginRendering, and the pNext chain of VkRenderingInfo includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the value of rasterizationSamples for the currently bound graphics pipeline must be equal to VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-06187", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-08965", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, stencil test is enabled and the VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::stencilAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, @@ -10408,6 +10524,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-07474", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples extensions are enabled, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments", "1.3-extensions"}, {"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 currently bound pipeline state, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "1.3-extensions"}, {"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", "1.3-extensions"}, + {"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", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-08884", "If 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, vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"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, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirect-reductionMode-09213", "Any VkImageView being sampled with a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM as a result of this command must sample with VK_FILTER_CUBIC_EXT", "1.3-extensions"}, @@ -10519,10 +10636,10 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"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 in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-07834", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then vkCmdSetDepthBias or vkCmdSetDepthBias2EXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-07835", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then vkCmdSetBlendConstants must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawIndexedIndirectCount-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawIndexedIndirectCount-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawIndexedIndirectCount-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawIndexedIndirectCount-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexedIndirectCount-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled, and if the current depthBoundsTestEnable state is VK_TRUE, then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexedIndirectCount-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexedIndirectCount-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexedIndirectCount-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-07840", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CULL_MODE dynamic state enabled then vkCmdSetCullMode must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-07841", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_FRONT_FACE dynamic state enabled then vkCmdSetFrontFace must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-07842", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, @@ -10652,6 +10769,12 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexedIndirectCount-None-09211", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the rasterizationSamples member of that structure", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-09232", "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-09237", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage, then vkCmdSetTessellationDomainOriginEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexedIndirectCount-None-09363", "If there is no shader object bound to any graphics stage, the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexedIndirectCount-None-09364", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled, then vkCmdSetColorBlendEnableEXT must have set the blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexedIndirectCount-None-09365", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexedIndirectCount-None-09366", "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 vkCmdSetColorBlendEnableEXT must have set blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexedIndirectCount-None-09368", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently 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->width to 1 prior to this drawing command", "1.3-extensions"}, + {"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 currently 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", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirectCount-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", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirectCount-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", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchSSDQCOM-06974", "If OpImageBlockMatchSSDQCOM is used to read from an VkImageView as a result of this command, then the image view's format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM", "1.3-extensions"}, @@ -10687,6 +10810,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexedIndirectCount-buffer-parameter", "buffer must be a valid VkBuffer handle", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-06179", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount equal to VkRenderingInfo::colorAttachmentCount", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-06185", "If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount parameter greater than 0, then each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-09362", "If the current render pass instance was begun with vkCmdBeginRendering, with a VkRenderingInfo::colorAttachmentCount equal to 1, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a resolveImageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-09372", "If the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, and a fragment shader is bound, it must not declare the DepthReplacing or StencilRefReplacingEXT execution modes", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02707", "If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, any resource accessed by bound shaders must not be a protected resource", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02711", "commandBuffer must not be a protected command buffer", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-cmdpool", "The VkCommandPool that commandBuffer was allocated from must support graphics operations", "1.3-extensions"}, @@ -10753,6 +10878,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexedIndirectCount-pDepthAttachment-08964", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the VkRenderingInfo::pDepthAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::depthAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirectCount-pDynamicStates-08715", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpDepthAttachmentReadEXT, the depthWriteEnable parameter in the last call to vkCmdSetDepthWriteEnable must be VK_FALSE", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirectCount-pDynamicStates-08716", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_STENCIL_WRITE_MASK set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpStencilAttachmentReadEXT, the writeMask parameter in the last call to vkCmdSetStencilWriteMask must be 0", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexedIndirectCount-pFragmentSize-09370", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->width to 1 prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndexedIndirectCount-pFragmentSize-09371", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirectCount-pNext-07935", "If this command has been called inside a render pass instance started with vkCmdBeginRendering, and the pNext chain of VkRenderingInfo includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the value of rasterizationSamples for the currently bound graphics pipeline must be equal to VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirectCount-pStencilAttachment-06187", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirectCount-pStencilAttachment-08965", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, stencil test is enabled and the VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::stencilAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, @@ -10767,6 +10894,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-07474", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples extensions are enabled, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments", "1.3-extensions"}, {"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 currently bound pipeline state, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "1.3-extensions"}, {"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", "1.3-extensions"}, + {"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", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-08884", "If 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, vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"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, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndexedIndirectCount-reductionMode-09213", "Any VkImageView being sampled with a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM as a result of this command must sample with VK_FILTER_CUBIC_EXT", "1.3-extensions"}, @@ -10877,10 +11005,10 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"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 in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndirect-None-07834", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then vkCmdSetDepthBias or vkCmdSetDepthBias2EXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndirect-None-07835", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then vkCmdSetBlendConstants must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawIndirect-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawIndirect-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawIndirect-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawIndirect-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirect-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled, and if the current depthBoundsTestEnable state is VK_TRUE, then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirect-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirect-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirect-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndirect-None-07840", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CULL_MODE dynamic state enabled then vkCmdSetCullMode must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndirect-None-07841", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_FRONT_FACE dynamic state enabled then vkCmdSetFrontFace must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndirect-None-07842", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, @@ -11010,6 +11138,12 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirect-None-09211", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the rasterizationSamples member of that structure", "1.3-extensions"}, {"VUID-vkCmdDrawIndirect-None-09232", "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndirect-None-09237", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage, then vkCmdSetTessellationDomainOriginEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirect-None-09363", "If there is no shader object bound to any graphics stage, the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirect-None-09364", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled, then vkCmdSetColorBlendEnableEXT must have set the blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirect-None-09365", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirect-None-09366", "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 vkCmdSetColorBlendEnableEXT must have set blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirect-None-09368", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently 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->width to 1 prior to this drawing command", "1.3-extensions"}, + {"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 currently 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", "1.3-extensions"}, {"VUID-vkCmdDrawIndirect-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", "1.3-extensions"}, {"VUID-vkCmdDrawIndirect-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", "1.3-extensions"}, {"VUID-vkCmdDrawIndirect-OpImageBlockMatchSSDQCOM-06974", "If OpImageBlockMatchSSDQCOM is used to read from an VkImageView as a result of this command, then the image view's format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM", "1.3-extensions"}, @@ -11045,6 +11179,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirect-buffer-parameter", "buffer must be a valid VkBuffer handle", "1.3-extensions"}, {"VUID-vkCmdDrawIndirect-colorAttachmentCount-06179", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount equal to VkRenderingInfo::colorAttachmentCount", "1.3-extensions"}, {"VUID-vkCmdDrawIndirect-colorAttachmentCount-06185", "If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount parameter greater than 0, then each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirect-colorAttachmentCount-09362", "If the current render pass instance was begun with vkCmdBeginRendering, with a VkRenderingInfo::colorAttachmentCount equal to 1, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a resolveImageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirect-colorAttachmentCount-09372", "If the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, and a fragment shader is bound, it must not declare the DepthReplacing or StencilRefReplacingEXT execution modes", "1.3-extensions"}, {"VUID-vkCmdDrawIndirect-commandBuffer-02707", "If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, any resource accessed by bound shaders must not be a protected resource", "1.3-extensions"}, {"VUID-vkCmdDrawIndirect-commandBuffer-02711", "commandBuffer must not be a protected command buffer", "1.3-extensions"}, {"VUID-vkCmdDrawIndirect-commandBuffer-cmdpool", "The VkCommandPool that commandBuffer was allocated from must support graphics operations", "1.3-extensions"}, @@ -11107,6 +11243,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirect-pDepthAttachment-08964", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the VkRenderingInfo::pDepthAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::depthAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, {"VUID-vkCmdDrawIndirect-pDynamicStates-08715", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpDepthAttachmentReadEXT, the depthWriteEnable parameter in the last call to vkCmdSetDepthWriteEnable must be VK_FALSE", "1.3-extensions"}, {"VUID-vkCmdDrawIndirect-pDynamicStates-08716", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_STENCIL_WRITE_MASK set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpStencilAttachmentReadEXT, the writeMask parameter in the last call to vkCmdSetStencilWriteMask must be 0", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirect-pFragmentSize-09370", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->width to 1 prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirect-pFragmentSize-09371", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndirect-pNext-07935", "If this command has been called inside a render pass instance started with vkCmdBeginRendering, and the pNext chain of VkRenderingInfo includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the value of rasterizationSamples for the currently bound graphics pipeline must be equal to VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples", "1.3-extensions"}, {"VUID-vkCmdDrawIndirect-pStencilAttachment-06187", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView", "1.3-extensions"}, {"VUID-vkCmdDrawIndirect-pStencilAttachment-08965", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, stencil test is enabled and the VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::stencilAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, @@ -11121,6 +11259,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirect-rasterizationSamples-07474", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples extensions are enabled, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments", "1.3-extensions"}, {"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 currently bound pipeline state, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "1.3-extensions"}, {"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", "1.3-extensions"}, + {"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", "1.3-extensions"}, {"VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-08884", "If 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, vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"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, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndirect-reductionMode-09213", "Any VkImageView being sampled with a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM as a result of this command must sample with VK_FILTER_CUBIC_EXT", "1.3-extensions"}, @@ -11229,10 +11368,10 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"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 in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-07834", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then vkCmdSetDepthBias or vkCmdSetDepthBias2EXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-07835", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then vkCmdSetBlendConstants must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawIndirectByteCountEXT-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawIndirectByteCountEXT-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawIndirectByteCountEXT-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawIndirectByteCountEXT-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirectByteCountEXT-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled, and if the current depthBoundsTestEnable state is VK_TRUE, then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirectByteCountEXT-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirectByteCountEXT-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirectByteCountEXT-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-07840", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CULL_MODE dynamic state enabled then vkCmdSetCullMode must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-07841", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_FRONT_FACE dynamic state enabled then vkCmdSetFrontFace must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-07842", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, @@ -11362,6 +11501,12 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirectByteCountEXT-None-09211", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the rasterizationSamples member of that structure", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-09232", "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-09237", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage, then vkCmdSetTessellationDomainOriginEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirectByteCountEXT-None-09363", "If there is no shader object bound to any graphics stage, the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirectByteCountEXT-None-09364", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled, then vkCmdSetColorBlendEnableEXT must have set the blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirectByteCountEXT-None-09365", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirectByteCountEXT-None-09366", "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 vkCmdSetColorBlendEnableEXT must have set blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirectByteCountEXT-None-09368", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently 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->width to 1 prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirectByteCountEXT-None-09369", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently 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", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectByteCountEXT-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", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectByteCountEXT-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", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchSSDQCOM-06974", "If OpImageBlockMatchSSDQCOM is used to read from an VkImageView as a result of this command, then the image view's format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM", "1.3-extensions"}, @@ -11394,6 +11539,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirectByteCountEXT-blendEnable-04727", "If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view's format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the blendEnable member of the corresponding element of the pAttachments member of pColorBlendState must be VK_FALSE", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-06179", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount equal to VkRenderingInfo::colorAttachmentCount", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-06185", "If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount parameter greater than 0, then each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-09362", "If the current render pass instance was begun with vkCmdBeginRendering, with a VkRenderingInfo::colorAttachmentCount equal to 1, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a resolveImageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-09372", "If the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, and a fragment shader is bound, it must not declare the DepthReplacing or StencilRefReplacingEXT execution modes", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02646", "commandBuffer must not be a protected command buffer", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02707", "If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, any resource accessed by bound shaders must not be a protected resource", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-cmdpool", "The VkCommandPool that commandBuffer was allocated from must support graphics operations", "1.3-extensions"}, @@ -11454,6 +11601,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirectByteCountEXT-pDepthAttachment-08964", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the VkRenderingInfo::pDepthAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::depthAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectByteCountEXT-pDynamicStates-08715", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpDepthAttachmentReadEXT, the depthWriteEnable parameter in the last call to vkCmdSetDepthWriteEnable must be VK_FALSE", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectByteCountEXT-pDynamicStates-08716", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_STENCIL_WRITE_MASK set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpStencilAttachmentReadEXT, the writeMask parameter in the last call to vkCmdSetStencilWriteMask must be 0", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirectByteCountEXT-pFragmentSize-09370", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->width to 1 prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirectByteCountEXT-pFragmentSize-09371", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectByteCountEXT-pNext-07935", "If this command has been called inside a render pass instance started with vkCmdBeginRendering, and the pNext chain of VkRenderingInfo includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the value of rasterizationSamples for the currently bound graphics pipeline must be equal to VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectByteCountEXT-pStencilAttachment-06187", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectByteCountEXT-pStencilAttachment-08965", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, stencil test is enabled and the VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::stencilAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, @@ -11468,6 +11617,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-07474", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples extensions are enabled, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments", "1.3-extensions"}, {"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 currently bound pipeline state, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "1.3-extensions"}, {"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", "1.3-extensions"}, + {"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", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-08884", "If 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, vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"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, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectByteCountEXT-reductionMode-09213", "Any VkImageView being sampled with a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM as a result of this command must sample with VK_FILTER_CUBIC_EXT", "1.3-extensions"}, @@ -11580,10 +11730,10 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"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 in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectCount-None-07834", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then vkCmdSetDepthBias or vkCmdSetDepthBias2EXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectCount-None-07835", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then vkCmdSetBlendConstants must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawIndirectCount-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawIndirectCount-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawIndirectCount-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawIndirectCount-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirectCount-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled, and if the current depthBoundsTestEnable state is VK_TRUE, then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirectCount-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirectCount-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirectCount-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectCount-None-07840", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CULL_MODE dynamic state enabled then vkCmdSetCullMode must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectCount-None-07841", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_FRONT_FACE dynamic state enabled then vkCmdSetFrontFace must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectCount-None-07842", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, @@ -11713,6 +11863,12 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirectCount-None-09211", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the rasterizationSamples member of that structure", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectCount-None-09232", "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectCount-None-09237", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage, then vkCmdSetTessellationDomainOriginEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirectCount-None-09363", "If there is no shader object bound to any graphics stage, the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirectCount-None-09364", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled, then vkCmdSetColorBlendEnableEXT must have set the blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirectCount-None-09365", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirectCount-None-09366", "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 vkCmdSetColorBlendEnableEXT must have set blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirectCount-None-09368", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently 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->width to 1 prior to this drawing command", "1.3-extensions"}, + {"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 currently 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", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectCount-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", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectCount-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", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectCount-OpImageBlockMatchSSDQCOM-06974", "If OpImageBlockMatchSSDQCOM is used to read from an VkImageView as a result of this command, then the image view's format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM", "1.3-extensions"}, @@ -11748,6 +11904,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirectCount-buffer-parameter", "buffer must be a valid VkBuffer handle", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectCount-colorAttachmentCount-06179", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount equal to VkRenderingInfo::colorAttachmentCount", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectCount-colorAttachmentCount-06185", "If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount parameter greater than 0, then each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirectCount-colorAttachmentCount-09362", "If the current render pass instance was begun with vkCmdBeginRendering, with a VkRenderingInfo::colorAttachmentCount equal to 1, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a resolveImageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirectCount-colorAttachmentCount-09372", "If the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, and a fragment shader is bound, it must not declare the DepthReplacing or StencilRefReplacingEXT execution modes", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectCount-commandBuffer-02707", "If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, any resource accessed by bound shaders must not be a protected resource", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectCount-commandBuffer-02711", "commandBuffer must not be a protected command buffer", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectCount-commandBuffer-cmdpool", "The VkCommandPool that commandBuffer was allocated from must support graphics operations", "1.3-extensions"}, @@ -11814,6 +11972,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirectCount-pDepthAttachment-08964", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the VkRenderingInfo::pDepthAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::depthAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectCount-pDynamicStates-08715", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpDepthAttachmentReadEXT, the depthWriteEnable parameter in the last call to vkCmdSetDepthWriteEnable must be VK_FALSE", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectCount-pDynamicStates-08716", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_STENCIL_WRITE_MASK set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpStencilAttachmentReadEXT, the writeMask parameter in the last call to vkCmdSetStencilWriteMask must be 0", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirectCount-pFragmentSize-09370", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->width to 1 prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawIndirectCount-pFragmentSize-09371", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectCount-pNext-07935", "If this command has been called inside a render pass instance started with vkCmdBeginRendering, and the pNext chain of VkRenderingInfo includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the value of rasterizationSamples for the currently bound graphics pipeline must be equal to VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectCount-pStencilAttachment-06187", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectCount-pStencilAttachment-08965", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, stencil test is enabled and the VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::stencilAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, @@ -11828,6 +11988,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirectCount-rasterizationSamples-07474", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples extensions are enabled, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments", "1.3-extensions"}, {"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 currently bound pipeline state, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "1.3-extensions"}, {"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", "1.3-extensions"}, + {"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", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-08884", "If 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, vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"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, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawIndirectCount-reductionMode-09213", "Any VkImageView being sampled with a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM as a result of this command must sample with VK_FILTER_CUBIC_EXT", "1.3-extensions"}, @@ -11931,10 +12092,10 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"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 in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksEXT-None-07834", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then vkCmdSetDepthBias or vkCmdSetDepthBias2EXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksEXT-None-07835", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then vkCmdSetBlendConstants must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMeshTasksEXT-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMeshTasksEXT-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMeshTasksEXT-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMeshTasksEXT-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksEXT-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled, and if the current depthBoundsTestEnable state is VK_TRUE, then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksEXT-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksEXT-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksEXT-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksEXT-None-07840", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CULL_MODE dynamic state enabled then vkCmdSetCullMode must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksEXT-None-07841", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_FRONT_FACE dynamic state enabled then vkCmdSetFrontFace must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksEXT-None-07843", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE dynamic state enabled then vkCmdSetDepthTestEnable must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, @@ -12058,6 +12219,12 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksEXT-None-09211", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the rasterizationSamples member of that structure", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksEXT-None-09232", "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksEXT-None-09237", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage, then vkCmdSetTessellationDomainOriginEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksEXT-None-09363", "If there is no shader object bound to any graphics stage, the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksEXT-None-09364", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled, then vkCmdSetColorBlendEnableEXT must have set the blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksEXT-None-09365", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksEXT-None-09366", "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 vkCmdSetColorBlendEnableEXT must have set blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksEXT-None-09368", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently 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->width to 1 prior to this drawing command", "1.3-extensions"}, + {"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 currently 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", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksEXT-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", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksEXT-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", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksEXT-OpImageBlockMatchSSDQCOM-06974", "If OpImageBlockMatchSSDQCOM is used to read from an VkImageView as a result of this command, then the image view's format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM", "1.3-extensions"}, @@ -12098,6 +12265,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksEXT-blendEnable-04727", "If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view's format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the blendEnable member of the corresponding element of the pAttachments member of pColorBlendState must be VK_FALSE", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksEXT-colorAttachmentCount-06179", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount equal to VkRenderingInfo::colorAttachmentCount", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksEXT-colorAttachmentCount-06185", "If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount parameter greater than 0, then each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksEXT-colorAttachmentCount-09362", "If the current render pass instance was begun with vkCmdBeginRendering, with a VkRenderingInfo::colorAttachmentCount equal to 1, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a resolveImageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksEXT-colorAttachmentCount-09372", "If the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, and a fragment shader is bound, it must not declare the DepthReplacing or StencilRefReplacingEXT execution modes", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksEXT-commandBuffer-02707", "If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, any resource accessed by bound shaders must not be a protected resource", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksEXT-commandBuffer-cmdpool", "The VkCommandPool that commandBuffer was allocated from must support graphics operations", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksEXT-commandBuffer-parameter", "commandBuffer must be a valid VkCommandBuffer handle", "1.3-extensions"}, @@ -12149,6 +12318,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksEXT-pDepthAttachment-08964", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the VkRenderingInfo::pDepthAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::depthAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksEXT-pDynamicStates-08715", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpDepthAttachmentReadEXT, the depthWriteEnable parameter in the last call to vkCmdSetDepthWriteEnable must be VK_FALSE", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksEXT-pDynamicStates-08716", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_STENCIL_WRITE_MASK set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpStencilAttachmentReadEXT, the writeMask parameter in the last call to vkCmdSetStencilWriteMask must be 0", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksEXT-pFragmentSize-09370", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->width to 1 prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksEXT-pFragmentSize-09371", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksEXT-pNext-07935", "If this command has been called inside a render pass instance started with vkCmdBeginRendering, and the pNext chain of VkRenderingInfo includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the value of rasterizationSamples for the currently bound graphics pipeline must be equal to VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksEXT-pStencilAttachment-06187", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksEXT-pStencilAttachment-08965", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, stencil test is enabled and the VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::stencilAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, @@ -12163,6 +12334,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksEXT-rasterizationSamples-07474", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples extensions are enabled, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments", "1.3-extensions"}, {"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 currently bound pipeline state, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "1.3-extensions"}, {"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", "1.3-extensions"}, + {"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", "1.3-extensions"}, {"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, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksEXT-reductionMode-09213", "Any VkImageView being sampled with a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM as a result of this command must sample with VK_FILTER_CUBIC_EXT", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksEXT-renderPass-02684", "The current render pass must be compatible with the renderPass member of the VkGraphicsPipelineCreateInfo structure specified when creating the VkPipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS", "1.3-extensions"}, @@ -12265,10 +12437,10 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"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 in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07834", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then vkCmdSetDepthBias or vkCmdSetDepthBias2EXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07835", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then vkCmdSetBlendConstants must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled, and if the current depthBoundsTestEnable state is VK_TRUE, then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07840", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CULL_MODE dynamic state enabled then vkCmdSetCullMode must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07841", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_FRONT_FACE dynamic state enabled then vkCmdSetFrontFace must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07843", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE dynamic state enabled then vkCmdSetDepthTestEnable must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, @@ -12392,6 +12564,12 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09211", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the rasterizationSamples member of that structure", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09232", "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09237", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage, then vkCmdSetTessellationDomainOriginEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09363", "If there is no shader object bound to any graphics stage, the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09364", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled, then vkCmdSetColorBlendEnableEXT must have set the blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09365", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09366", "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 vkCmdSetColorBlendEnableEXT must have set blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09368", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently 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->width to 1 prior to this drawing command", "1.3-extensions"}, + {"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 currently 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", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-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", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-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", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBlockMatchSSDQCOM-06974", "If OpImageBlockMatchSSDQCOM is used to read from an VkImageView as a result of this command, then the image view's format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM", "1.3-extensions"}, @@ -12427,6 +12605,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-buffer-parameter", "buffer must be a valid VkBuffer handle", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-colorAttachmentCount-06179", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount equal to VkRenderingInfo::colorAttachmentCount", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-colorAttachmentCount-06185", "If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount parameter greater than 0, then each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-colorAttachmentCount-09362", "If the current render pass instance was begun with vkCmdBeginRendering, with a VkRenderingInfo::colorAttachmentCount equal to 1, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a resolveImageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-colorAttachmentCount-09372", "If the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, and a fragment shader is bound, it must not declare the DepthReplacing or StencilRefReplacingEXT execution modes", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-commandBuffer-02707", "If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, any resource accessed by bound shaders must not be a protected resource", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-commandBuffer-02711", "commandBuffer must not be a protected command buffer", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-commandBuffer-cmdpool", "The VkCommandPool that commandBuffer was allocated from must support graphics operations", "1.3-extensions"}, @@ -12490,6 +12670,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDepthAttachment-08964", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the VkRenderingInfo::pDepthAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::depthAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDynamicStates-08715", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpDepthAttachmentReadEXT, the depthWriteEnable parameter in the last call to vkCmdSetDepthWriteEnable must be VK_FALSE", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDynamicStates-08716", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_STENCIL_WRITE_MASK set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpStencilAttachmentReadEXT, the writeMask parameter in the last call to vkCmdSetStencilWriteMask must be 0", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-pFragmentSize-09370", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->width to 1 prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-pFragmentSize-09371", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-pNext-07935", "If this command has been called inside a render pass instance started with vkCmdBeginRendering, and the pNext chain of VkRenderingInfo includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the value of rasterizationSamples for the currently bound graphics pipeline must be equal to VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-pStencilAttachment-06187", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-pStencilAttachment-08965", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, stencil test is enabled and the VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::stencilAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, @@ -12504,6 +12686,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizationSamples-07474", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples extensions are enabled, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments", "1.3-extensions"}, {"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 currently bound pipeline state, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "1.3-extensions"}, {"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", "1.3-extensions"}, + {"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", "1.3-extensions"}, {"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, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-reductionMode-09213", "Any VkImageView being sampled with a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM as a result of this command must sample with VK_FILTER_CUBIC_EXT", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-renderPass-02684", "The current render pass must be compatible with the renderPass member of the VkGraphicsPipelineCreateInfo structure specified when creating the VkPipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS", "1.3-extensions"}, @@ -12607,10 +12790,10 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"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 in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07834", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then vkCmdSetDepthBias or vkCmdSetDepthBias2EXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07835", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then vkCmdSetBlendConstants must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled, and if the current depthBoundsTestEnable state is VK_TRUE, then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07840", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CULL_MODE dynamic state enabled then vkCmdSetCullMode must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07841", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_FRONT_FACE dynamic state enabled then vkCmdSetFrontFace must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07843", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE dynamic state enabled then vkCmdSetDepthTestEnable must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, @@ -12734,6 +12917,12 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09211", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the rasterizationSamples member of that structure", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09232", "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09237", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage, then vkCmdSetTessellationDomainOriginEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09363", "If there is no shader object bound to any graphics stage, the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09364", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled, then vkCmdSetColorBlendEnableEXT must have set the blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09365", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09366", "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 vkCmdSetColorBlendEnableEXT must have set blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09368", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently 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->width to 1 prior to this drawing command", "1.3-extensions"}, + {"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 currently 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", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-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", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-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", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchSSDQCOM-06974", "If OpImageBlockMatchSSDQCOM is used to read from an VkImageView as a result of this command, then the image view's format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM", "1.3-extensions"}, @@ -12769,6 +12958,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-parameter", "buffer must be a valid VkBuffer handle", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-06179", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount equal to VkRenderingInfo::colorAttachmentCount", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-06185", "If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount parameter greater than 0, then each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-09362", "If the current render pass instance was begun with vkCmdBeginRendering, with a VkRenderingInfo::colorAttachmentCount equal to 1, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a resolveImageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-09372", "If the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, and a fragment shader is bound, it must not declare the DepthReplacing or StencilRefReplacingEXT execution modes", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02707", "If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, any resource accessed by bound shaders must not be a protected resource", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02711", "commandBuffer must not be a protected command buffer", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-cmdpool", "The VkCommandPool that commandBuffer was allocated from must support graphics operations", "1.3-extensions"}, @@ -12832,6 +13023,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthAttachment-08964", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the VkRenderingInfo::pDepthAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::depthAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-pDynamicStates-08715", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpDepthAttachmentReadEXT, the depthWriteEnable parameter in the last call to vkCmdSetDepthWriteEnable must be VK_FALSE", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-pDynamicStates-08716", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_STENCIL_WRITE_MASK set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpStencilAttachmentReadEXT, the writeMask parameter in the last call to vkCmdSetStencilWriteMask must be 0", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountNV-pFragmentSize-09370", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->width to 1 prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountNV-pFragmentSize-09371", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-pNext-07935", "If this command has been called inside a render pass instance started with vkCmdBeginRendering, and the pNext chain of VkRenderingInfo includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the value of rasterizationSamples for the currently bound graphics pipeline must be equal to VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-pStencilAttachment-06187", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-pStencilAttachment-08965", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, stencil test is enabled and the VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::stencilAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, @@ -12846,6 +13039,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-07474", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples extensions are enabled, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments", "1.3-extensions"}, {"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 currently bound pipeline state, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "1.3-extensions"}, {"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", "1.3-extensions"}, + {"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", "1.3-extensions"}, {"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, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-reductionMode-09213", "Any VkImageView being sampled with a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM as a result of this command must sample with VK_FILTER_CUBIC_EXT", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-renderPass-02684", "The current render pass must be compatible with the renderPass member of the VkGraphicsPipelineCreateInfo structure specified when creating the VkPipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS", "1.3-extensions"}, @@ -12948,10 +13142,10 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"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 in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-07834", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then vkCmdSetDepthBias or vkCmdSetDepthBias2EXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-07835", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then vkCmdSetBlendConstants must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled, and if the current depthBoundsTestEnable state is VK_TRUE, then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-07840", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CULL_MODE dynamic state enabled then vkCmdSetCullMode must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-07841", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_FRONT_FACE dynamic state enabled then vkCmdSetFrontFace must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-07843", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE dynamic state enabled then vkCmdSetDepthTestEnable must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, @@ -13075,6 +13269,12 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-09211", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the rasterizationSamples member of that structure", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-09232", "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-09237", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage, then vkCmdSetTessellationDomainOriginEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-09363", "If there is no shader object bound to any graphics stage, the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-09364", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled, then vkCmdSetColorBlendEnableEXT must have set the blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-09365", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-09366", "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 vkCmdSetColorBlendEnableEXT must have set blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-09368", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently 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->width to 1 prior to this drawing command", "1.3-extensions"}, + {"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 currently 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", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-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", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-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", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBlockMatchSSDQCOM-06974", "If OpImageBlockMatchSSDQCOM is used to read from an VkImageView as a result of this command, then the image view's format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM", "1.3-extensions"}, @@ -13110,6 +13310,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectEXT-buffer-parameter", "buffer must be a valid VkBuffer handle", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-colorAttachmentCount-06179", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount equal to VkRenderingInfo::colorAttachmentCount", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-colorAttachmentCount-06185", "If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount parameter greater than 0, then each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectEXT-colorAttachmentCount-09362", "If the current render pass instance was begun with vkCmdBeginRendering, with a VkRenderingInfo::colorAttachmentCount equal to 1, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a resolveImageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectEXT-colorAttachmentCount-09372", "If the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, and a fragment shader is bound, it must not declare the DepthReplacing or StencilRefReplacingEXT execution modes", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-commandBuffer-02707", "If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, any resource accessed by bound shaders must not be a protected resource", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-commandBuffer-02711", "commandBuffer must not be a protected command buffer", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-commandBuffer-cmdpool", "The VkCommandPool that commandBuffer was allocated from must support graphics operations", "1.3-extensions"}, @@ -13169,6 +13371,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectEXT-pDepthAttachment-08964", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the VkRenderingInfo::pDepthAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::depthAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-pDynamicStates-08715", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpDepthAttachmentReadEXT, the depthWriteEnable parameter in the last call to vkCmdSetDepthWriteEnable must be VK_FALSE", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-pDynamicStates-08716", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_STENCIL_WRITE_MASK set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpStencilAttachmentReadEXT, the writeMask parameter in the last call to vkCmdSetStencilWriteMask must be 0", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectEXT-pFragmentSize-09370", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->width to 1 prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectEXT-pFragmentSize-09371", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-pNext-07935", "If this command has been called inside a render pass instance started with vkCmdBeginRendering, and the pNext chain of VkRenderingInfo includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the value of rasterizationSamples for the currently bound graphics pipeline must be equal to VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-pStencilAttachment-06187", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-pStencilAttachment-08965", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, stencil test is enabled and the VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::stencilAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, @@ -13183,6 +13387,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizationSamples-07474", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples extensions are enabled, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments", "1.3-extensions"}, {"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 currently bound pipeline state, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "1.3-extensions"}, {"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", "1.3-extensions"}, + {"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", "1.3-extensions"}, {"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, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-reductionMode-09213", "Any VkImageView being sampled with a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM as a result of this command must sample with VK_FILTER_CUBIC_EXT", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-renderPass-02684", "The current render pass must be compatible with the renderPass member of the VkGraphicsPipelineCreateInfo structure specified when creating the VkPipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS", "1.3-extensions"}, @@ -13284,10 +13489,10 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"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 in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-None-07834", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then vkCmdSetDepthBias or vkCmdSetDepthBias2EXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-None-07835", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then vkCmdSetBlendConstants must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMeshTasksIndirectNV-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMeshTasksIndirectNV-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMeshTasksIndirectNV-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMeshTasksIndirectNV-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectNV-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled, and if the current depthBoundsTestEnable state is VK_TRUE, then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectNV-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectNV-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectNV-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-None-07840", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CULL_MODE dynamic state enabled then vkCmdSetCullMode must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-None-07841", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_FRONT_FACE dynamic state enabled then vkCmdSetFrontFace must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-None-07843", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE dynamic state enabled then vkCmdSetDepthTestEnable must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, @@ -13411,6 +13616,12 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectNV-None-09211", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the rasterizationSamples member of that structure", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-None-09232", "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-None-09237", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage, then vkCmdSetTessellationDomainOriginEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectNV-None-09363", "If there is no shader object bound to any graphics stage, the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectNV-None-09364", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled, then vkCmdSetColorBlendEnableEXT must have set the blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectNV-None-09365", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectNV-None-09366", "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 vkCmdSetColorBlendEnableEXT must have set blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectNV-None-09368", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently 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->width to 1 prior to this drawing command", "1.3-extensions"}, + {"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 currently 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", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-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", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-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", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchSSDQCOM-06974", "If OpImageBlockMatchSSDQCOM is used to read from an VkImageView as a result of this command, then the image view's format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM", "1.3-extensions"}, @@ -13446,6 +13657,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectNV-buffer-parameter", "buffer must be a valid VkBuffer handle", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-06179", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount equal to VkRenderingInfo::colorAttachmentCount", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-06185", "If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount parameter greater than 0, then each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-09362", "If the current render pass instance was begun with vkCmdBeginRendering, with a VkRenderingInfo::colorAttachmentCount equal to 1, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a resolveImageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-09372", "If the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, and a fragment shader is bound, it must not declare the DepthReplacing or StencilRefReplacingEXT execution modes", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02707", "If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, any resource accessed by bound shaders must not be a protected resource", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02711", "commandBuffer must not be a protected command buffer", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-cmdpool", "The VkCommandPool that commandBuffer was allocated from must support graphics operations", "1.3-extensions"}, @@ -13505,6 +13718,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectNV-pDepthAttachment-08964", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the VkRenderingInfo::pDepthAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::depthAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-pDynamicStates-08715", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpDepthAttachmentReadEXT, the depthWriteEnable parameter in the last call to vkCmdSetDepthWriteEnable must be VK_FALSE", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-pDynamicStates-08716", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_STENCIL_WRITE_MASK set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpStencilAttachmentReadEXT, the writeMask parameter in the last call to vkCmdSetStencilWriteMask must be 0", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectNV-pFragmentSize-09370", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->width to 1 prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksIndirectNV-pFragmentSize-09371", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-pNext-07935", "If this command has been called inside a render pass instance started with vkCmdBeginRendering, and the pNext chain of VkRenderingInfo includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the value of rasterizationSamples for the currently bound graphics pipeline must be equal to VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-pStencilAttachment-06187", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-pStencilAttachment-08965", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, stencil test is enabled and the VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::stencilAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, @@ -13519,6 +13734,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-07474", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples extensions are enabled, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments", "1.3-extensions"}, {"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 currently bound pipeline state, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "1.3-extensions"}, {"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", "1.3-extensions"}, + {"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", "1.3-extensions"}, {"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, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-reductionMode-09213", "Any VkImageView being sampled with a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM as a result of this command must sample with VK_FILTER_CUBIC_EXT", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-renderPass-02684", "The current render pass must be compatible with the renderPass member of the VkGraphicsPipelineCreateInfo structure specified when creating the VkPipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS", "1.3-extensions"}, @@ -13620,10 +13836,10 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"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 in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksNV-None-07834", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then vkCmdSetDepthBias or vkCmdSetDepthBias2EXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksNV-None-07835", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then vkCmdSetBlendConstants must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMeshTasksNV-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMeshTasksNV-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMeshTasksNV-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMeshTasksNV-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksNV-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled, and if the current depthBoundsTestEnable state is VK_TRUE, then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksNV-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksNV-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksNV-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksNV-None-07840", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CULL_MODE dynamic state enabled then vkCmdSetCullMode must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksNV-None-07841", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_FRONT_FACE dynamic state enabled then vkCmdSetFrontFace must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksNV-None-07843", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE dynamic state enabled then vkCmdSetDepthTestEnable must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, @@ -13747,6 +13963,12 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksNV-None-09211", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the rasterizationSamples member of that structure", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksNV-None-09232", "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksNV-None-09237", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage, then vkCmdSetTessellationDomainOriginEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksNV-None-09363", "If there is no shader object bound to any graphics stage, the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksNV-None-09364", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled, then vkCmdSetColorBlendEnableEXT must have set the blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksNV-None-09365", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksNV-None-09366", "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 vkCmdSetColorBlendEnableEXT must have set blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksNV-None-09368", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently 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->width to 1 prior to this drawing command", "1.3-extensions"}, + {"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 currently 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", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksNV-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", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksNV-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", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchSSDQCOM-06974", "If OpImageBlockMatchSSDQCOM is used to read from an VkImageView as a result of this command, then the image view's format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM", "1.3-extensions"}, @@ -13779,6 +14001,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksNV-blendEnable-04727", "If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view's format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the blendEnable member of the corresponding element of the pAttachments member of pColorBlendState must be VK_FALSE", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-06179", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount equal to VkRenderingInfo::colorAttachmentCount", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-06185", "If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount parameter greater than 0, then each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-09362", "If the current render pass instance was begun with vkCmdBeginRendering, with a VkRenderingInfo::colorAttachmentCount equal to 1, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a resolveImageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-09372", "If the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, and a fragment shader is bound, it must not declare the DepthReplacing or StencilRefReplacingEXT execution modes", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksNV-commandBuffer-02707", "If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, any resource accessed by bound shaders must not be a protected resource", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksNV-commandBuffer-cmdpool", "The VkCommandPool that commandBuffer was allocated from must support graphics operations", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksNV-commandBuffer-parameter", "commandBuffer must be a valid VkCommandBuffer handle", "1.3-extensions"}, @@ -13830,6 +14054,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksNV-pDepthAttachment-08964", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the VkRenderingInfo::pDepthAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::depthAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksNV-pDynamicStates-08715", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpDepthAttachmentReadEXT, the depthWriteEnable parameter in the last call to vkCmdSetDepthWriteEnable must be VK_FALSE", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksNV-pDynamicStates-08716", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_STENCIL_WRITE_MASK set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpStencilAttachmentReadEXT, the writeMask parameter in the last call to vkCmdSetStencilWriteMask must be 0", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksNV-pFragmentSize-09370", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->width to 1 prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMeshTasksNV-pFragmentSize-09371", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksNV-pNext-07935", "If this command has been called inside a render pass instance started with vkCmdBeginRendering, and the pNext chain of VkRenderingInfo includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the value of rasterizationSamples for the currently bound graphics pipeline must be equal to VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksNV-pStencilAttachment-06187", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksNV-pStencilAttachment-08965", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, stencil test is enabled and the VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::stencilAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, @@ -13844,6 +14070,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-07474", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples extensions are enabled, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments", "1.3-extensions"}, {"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 currently bound pipeline state, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "1.3-extensions"}, {"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", "1.3-extensions"}, + {"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", "1.3-extensions"}, {"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, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksNV-reductionMode-09213", "Any VkImageView being sampled with a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM as a result of this command must sample with VK_FILTER_CUBIC_EXT", "1.3-extensions"}, {"VUID-vkCmdDrawMeshTasksNV-renderPass-02684", "The current render pass must be compatible with the renderPass member of the VkGraphicsPipelineCreateInfo structure specified when creating the VkPipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS", "1.3-extensions"}, @@ -13953,10 +14180,10 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"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 in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMultiEXT-None-07834", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then vkCmdSetDepthBias or vkCmdSetDepthBias2EXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMultiEXT-None-07835", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then vkCmdSetBlendConstants must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMultiEXT-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMultiEXT-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMultiEXT-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMultiEXT-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMultiEXT-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled, and if the current depthBoundsTestEnable state is VK_TRUE, then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMultiEXT-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMultiEXT-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMultiEXT-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMultiEXT-None-07840", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CULL_MODE dynamic state enabled then vkCmdSetCullMode must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMultiEXT-None-07841", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_FRONT_FACE dynamic state enabled then vkCmdSetFrontFace must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMultiEXT-None-07842", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, @@ -14086,6 +14313,12 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMultiEXT-None-09211", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the rasterizationSamples member of that structure", "1.3-extensions"}, {"VUID-vkCmdDrawMultiEXT-None-09232", "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMultiEXT-None-09237", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage, then vkCmdSetTessellationDomainOriginEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMultiEXT-None-09363", "If there is no shader object bound to any graphics stage, the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawMultiEXT-None-09364", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled, then vkCmdSetColorBlendEnableEXT must have set the blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMultiEXT-None-09365", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMultiEXT-None-09366", "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 vkCmdSetColorBlendEnableEXT must have set blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMultiEXT-None-09368", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently 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->width to 1 prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMultiEXT-None-09369", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently 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", "1.3-extensions"}, {"VUID-vkCmdDrawMultiEXT-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", "1.3-extensions"}, {"VUID-vkCmdDrawMultiEXT-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", "1.3-extensions"}, {"VUID-vkCmdDrawMultiEXT-OpImageBlockMatchSSDQCOM-06974", "If OpImageBlockMatchSSDQCOM is used to read from an VkImageView as a result of this command, then the image view's format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM", "1.3-extensions"}, @@ -14118,6 +14351,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMultiEXT-blendEnable-04727", "If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view's format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the blendEnable member of the corresponding element of the pAttachments member of pColorBlendState must be VK_FALSE", "1.3-extensions"}, {"VUID-vkCmdDrawMultiEXT-colorAttachmentCount-06179", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount equal to VkRenderingInfo::colorAttachmentCount", "1.3-extensions"}, {"VUID-vkCmdDrawMultiEXT-colorAttachmentCount-06185", "If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount parameter greater than 0, then each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawMultiEXT-colorAttachmentCount-09362", "If the current render pass instance was begun with vkCmdBeginRendering, with a VkRenderingInfo::colorAttachmentCount equal to 1, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a resolveImageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawMultiEXT-colorAttachmentCount-09372", "If the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, and a fragment shader is bound, it must not declare the DepthReplacing or StencilRefReplacingEXT execution modes", "1.3-extensions"}, {"VUID-vkCmdDrawMultiEXT-commandBuffer-02707", "If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, any resource accessed by bound shaders must not be a protected resource", "1.3-extensions"}, {"VUID-vkCmdDrawMultiEXT-commandBuffer-02712", "If commandBuffer is a protected command buffer and protectedNoFault is not supported, any resource written to by the VkPipeline object bound to the pipeline bind point used by this command must not be an unprotected resource", "1.3-extensions"}, {"VUID-vkCmdDrawMultiEXT-commandBuffer-02713", "If commandBuffer is a protected command buffer and protectedNoFault is not supported, pipeline stages other than the framebuffer-space and compute stages in the VkPipeline object bound to the pipeline bind point used by this command must not write to any resource", "1.3-extensions"}, @@ -14177,6 +14412,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMultiEXT-pDepthAttachment-08964", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the VkRenderingInfo::pDepthAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::depthAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, {"VUID-vkCmdDrawMultiEXT-pDynamicStates-08715", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpDepthAttachmentReadEXT, the depthWriteEnable parameter in the last call to vkCmdSetDepthWriteEnable must be VK_FALSE", "1.3-extensions"}, {"VUID-vkCmdDrawMultiEXT-pDynamicStates-08716", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_STENCIL_WRITE_MASK set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpStencilAttachmentReadEXT, the writeMask parameter in the last call to vkCmdSetStencilWriteMask must be 0", "1.3-extensions"}, + {"VUID-vkCmdDrawMultiEXT-pFragmentSize-09370", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->width to 1 prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMultiEXT-pFragmentSize-09371", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMultiEXT-pNext-07935", "If this command has been called inside a render pass instance started with vkCmdBeginRendering, and the pNext chain of VkRenderingInfo includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the value of rasterizationSamples for the currently bound graphics pipeline must be equal to VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples", "1.3-extensions"}, {"VUID-vkCmdDrawMultiEXT-pStencilAttachment-06187", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView", "1.3-extensions"}, {"VUID-vkCmdDrawMultiEXT-pStencilAttachment-08965", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, stencil test is enabled and the VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::stencilAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, @@ -14191,6 +14428,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMultiEXT-rasterizationSamples-07474", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples extensions are enabled, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments", "1.3-extensions"}, {"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 currently bound pipeline state, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "1.3-extensions"}, {"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", "1.3-extensions"}, + {"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", "1.3-extensions"}, {"VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-08884", "If 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, vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"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, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMultiEXT-reductionMode-09213", "Any VkImageView being sampled with a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM as a result of this command must sample with VK_FILTER_CUBIC_EXT", "1.3-extensions"}, @@ -14302,10 +14540,10 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"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 in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-07834", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then vkCmdSetDepthBias or vkCmdSetDepthBias2EXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-07835", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then vkCmdSetBlendConstants must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMultiIndexedEXT-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMultiIndexedEXT-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMultiIndexedEXT-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdDrawMultiIndexedEXT-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMultiIndexedEXT-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled, and if the current depthBoundsTestEnable state is VK_TRUE, then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMultiIndexedEXT-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMultiIndexedEXT-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMultiIndexedEXT-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-07840", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CULL_MODE dynamic state enabled then vkCmdSetCullMode must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-07841", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_FRONT_FACE dynamic state enabled then vkCmdSetFrontFace must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-07842", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, @@ -14435,6 +14673,12 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMultiIndexedEXT-None-09211", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the rasterizationSamples member of that structure", "1.3-extensions"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-09232", "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-09237", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage, then vkCmdSetTessellationDomainOriginEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMultiIndexedEXT-None-09363", "If there is no shader object bound to any graphics stage, the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawMultiIndexedEXT-None-09364", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled, then vkCmdSetColorBlendEnableEXT must have set the blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMultiIndexedEXT-None-09365", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMultiIndexedEXT-None-09366", "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 vkCmdSetColorBlendEnableEXT must have set blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMultiIndexedEXT-None-09368", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently 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->width to 1 prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMultiIndexedEXT-None-09369", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently 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", "1.3-extensions"}, {"VUID-vkCmdDrawMultiIndexedEXT-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", "1.3-extensions"}, {"VUID-vkCmdDrawMultiIndexedEXT-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", "1.3-extensions"}, {"VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchSSDQCOM-06974", "If OpImageBlockMatchSSDQCOM is used to read from an VkImageView as a result of this command, then the image view's format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM", "1.3-extensions"}, @@ -14467,6 +14711,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMultiIndexedEXT-blendEnable-04727", "If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view's format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the blendEnable member of the corresponding element of the pAttachments member of pColorBlendState must be VK_FALSE", "1.3-extensions"}, {"VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-06179", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount equal to VkRenderingInfo::colorAttachmentCount", "1.3-extensions"}, {"VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-06185", "If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount parameter greater than 0, then each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-09362", "If the current render pass instance was begun with vkCmdBeginRendering, with a VkRenderingInfo::colorAttachmentCount equal to 1, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a resolveImageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-09372", "If the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, and a fragment shader is bound, it must not declare the DepthReplacing or StencilRefReplacingEXT execution modes", "1.3-extensions"}, {"VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-02707", "If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, any resource accessed by bound shaders must not be a protected resource", "1.3-extensions"}, {"VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-02712", "If commandBuffer is a protected command buffer and protectedNoFault is not supported, any resource written to by the VkPipeline object bound to the pipeline bind point used by this command must not be an unprotected resource", "1.3-extensions"}, {"VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-02713", "If commandBuffer is a protected command buffer and protectedNoFault is not supported, pipeline stages other than the framebuffer-space and compute stages in the VkPipeline object bound to the pipeline bind point used by this command must not write to any resource", "1.3-extensions"}, @@ -14526,6 +14772,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMultiIndexedEXT-pDepthAttachment-08964", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the VkRenderingInfo::pDepthAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::depthAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, {"VUID-vkCmdDrawMultiIndexedEXT-pDynamicStates-08715", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpDepthAttachmentReadEXT, the depthWriteEnable parameter in the last call to vkCmdSetDepthWriteEnable must be VK_FALSE", "1.3-extensions"}, {"VUID-vkCmdDrawMultiIndexedEXT-pDynamicStates-08716", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_STENCIL_WRITE_MASK set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpStencilAttachmentReadEXT, the writeMask parameter in the last call to vkCmdSetStencilWriteMask must be 0", "1.3-extensions"}, + {"VUID-vkCmdDrawMultiIndexedEXT-pFragmentSize-09370", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->width to 1 prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdDrawMultiIndexedEXT-pFragmentSize-09371", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMultiIndexedEXT-pNext-07935", "If this command has been called inside a render pass instance started with vkCmdBeginRendering, and the pNext chain of VkRenderingInfo includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the value of rasterizationSamples for the currently bound graphics pipeline must be equal to VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples", "1.3-extensions"}, {"VUID-vkCmdDrawMultiIndexedEXT-pStencilAttachment-06187", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView", "1.3-extensions"}, {"VUID-vkCmdDrawMultiIndexedEXT-pStencilAttachment-08965", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, stencil test is enabled and the VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::stencilAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, @@ -14541,6 +14789,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-07474", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples extensions are enabled, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments", "1.3-extensions"}, {"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 currently bound pipeline state, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "1.3-extensions"}, {"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", "1.3-extensions"}, + {"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", "1.3-extensions"}, {"VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-08884", "If 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, vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"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, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdDrawMultiIndexedEXT-reductionMode-09213", "Any VkImageView being sampled with a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM as a result of this command must sample with VK_FILTER_CUBIC_EXT", "1.3-extensions"}, @@ -14742,6 +14991,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdExecuteCommands-pNext-06035", "If vkCmdExecuteCommands is being called within a render pass instance begun with vkCmdBeginRendering and the pNext chain of VkCommandBufferInheritanceInfo does not include a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, if the imageView member of an element of the VkRenderingInfo::pColorAttachments parameter to vkCmdBeginRendering is not VK_NULL_HANDLE, the value of VkCommandBufferInheritanceRenderingInfo::rasterizationSamples must be equal to the sample count used to create that image view", "1.3-extensions"}, {"VUID-vkCmdExecuteCommands-pNext-06036", "If vkCmdExecuteCommands is being called within a render pass instance begun with vkCmdBeginRendering and the pNext chain of VkCommandBufferInheritanceInfo does not include a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, if the VkRenderingInfo::pDepthAttachment->imageView parameter to vkCmdBeginRendering is not VK_NULL_HANDLE, the value of VkCommandBufferInheritanceRenderingInfo::rasterizationSamples must be equal to the sample count used to create that image view", "1.3-extensions"}, {"VUID-vkCmdExecuteCommands-pNext-06037", "If vkCmdExecuteCommands is being called within a render pass instance begun with vkCmdBeginRendering and the pNext chain of VkCommandBufferInheritanceInfo does not include a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, if the VkRenderingInfo::pStencilAttachment->imageView parameter to vkCmdBeginRendering is not VK_NULL_HANDLE, the value of VkCommandBufferInheritanceRenderingInfo::rasterizationSamples must be equal to the sample count used to create that image view", "1.3-extensions"}, + {"VUID-vkCmdExecuteCommands-pNext-09299", "If vkCmdExecuteCommands is being called within a render pass instance begun with vkCmdBeginRendering, with any color attachment using a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, the pNext chain of VkCommandBufferInheritanceInfo used to create each element of pCommandBuffers must include a VkExternalFormatANDROID structure with a externalFormat matching that used to create the resolve attachment in the render pass", "1.3-extensions"}, + {"VUID-vkCmdExecuteCommands-pNext-09300", "If vkCmdExecuteCommands is being called within a render pass instance begun with vkCmdBeginRendering with any color attachment using a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, and the pNext chain of VkCommandBufferInheritanceInfo does not include a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, the value of VkCommandBufferInheritanceRenderingInfo::rasterizationSamples must be VK_SAMPLE_COUNT_1_BIT", "1.3-extensions"}, {"VUID-vkCmdExecuteCommands-pStencilAttachment-06030", "If vkCmdExecuteCommands is being called within a render pass instance begun with vkCmdBeginRendering, if the VkRenderingInfo::pStencilAttachment->imageView parameter to vkCmdBeginRendering is not VK_NULL_HANDLE, the value of the stencilAttachmentFormat member of the VkCommandBufferInheritanceRenderingInfo structure included in the pNext chain of VkCommandBufferBeginInfo::pInheritanceInfo used to begin recording each element of pCommandBuffers must be equal to the format used to create that image view", "1.3-extensions"}, {"VUID-vkCmdExecuteCommands-pStencilAttachment-06775", "If vkCmdExecuteCommands is being called within a render pass instance begun with vkCmdBeginRendering and the VkRenderingInfo::pStencilAttachment->imageView parameter to vkCmdBeginRendering was VK_NULL_HANDLE, the value of the stencilAttachmentFormat member of the VkCommandBufferInheritanceRenderingInfo structure included in the pNext chain of VkCommandBufferBeginInfo::pInheritanceInfo used to begin recording each element of pCommandBuffers must be VK_FORMAT_UNDEFINED", "1.3-extensions"}, {"VUID-vkCmdExecuteCommands-variableSampleLocations-06023", "If the variableSampleLocations limit is not supported, and any element of pCommandBuffers contains any suspended render pass instances, where a graphics pipeline has been bound, any pipelines bound in the render pass instance that resumes it, or any subsequent render pass instances that resume from that one and so on, must use the same sample locations", "1.3-extensions"}, @@ -14811,10 +15062,10 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"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 in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07834", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state enabled then vkCmdSetDepthBias or vkCmdSetDepthBias2EXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07835", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_BLEND_CONSTANTS dynamic state enabled then vkCmdSetBlendConstants must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, - {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07836", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS dynamic state enabled, and if the current depthBoundsTestEnable state is VK_TRUE, then vkCmdSetDepthBounds must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07837", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07838", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07839", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE dynamic state enabled, and if the current stencilTestEnable state is VK_TRUE, then vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07840", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CULL_MODE dynamic state enabled then vkCmdSetCullMode must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07841", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_FRONT_FACE dynamic state enabled then vkCmdSetFrontFace must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07842", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, @@ -14944,6 +15195,12 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdExecuteGeneratedCommandsNV-None-09211", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the rasterizationSamples member of that structure", "1.3-extensions"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-09232", "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-09237", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage, then vkCmdSetTessellationDomainOriginEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdExecuteGeneratedCommandsNV-None-09363", "If there is no shader object bound to any graphics stage, the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdExecuteGeneratedCommandsNV-None-09364", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled, then vkCmdSetColorBlendEnableEXT must have set the blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdExecuteGeneratedCommandsNV-None-09365", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdExecuteGeneratedCommandsNV-None-09366", "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 vkCmdSetColorBlendEnableEXT must have set blend enable to VK_FALSE prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdExecuteGeneratedCommandsNV-None-09368", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the currently 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->width to 1 prior to this drawing command", "1.3-extensions"}, + {"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 currently 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", "1.3-extensions"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-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", "1.3-extensions"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-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", "1.3-extensions"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBlockMatchSSDQCOM-06974", "If OpImageBlockMatchSSDQCOM is used to read from an VkImageView as a result of this command, then the image view's format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM", "1.3-extensions"}, @@ -14976,6 +15233,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdExecuteGeneratedCommandsNV-blendEnable-04727", "If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view's format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the blendEnable member of the corresponding element of the pAttachments member of pColorBlendState must be VK_FALSE", "1.3-extensions"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-colorAttachmentCount-06179", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount equal to VkRenderingInfo::colorAttachmentCount", "1.3-extensions"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-colorAttachmentCount-06185", "If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount parameter greater than 0, then each element of the VkRenderingInfo::pColorAttachments array with a imageView not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdExecuteGeneratedCommandsNV-colorAttachmentCount-09362", "If the current render pass instance was begun with vkCmdBeginRendering, with a VkRenderingInfo::colorAttachmentCount equal to 1, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, each element of the VkRenderingInfo::pColorAttachments array with a resolveImageView not equal to VK_NULL_HANDLE must have been created with an image created with a VkExternalFormatANDROID::externalFormat value equal to the VkExternalFormatANDROID::externalFormat value used to create the currently bound graphics pipeline", "1.3-extensions"}, + {"VUID-vkCmdExecuteGeneratedCommandsNV-colorAttachmentCount-09372", "If the current render pass instance was begun with vkCmdBeginRendering and a VkRenderingInfo::colorAttachmentCount equal to 1, a color attachment with a resolve mode of VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID, and a fragment shader is bound, it must not declare the DepthReplacing or StencilRefReplacingEXT execution modes", "1.3-extensions"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-02707", "If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, any resource accessed by bound shaders must not be a protected resource", "1.3-extensions"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-02970", "commandBuffer must not be a protected command buffer", "1.3-extensions"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-cmdpool", "The VkCommandPool that commandBuffer was allocated from must support graphics, or compute operations", "1.3-extensions"}, @@ -15033,6 +15292,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdExecuteGeneratedCommandsNV-pDepthAttachment-08964", "If the current render pass instance was begun with vkCmdBeginRendering, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the VkRenderingInfo::pDepthAttachment->imageView was not VK_NULL_HANDLE, then the VkPipelineRenderingCreateInfo::depthAttachmentFormat used to create the pipeline must not be VK_FORMAT_UNDEFINED", "1.3-extensions"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-pDynamicStates-08715", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpDepthAttachmentReadEXT, the depthWriteEnable parameter in the last call to vkCmdSetDepthWriteEnable must be VK_FALSE", "1.3-extensions"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-pDynamicStates-08716", "If the bound graphics pipeline state includes a fragment shader stage, was created with VK_DYNAMIC_STATE_STENCIL_WRITE_MASK set in VkPipelineDynamicStateCreateInfo::pDynamicStates, and the fragment shader declares the EarlyFragmentTests execution mode and uses OpStencilAttachmentReadEXT, the writeMask parameter in the last call to vkCmdSetStencilWriteMask must be 0", "1.3-extensions"}, + {"VUID-vkCmdExecuteGeneratedCommandsNV-pFragmentSize-09370", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->width to 1 prior to this drawing command", "1.3-extensions"}, + {"VUID-vkCmdExecuteGeneratedCommandsNV-pFragmentSize-09371", "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 vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-pGeneratedCommandsInfo-parameter", "pGeneratedCommandsInfo must be a valid pointer to a valid VkGeneratedCommandsInfoNV structure", "1.3-extensions"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-pNext-07935", "If this command has been called inside a render pass instance started with vkCmdBeginRendering, and the pNext chain of VkRenderingInfo includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable equal to VK_TRUE, then the value of rasterizationSamples for the currently bound graphics pipeline must be equal to VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples", "1.3-extensions"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-pStencilAttachment-06187", "If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView", "1.3-extensions"}, @@ -15049,6 +15310,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdExecuteGeneratedCommandsNV-rasterizationSamples-07474", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples extensions are enabled, then the rasterizationSamples in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments", "1.3-extensions"}, {"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 currently bound pipeline state, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "1.3-extensions"}, {"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", "1.3-extensions"}, + {"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", "1.3-extensions"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-rasterizerDiscardEnable-08884", "If 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, vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"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, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "1.3-extensions"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-reductionMode-09213", "Any VkImageView being sampled with a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM as a result of this command must sample with VK_FILTER_CUBIC_EXT", "1.3-extensions"}, @@ -15177,7 +15439,9 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdPipelineBarrier-dstStageMask-07318", "If neither the shadingRateImage or attachmentFragmentShadingRate are enabled, dstStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR", "1.3-extensions"}, {"VUID-vkCmdPipelineBarrier-dstStageMask-07949", "If neither the VK_NV_ray_tracing extension or rayTracingPipeline feature are enabled, dstStageMask must not contain VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR", "1.3-extensions"}, {"VUID-vkCmdPipelineBarrier-dstStageMask-parameter", "dstStageMask must be a valid combination of VkPipelineStageFlagBits values", "1.3-extensions"}, - {"VUID-vkCmdPipelineBarrier-image-04073", "If vkCmdPipelineBarrier 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 or depth/stencil attachment", "1.3-extensions"}, + {"VUID-vkCmdPipelineBarrier-image-04073", "If vkCmdPipelineBarrier 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", "1.3-extensions"}, + {"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", "1.3-extensions"}, + {"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", "1.3-extensions"}, {"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", "1.3-extensions"}, {"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", "1.3-extensions"}, {"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", "1.3-extensions"}, @@ -15214,7 +15478,9 @@ 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", "1.3-extensions"}, {"VUID-vkCmdPipelineBarrier2-dependencyFlags-07891", "If vkCmdPipelineBarrier2 is called within a render pass instance, and and the source stage masks of any memory barriers include framebuffer-space stages, then dependencyFlags must include VK_DEPENDENCY_BY_REGION_BIT", "1.3-extensions"}, {"VUID-vkCmdPipelineBarrier2-dstStageMask-03850", "The dstStageMask member of any element of the pMemoryBarriers, pBufferMemoryBarriers, or pImageMemoryBarriers members of pDependencyInfo must only include pipeline stages valid for the queue family that was used to create the command pool that commandBuffer was allocated from", "1.3-extensions"}, - {"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 or depth/stencil attachment", "1.3-extensions"}, + {"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", "1.3-extensions"}, + {"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", "1.3-extensions"}, + {"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", "1.3-extensions"}, {"VUID-vkCmdPipelineBarrier2-oldLayout-01181", "If vkCmdPipelineBarrier2 is called within a render pass instance, the oldLayout and newLayout members of any image memory barrier included in this command must be equal", "1.3-extensions"}, {"VUID-vkCmdPipelineBarrier2-pDependencyInfo-parameter", "pDependencyInfo must be a valid pointer to a valid VkDependencyInfo structure", "1.3-extensions"}, {"VUID-vkCmdPipelineBarrier2-shaderTileImageColorReadAccess-08718", "If vkCmdPipelineBarrier2 is called within a render pass instance and none of the shaderTileImageColorReadAccess, shaderTileImageDepthReadAccess, shaderTileImageStencilReadAccess features are enabled, the render pass must not have been started with vkCmdBeginRendering", "1.3-extensions"}, @@ -17711,6 +17977,11 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkGetImageViewOpaqueCaptureDescriptorDataEXT-pInfo-parameter", "pInfo must be a valid pointer to a valid VkImageViewCaptureDescriptorDataInfoEXT structure", "1.3-extensions"}, {"VUID-vkGetInstanceProcAddr-instance-parameter", "If instance is not NULL, instance must be a valid VkInstance handle", "1.3-extensions"}, {"VUID-vkGetInstanceProcAddr-pName-parameter", "pName must be a null-terminated UTF-8 string", "1.3-extensions"}, + {"VUID-vkGetLatencyTimingsNV-device-parameter", "device must be a valid VkDevice handle", "1.3-extensions"}, + {"VUID-vkGetLatencyTimingsNV-pLatencyMarkerInfo-parameter", "pLatencyMarkerInfo must be a valid pointer to a VkGetLatencyMarkerInfoNV structure", "1.3-extensions"}, + {"VUID-vkGetLatencyTimingsNV-pTimingCount-parameter", "pTimingCount must be a valid pointer to a uint32_t value", "1.3-extensions"}, + {"VUID-vkGetLatencyTimingsNV-swapchain-parameter", "swapchain must be a valid VkSwapchainKHR handle", "1.3-extensions"}, + {"VUID-vkGetLatencyTimingsNV-swapchain-parent", "swapchain must have been created, allocated, or retrieved from device", "1.3-extensions"}, {"VUID-vkGetMemoryAndroidHardwareBufferANDROID-device-parameter", "device must be a valid VkDevice handle", "1.3-extensions"}, {"VUID-vkGetMemoryAndroidHardwareBufferANDROID-pBuffer-parameter", "pBuffer must be a valid pointer to a valid pointer to an AHardwareBuffer value", "1.3-extensions"}, {"VUID-vkGetMemoryAndroidHardwareBufferANDROID-pInfo-parameter", "pInfo must be a valid pointer to a valid VkMemoryGetAndroidHardwareBufferInfoANDROID structure", "1.3-extensions"}, @@ -18182,6 +18453,10 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkInvalidateMappedMemoryRanges-device-parameter", "device must be a valid VkDevice handle", "1.3-extensions"}, {"VUID-vkInvalidateMappedMemoryRanges-memoryRangeCount-arraylength", "memoryRangeCount must be greater than 0", "1.3-extensions"}, {"VUID-vkInvalidateMappedMemoryRanges-pMemoryRanges-parameter", "pMemoryRanges must be a valid pointer to an array of memoryRangeCount valid VkMappedMemoryRange structures", "1.3-extensions"}, + {"VUID-vkLatencySleepNV-device-parameter", "device must be a valid VkDevice handle", "1.3-extensions"}, + {"VUID-vkLatencySleepNV-pSleepInfo-parameter", "pSleepInfo must be a valid pointer to a VkLatencySleepInfoNV structure", "1.3-extensions"}, + {"VUID-vkLatencySleepNV-swapchain-parameter", "swapchain must be a valid VkSwapchainKHR handle", "1.3-extensions"}, + {"VUID-vkLatencySleepNV-swapchain-parent", "swapchain must have been created, allocated, or retrieved from device", "1.3-extensions"}, {"VUID-vkMapMemory-device-parameter", "device must be a valid VkDevice handle", "1.3-extensions"}, {"VUID-vkMapMemory-flags-zerobitmask", "flags must be 0", "1.3-extensions"}, {"VUID-vkMapMemory-memory-00678", "memory must not be currently host mapped", "1.3-extensions"}, @@ -18226,6 +18501,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkQueueEndDebugUtilsLabelEXT-queue-parameter", "queue must be a valid VkQueue handle", "1.3-extensions"}, {"VUID-vkQueueInsertDebugUtilsLabelEXT-pLabelInfo-parameter", "pLabelInfo must be a valid pointer to a valid VkDebugUtilsLabelEXT structure", "1.3-extensions"}, {"VUID-vkQueueInsertDebugUtilsLabelEXT-queue-parameter", "queue must be a valid VkQueue handle", "1.3-extensions"}, + {"VUID-vkQueueNotifyOutOfBandNV-pQueueTypeInfo-parameter", "pQueueTypeInfo must be a valid VkOutOfBandQueueTypeInfoNV structure", "1.3-extensions"}, + {"VUID-vkQueueNotifyOutOfBandNV-queue-parameter", "queue must be a valid VkQueue handle", "1.3-extensions"}, {"VUID-vkQueuePresentKHR-pPresentInfo-parameter", "pPresentInfo must be a valid pointer to a valid VkPresentInfoKHR structure", "1.3-extensions"}, {"VUID-vkQueuePresentKHR-pSwapchains-01292", "Each element of pSwapchains member of pPresentInfo must be a swapchain that is created for a surface for which presentation is supported from queue as determined using a call to vkGetPhysicalDeviceSurfaceSupportKHR", "1.3-extensions"}, {"VUID-vkQueuePresentKHR-pSwapchains-01293", "If more than one member of pSwapchains was created from a display surface, all display surfaces referenced that refer to the same display must use the same display mode", "1.3-extensions"}, @@ -18370,6 +18647,14 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkSetHdrMetadataEXT-pSwapchains-parameter", "pSwapchains must be a valid pointer to an array of swapchainCount valid VkSwapchainKHR handles", "1.3-extensions"}, {"VUID-vkSetHdrMetadataEXT-pSwapchains-parent", "Each element of pSwapchains must have been created, allocated, or retrieved from device", "1.3-extensions"}, {"VUID-vkSetHdrMetadataEXT-swapchainCount-arraylength", "swapchainCount must be greater than 0", "1.3-extensions"}, + {"VUID-vkSetLatencyMarkerNV-device-parameter", "device must be a valid VkDevice handle", "1.3-extensions"}, + {"VUID-vkSetLatencyMarkerNV-pLatencyMarkerInfo-parameter", "pLatencyMarkerInfo must be a valid pointer to a VkSetLatencyMarkerInfoNV structure", "1.3-extensions"}, + {"VUID-vkSetLatencyMarkerNV-swapchain-parameter", "swapchain must be a valid VkSwapchainKHR handle", "1.3-extensions"}, + {"VUID-vkSetLatencyMarkerNV-swapchain-parent", "swapchain must have been created, allocated, or retrieved from device", "1.3-extensions"}, + {"VUID-vkSetLatencySleepModeNV-device-parameter", "device must be a valid VkDevice handle", "1.3-extensions"}, + {"VUID-vkSetLatencySleepModeNV-pSleepModeInfo-parameter", "pSleepModeInfo must be a valid pointer to a VkLatencySleepModeInfoNV structure", "1.3-extensions"}, + {"VUID-vkSetLatencySleepModeNV-swapchain-parameter", "swapchain must be a valid VkSwapchainKHR handle", "1.3-extensions"}, + {"VUID-vkSetLatencySleepModeNV-swapchain-parent", "swapchain must have been created, allocated, or retrieved from device", "1.3-extensions"}, {"VUID-vkSetLocalDimmingAMD-device-parameter", "device must be a valid VkDevice handle", "1.3-extensions"}, {"VUID-vkSetLocalDimmingAMD-localDimmingSupport-04618", "VkDisplayNativeHdrSurfaceCapabilitiesAMD::localDimmingSupport must be supported", "1.3-extensions"}, {"VUID-vkSetLocalDimmingAMD-swapChain-parameter", "swapChain must be a valid VkSwapchainKHR handle", "1.3-extensions"}, diff --git a/scripts/known_good.json b/scripts/known_good.json index e0a1fb6aca0..2b0ab28bd21 100755 --- a/scripts/known_good.json +++ b/scripts/known_good.json @@ -21,7 +21,7 @@ "sub_dir": "Vulkan-Headers", "build_dir": "Vulkan-Headers/build", "install_dir": "Vulkan-Headers/build/install", - "commit": "v1.3.265" + "commit": "v1.3.266" }, { "name": "Vulkan-Utility-Libraries", @@ -29,7 +29,7 @@ "sub_dir": "Vulkan-Utility-Libraries", "build_dir": "Vulkan-Utility-Libraries/build", "install_dir": "Vulkan-Utility-Libraries/build/install", - "commit": "v1.3.265", + "commit": "v1.3.266", "deps": [ { "var_name": "VULKAN_HEADERS_INSTALL_DIR", diff --git a/tests/layers/VkLayer_device_profile_api.json.in b/tests/layers/VkLayer_device_profile_api.json.in index 8550f5d18bb..70b6ba07b51 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.3.265", + "api_version": "1.3.266", "implementation_version": "2", "description": "LunarG Device Profile Api Layer", "device_extensions": [