diff options
-rw-r--r-- | include/vulkan/vulkan.cppm | 76 | ||||
-rw-r--r-- | include/vulkan/vulkan.hpp | 284 | ||||
-rw-r--r-- | include/vulkan/vulkan_core.h | 346 | ||||
-rw-r--r-- | include/vulkan/vulkan_enums.hpp | 142 | ||||
-rw-r--r-- | include/vulkan/vulkan_extension_inspection.hpp | 33 | ||||
-rw-r--r-- | include/vulkan/vulkan_funcs.hpp | 441 | ||||
-rw-r--r-- | include/vulkan/vulkan_handles.hpp | 435 | ||||
-rw-r--r-- | include/vulkan/vulkan_hash.hpp | 371 | ||||
-rw-r--r-- | include/vulkan/vulkan_hpp_macros.hpp | 23 | ||||
-rw-r--r-- | include/vulkan/vulkan_raii.hpp | 476 | ||||
-rw-r--r-- | include/vulkan/vulkan_shared.hpp | 26 | ||||
-rw-r--r-- | include/vulkan/vulkan_static_assertions.hpp | 192 | ||||
-rw-r--r-- | include/vulkan/vulkan_structs.hpp | 3078 | ||||
-rw-r--r-- | include/vulkan/vulkan_to_string.hpp | 151 | ||||
-rw-r--r-- | registry/validusage.json | 3750 | ||||
-rw-r--r-- | registry/video.xml | 2 | ||||
-rw-r--r-- | registry/vk.xml | 447 |
17 files changed, 9654 insertions, 619 deletions
diff --git a/include/vulkan/vulkan.cppm b/include/vulkan/vulkan.cppm index 60b70f0..48b685b 100644 --- a/include/vulkan/vulkan.cppm +++ b/include/vulkan/vulkan.cppm @@ -10,6 +10,12 @@ module; +#include <vulkan/vulkan_hpp_macros.hpp> + +#if defined( __cpp_lib_modules ) +# define VULKAN_HPP_ENABLE_STD_MODULE +#endif + #include <vulkan/vulkan.hpp> #include <vulkan/vulkan_extension_inspection.hpp> #include <vulkan/vulkan_format_traits.hpp> @@ -879,6 +885,17 @@ export namespace VULKAN_HPP_NAMESPACE //=== VK_KHR_maintenance7 === using VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiKHR; + //=== VK_EXT_device_generated_commands === + using VULKAN_HPP_NAMESPACE::IndirectCommandsInputModeFlagBitsEXT; + using VULKAN_HPP_NAMESPACE::IndirectCommandsInputModeFlagsEXT; + using VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagBitsEXT; + using VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsEXT; + using VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeEXT; + using VULKAN_HPP_NAMESPACE::IndirectExecutionSetInfoTypeEXT; + + //=== VK_EXT_depth_clamp_control === + using VULKAN_HPP_NAMESPACE::DepthClampModeEXT; + //========================= //=== Index Type Traits === //========================= @@ -2572,14 +2589,23 @@ export namespace VULKAN_HPP_NAMESPACE using VULKAN_HPP_NAMESPACE::NVRayTracingValidationExtensionName; using VULKAN_HPP_NAMESPACE::NVRayTracingValidationSpecVersion; + //=== VK_EXT_device_generated_commands === + using VULKAN_HPP_NAMESPACE::EXTDeviceGeneratedCommandsExtensionName; + using VULKAN_HPP_NAMESPACE::EXTDeviceGeneratedCommandsSpecVersion; + //=== VK_MESA_image_alignment_control === using VULKAN_HPP_NAMESPACE::MESAImageAlignmentControlExtensionName; using VULKAN_HPP_NAMESPACE::MESAImageAlignmentControlSpecVersion; + //=== VK_EXT_depth_clamp_control === + using VULKAN_HPP_NAMESPACE::EXTDepthClampControlExtensionName; + using VULKAN_HPP_NAMESPACE::EXTDepthClampControlSpecVersion; + //======================== //=== CONSTEXPR VALUEs === //======================== using VULKAN_HPP_NAMESPACE::HeaderVersion; + using VULKAN_HPP_NAMESPACE::Use64BitPtrDefines; //========================= //=== CONSTEXPR CALLEEs === @@ -4463,11 +4489,41 @@ export namespace VULKAN_HPP_NAMESPACE //=== VK_NV_ray_tracing_validation === using VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingValidationFeaturesNV; + //=== VK_EXT_device_generated_commands === + using VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandEXT; + using VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandEXT; + using VULKAN_HPP_NAMESPACE::DrawIndirectCountIndirectCommandEXT; + using VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoEXT; + using VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoEXT; + using VULKAN_HPP_NAMESPACE::GeneratedCommandsPipelineInfoEXT; + using VULKAN_HPP_NAMESPACE::GeneratedCommandsShaderInfoEXT; + using VULKAN_HPP_NAMESPACE::IndirectCommandsExecutionSetTokenEXT; + using VULKAN_HPP_NAMESPACE::IndirectCommandsIndexBufferTokenEXT; + using VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoEXT; + using VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenEXT; + using VULKAN_HPP_NAMESPACE::IndirectCommandsPushConstantTokenEXT; + using VULKAN_HPP_NAMESPACE::IndirectCommandsTokenDataEXT; + using VULKAN_HPP_NAMESPACE::IndirectCommandsVertexBufferTokenEXT; + using VULKAN_HPP_NAMESPACE::IndirectExecutionSetCreateInfoEXT; + using VULKAN_HPP_NAMESPACE::IndirectExecutionSetInfoEXT; + using VULKAN_HPP_NAMESPACE::IndirectExecutionSetPipelineInfoEXT; + using VULKAN_HPP_NAMESPACE::IndirectExecutionSetShaderInfoEXT; + using VULKAN_HPP_NAMESPACE::IndirectExecutionSetShaderLayoutInfoEXT; + using VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT; + using VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT; + using VULKAN_HPP_NAMESPACE::WriteIndirectExecutionSetPipelineEXT; + using VULKAN_HPP_NAMESPACE::WriteIndirectExecutionSetShaderEXT; + //=== VK_MESA_image_alignment_control === using VULKAN_HPP_NAMESPACE::ImageAlignmentControlCreateInfoMESA; using VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlFeaturesMESA; using VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlPropertiesMESA; + //=== VK_EXT_depth_clamp_control === + using VULKAN_HPP_NAMESPACE::DepthClampRangeEXT; + using VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampControlFeaturesEXT; + using VULKAN_HPP_NAMESPACE::PipelineViewportDepthClampControlCreateInfoEXT; + //=============== //=== HANDLEs === //=============== @@ -4573,6 +4629,10 @@ export namespace VULKAN_HPP_NAMESPACE //=== VK_KHR_pipeline_binary === using VULKAN_HPP_NAMESPACE::PipelineBinaryKHR; + //=== VK_EXT_device_generated_commands === + using VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT; + using VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT; + //====================== //=== UNIQUE HANDLEs === //====================== @@ -4673,8 +4733,12 @@ export namespace VULKAN_HPP_NAMESPACE using VULKAN_HPP_NAMESPACE::UniqueShaderEXT; //=== VK_KHR_pipeline_binary === - using VULKAN_HPP_NAMESPACE::UniqueHandleTraits; using VULKAN_HPP_NAMESPACE::UniquePipelineBinaryKHR; + + //=== VK_EXT_device_generated_commands === + using VULKAN_HPP_NAMESPACE::UniqueHandleTraits; + using VULKAN_HPP_NAMESPACE::UniqueIndirectCommandsLayoutEXT; + using VULKAN_HPP_NAMESPACE::UniqueIndirectExecutionSetEXT; #endif /*VULKAN_HPP_NO_SMART_HANDLE*/ //====================== @@ -4780,8 +4844,12 @@ export namespace VULKAN_HPP_NAMESPACE using VULKAN_HPP_NAMESPACE::SharedShaderEXT; //=== VK_KHR_pipeline_binary === - using VULKAN_HPP_NAMESPACE::SharedHandleTraits; using VULKAN_HPP_NAMESPACE::SharedPipelineBinaryKHR; + + //=== VK_EXT_device_generated_commands === + using VULKAN_HPP_NAMESPACE::SharedHandleTraits; + using VULKAN_HPP_NAMESPACE::SharedIndirectCommandsLayoutEXT; + using VULKAN_HPP_NAMESPACE::SharedIndirectExecutionSetEXT; #endif /*VULKAN_HPP_NO_SMART_HANDLE*/ //=========================== @@ -4966,6 +5034,10 @@ export namespace VULKAN_HPP_NAMESPACE using VULKAN_HPP_RAII_NAMESPACE::PipelineBinaryKHR; using VULKAN_HPP_RAII_NAMESPACE::PipelineBinaryKHRs; + //=== VK_EXT_device_generated_commands === + using VULKAN_HPP_RAII_NAMESPACE::IndirectCommandsLayoutEXT; + using VULKAN_HPP_RAII_NAMESPACE::IndirectExecutionSetEXT; + } // namespace VULKAN_HPP_RAII_NAMESPACE #endif } // namespace VULKAN_HPP_NAMESPACE diff --git a/include/vulkan/vulkan.hpp b/include/vulkan/vulkan.hpp index d5744c1..7ab6fb6 100644 --- a/include/vulkan/vulkan.hpp +++ b/include/vulkan/vulkan.hpp @@ -8,24 +8,30 @@ #ifndef VULKAN_HPP #define VULKAN_HPP -#include <algorithm> -#include <array> // ArrayWrapperND -#include <string.h> // strnlen -#include <string> // std::string -#include <utility> // std::exchange -#include <vulkan/vulkan.h> #include <vulkan/vulkan_hpp_macros.hpp> -#if 17 <= VULKAN_HPP_CPP_VERSION +#if defined( VULKAN_HPP_ENABLE_STD_MODULE ) && defined( VULKAN_HPP_STD_MODULE ) +# include <string.h> +import VULKAN_HPP_STD_MODULE; +#else +# include <algorithm> +# include <array> // ArrayWrapperND +# include <string.h> // strnlen +# include <string> // std::string +# include <utility> // std::exchange +#endif +#include <vulkan/vulkan.h> + +#if 17 <= VULKAN_HPP_CPP_VERSION && !( defined( VULKAN_HPP_ENABLE_STD_MODULE ) && defined( VULKAN_HPP_STD_MODULE ) ) # include <string_view> #endif -#if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) +#if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) && !( defined( VULKAN_HPP_ENABLE_STD_MODULE ) && defined( VULKAN_HPP_STD_MODULE ) ) # include <tuple> // std::tie # include <vector> // std::vector #endif -#if !defined( VULKAN_HPP_NO_EXCEPTIONS ) +#if !defined( VULKAN_HPP_NO_EXCEPTIONS ) && !( defined( VULKAN_HPP_ENABLE_STD_MODULE ) && defined( VULKAN_HPP_STD_MODULE ) ) # include <system_error> // std::is_error_code_enum #endif @@ -49,15 +55,15 @@ extern "C" __declspec( dllimport ) FARPROC __stdcall GetProcAddress( HINSTANCE h # endif #endif -#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) && !( defined( VULKAN_HPP_ENABLE_STD_MODULE ) && defined( VULKAN_HPP_STD_MODULE ) ) # include <compare> #endif -#if defined( VULKAN_HPP_SUPPORT_SPAN ) +#if defined( VULKAN_HPP_SUPPORT_SPAN ) && !( defined( VULKAN_HPP_ENABLE_STD_MODULE ) && defined( VULKAN_HPP_STD_MODULE ) ) # include <span> #endif -static_assert( VK_HEADER_VERSION == 295, "Wrong VK_HEADER_VERSION!" ); +static_assert( VK_HEADER_VERSION == 296, "Wrong VK_HEADER_VERSION!" ); // <tuple> includes <sys/sysmacros.h> through some other header // this results in major(x) being resolved to gnu_dev_major(x) @@ -5742,6 +5748,13 @@ namespace VULKAN_HPP_NAMESPACE return ::vkCmdBindShadersEXT( commandBuffer, stageCount, pStages, pShaders ); } + void vkCmdSetDepthClampRangeEXT( VkCommandBuffer commandBuffer, + VkDepthClampModeEXT depthClampMode, + const VkDepthClampRangeEXT * pDepthClampRange ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetDepthClampRangeEXT( commandBuffer, depthClampMode, pDepthClampRange ); + } + //=== VK_KHR_pipeline_binary === VkResult vkCreatePipelineBinariesKHR( VkDevice device, @@ -5910,6 +5923,75 @@ namespace VULKAN_HPP_NAMESPACE { return ::vkCmdBindDescriptorBufferEmbeddedSamplers2EXT( commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo ); } + + //=== VK_EXT_device_generated_commands === + + void vkGetGeneratedCommandsMemoryRequirementsEXT( VkDevice device, + const VkGeneratedCommandsMemoryRequirementsInfoEXT * pInfo, + VkMemoryRequirements2 * pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetGeneratedCommandsMemoryRequirementsEXT( device, pInfo, pMemoryRequirements ); + } + + void vkCmdPreprocessGeneratedCommandsEXT( VkCommandBuffer commandBuffer, + const VkGeneratedCommandsInfoEXT * pGeneratedCommandsInfo, + VkCommandBuffer stateCommandBuffer ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdPreprocessGeneratedCommandsEXT( commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer ); + } + + void vkCmdExecuteGeneratedCommandsEXT( VkCommandBuffer commandBuffer, + VkBool32 isPreprocessed, + const VkGeneratedCommandsInfoEXT * pGeneratedCommandsInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdExecuteGeneratedCommandsEXT( commandBuffer, isPreprocessed, pGeneratedCommandsInfo ); + } + + VkResult vkCreateIndirectCommandsLayoutEXT( VkDevice device, + const VkIndirectCommandsLayoutCreateInfoEXT * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkIndirectCommandsLayoutEXT * pIndirectCommandsLayout ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateIndirectCommandsLayoutEXT( device, pCreateInfo, pAllocator, pIndirectCommandsLayout ); + } + + void vkDestroyIndirectCommandsLayoutEXT( VkDevice device, + VkIndirectCommandsLayoutEXT indirectCommandsLayout, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyIndirectCommandsLayoutEXT( device, indirectCommandsLayout, pAllocator ); + } + + VkResult vkCreateIndirectExecutionSetEXT( VkDevice device, + const VkIndirectExecutionSetCreateInfoEXT * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkIndirectExecutionSetEXT * pIndirectExecutionSet ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateIndirectExecutionSetEXT( device, pCreateInfo, pAllocator, pIndirectExecutionSet ); + } + + void vkDestroyIndirectExecutionSetEXT( VkDevice device, + VkIndirectExecutionSetEXT indirectExecutionSet, + const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyIndirectExecutionSetEXT( device, indirectExecutionSet, pAllocator ); + } + + void vkUpdateIndirectExecutionSetPipelineEXT( VkDevice device, + VkIndirectExecutionSetEXT indirectExecutionSet, + uint32_t executionSetWriteCount, + const VkWriteIndirectExecutionSetPipelineEXT * pExecutionSetWrites ) const VULKAN_HPP_NOEXCEPT + { + return ::vkUpdateIndirectExecutionSetPipelineEXT( device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites ); + } + + void vkUpdateIndirectExecutionSetShaderEXT( VkDevice device, + VkIndirectExecutionSetEXT indirectExecutionSet, + uint32_t executionSetWriteCount, + const VkWriteIndirectExecutionSetShaderEXT * pExecutionSetWrites ) const VULKAN_HPP_NOEXCEPT + { + return ::vkUpdateIndirectExecutionSetShaderEXT( device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites ); + } }; inline ::VULKAN_HPP_NAMESPACE::DispatchLoaderStatic & getDispatchLoaderStatic() @@ -6875,7 +6957,8 @@ namespace VULKAN_HPP_NAMESPACE //======================== //=== CONSTEXPR VALUEs === //======================== - VULKAN_HPP_CONSTEXPR_INLINE uint32_t HeaderVersion = VK_HEADER_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t HeaderVersion = VK_HEADER_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t Use64BitPtrDefines = VK_USE_64_BIT_PTR_DEFINES; //========================= //=== CONSTEXPR CALLEEs === @@ -8568,10 +8651,18 @@ namespace VULKAN_HPP_NAMESPACE VULKAN_HPP_CONSTEXPR_INLINE auto NVRayTracingValidationExtensionName = VK_NV_RAY_TRACING_VALIDATION_EXTENSION_NAME; VULKAN_HPP_CONSTEXPR_INLINE auto NVRayTracingValidationSpecVersion = VK_NV_RAY_TRACING_VALIDATION_SPEC_VERSION; + //=== VK_EXT_device_generated_commands === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDeviceGeneratedCommandsExtensionName = VK_EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDeviceGeneratedCommandsSpecVersion = VK_EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION; + //=== VK_MESA_image_alignment_control === VULKAN_HPP_CONSTEXPR_INLINE auto MESAImageAlignmentControlExtensionName = VK_MESA_IMAGE_ALIGNMENT_CONTROL_EXTENSION_NAME; VULKAN_HPP_CONSTEXPR_INLINE auto MESAImageAlignmentControlSpecVersion = VK_MESA_IMAGE_ALIGNMENT_CONTROL_SPEC_VERSION; + //=== VK_EXT_depth_clamp_control === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDepthClampControlExtensionName = VK_EXT_DEPTH_CLAMP_CONTROL_EXTENSION_NAME; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDepthClampControlSpecVersion = VK_EXT_DEPTH_CLAMP_CONTROL_SPEC_VERSION; + } // namespace VULKAN_HPP_NAMESPACE // clang-format off @@ -8653,6 +8744,15 @@ namespace VULKAN_HPP_NAMESPACE }; }; + template <> + struct StructExtends<PipelineLayoutCreateInfo, IndirectCommandsLayoutCreateInfoEXT> + { + enum + { + value = true + }; + }; + //=== VK_VERSION_1_1 === template <> struct StructExtends<PhysicalDeviceSubgroupProperties, PhysicalDeviceProperties2> @@ -16801,6 +16901,70 @@ namespace VULKAN_HPP_NAMESPACE }; }; + //=== VK_EXT_device_generated_commands === + template <> + struct StructExtends<PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT, PhysicalDeviceFeatures2> + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends<PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT, DeviceCreateInfo> + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends<PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT, PhysicalDeviceProperties2> + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends<GeneratedCommandsPipelineInfoEXT, GeneratedCommandsInfoEXT> + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends<GeneratedCommandsPipelineInfoEXT, GeneratedCommandsMemoryRequirementsInfoEXT> + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends<GeneratedCommandsShaderInfoEXT, GeneratedCommandsInfoEXT> + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends<GeneratedCommandsShaderInfoEXT, GeneratedCommandsMemoryRequirementsInfoEXT> + { + enum + { + value = true + }; + }; + //=== VK_MESA_image_alignment_control === template <> struct StructExtends<PhysicalDeviceImageAlignmentControlFeaturesMESA, PhysicalDeviceFeatures2> @@ -16838,6 +17002,34 @@ namespace VULKAN_HPP_NAMESPACE }; }; + //=== VK_EXT_depth_clamp_control === + template <> + struct StructExtends<PhysicalDeviceDepthClampControlFeaturesEXT, PhysicalDeviceFeatures2> + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends<PhysicalDeviceDepthClampControlFeaturesEXT, DeviceCreateInfo> + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends<PipelineViewportDepthClampControlCreateInfoEXT, PipelineViewportStateCreateInfo> + { + enum + { + value = true + }; + }; + #endif // VULKAN_HPP_DISABLE_ENHANCED_MODE #if VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL @@ -18037,10 +18229,11 @@ namespace VULKAN_HPP_NAMESPACE PFN_vkAntiLagUpdateAMD vkAntiLagUpdateAMD = 0; //=== VK_EXT_shader_object === - PFN_vkCreateShadersEXT vkCreateShadersEXT = 0; - PFN_vkDestroyShaderEXT vkDestroyShaderEXT = 0; - PFN_vkGetShaderBinaryDataEXT vkGetShaderBinaryDataEXT = 0; - PFN_vkCmdBindShadersEXT vkCmdBindShadersEXT = 0; + PFN_vkCreateShadersEXT vkCreateShadersEXT = 0; + PFN_vkDestroyShaderEXT vkDestroyShaderEXT = 0; + PFN_vkGetShaderBinaryDataEXT vkGetShaderBinaryDataEXT = 0; + PFN_vkCmdBindShadersEXT vkCmdBindShadersEXT = 0; + PFN_vkCmdSetDepthClampRangeEXT vkCmdSetDepthClampRangeEXT = 0; //=== VK_KHR_pipeline_binary === PFN_vkCreatePipelineBinariesKHR vkCreatePipelineBinariesKHR = 0; @@ -18088,6 +18281,17 @@ namespace VULKAN_HPP_NAMESPACE PFN_vkCmdSetDescriptorBufferOffsets2EXT vkCmdSetDescriptorBufferOffsets2EXT = 0; PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = 0; + //=== VK_EXT_device_generated_commands === + PFN_vkGetGeneratedCommandsMemoryRequirementsEXT vkGetGeneratedCommandsMemoryRequirementsEXT = 0; + PFN_vkCmdPreprocessGeneratedCommandsEXT vkCmdPreprocessGeneratedCommandsEXT = 0; + PFN_vkCmdExecuteGeneratedCommandsEXT vkCmdExecuteGeneratedCommandsEXT = 0; + PFN_vkCreateIndirectCommandsLayoutEXT vkCreateIndirectCommandsLayoutEXT = 0; + PFN_vkDestroyIndirectCommandsLayoutEXT vkDestroyIndirectCommandsLayoutEXT = 0; + PFN_vkCreateIndirectExecutionSetEXT vkCreateIndirectExecutionSetEXT = 0; + PFN_vkDestroyIndirectExecutionSetEXT vkDestroyIndirectExecutionSetEXT = 0; + PFN_vkUpdateIndirectExecutionSetPipelineEXT vkUpdateIndirectExecutionSetPipelineEXT = 0; + PFN_vkUpdateIndirectExecutionSetShaderEXT vkUpdateIndirectExecutionSetShaderEXT = 0; + public: DispatchLoaderDynamic() VULKAN_HPP_NOEXCEPT = default; DispatchLoaderDynamic( DispatchLoaderDynamic const & rhs ) VULKAN_HPP_NOEXCEPT = default; @@ -19449,10 +19653,11 @@ namespace VULKAN_HPP_NAMESPACE vkAntiLagUpdateAMD = PFN_vkAntiLagUpdateAMD( vkGetInstanceProcAddr( instance, "vkAntiLagUpdateAMD" ) ); //=== VK_EXT_shader_object === - vkCreateShadersEXT = PFN_vkCreateShadersEXT( vkGetInstanceProcAddr( instance, "vkCreateShadersEXT" ) ); - vkDestroyShaderEXT = PFN_vkDestroyShaderEXT( vkGetInstanceProcAddr( instance, "vkDestroyShaderEXT" ) ); - vkGetShaderBinaryDataEXT = PFN_vkGetShaderBinaryDataEXT( vkGetInstanceProcAddr( instance, "vkGetShaderBinaryDataEXT" ) ); - vkCmdBindShadersEXT = PFN_vkCmdBindShadersEXT( vkGetInstanceProcAddr( instance, "vkCmdBindShadersEXT" ) ); + vkCreateShadersEXT = PFN_vkCreateShadersEXT( vkGetInstanceProcAddr( instance, "vkCreateShadersEXT" ) ); + vkDestroyShaderEXT = PFN_vkDestroyShaderEXT( vkGetInstanceProcAddr( instance, "vkDestroyShaderEXT" ) ); + vkGetShaderBinaryDataEXT = PFN_vkGetShaderBinaryDataEXT( vkGetInstanceProcAddr( instance, "vkGetShaderBinaryDataEXT" ) ); + vkCmdBindShadersEXT = PFN_vkCmdBindShadersEXT( vkGetInstanceProcAddr( instance, "vkCmdBindShadersEXT" ) ); + vkCmdSetDepthClampRangeEXT = PFN_vkCmdSetDepthClampRangeEXT( vkGetInstanceProcAddr( instance, "vkCmdSetDepthClampRangeEXT" ) ); //=== VK_KHR_pipeline_binary === vkCreatePipelineBinariesKHR = PFN_vkCreatePipelineBinariesKHR( vkGetInstanceProcAddr( instance, "vkCreatePipelineBinariesKHR" ) ); @@ -19503,6 +19708,20 @@ namespace VULKAN_HPP_NAMESPACE vkCmdSetDescriptorBufferOffsets2EXT = PFN_vkCmdSetDescriptorBufferOffsets2EXT( vkGetInstanceProcAddr( instance, "vkCmdSetDescriptorBufferOffsets2EXT" ) ); vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT( vkGetInstanceProcAddr( instance, "vkCmdBindDescriptorBufferEmbeddedSamplers2EXT" ) ); + + //=== VK_EXT_device_generated_commands === + vkGetGeneratedCommandsMemoryRequirementsEXT = + PFN_vkGetGeneratedCommandsMemoryRequirementsEXT( vkGetInstanceProcAddr( instance, "vkGetGeneratedCommandsMemoryRequirementsEXT" ) ); + vkCmdPreprocessGeneratedCommandsEXT = PFN_vkCmdPreprocessGeneratedCommandsEXT( vkGetInstanceProcAddr( instance, "vkCmdPreprocessGeneratedCommandsEXT" ) ); + vkCmdExecuteGeneratedCommandsEXT = PFN_vkCmdExecuteGeneratedCommandsEXT( vkGetInstanceProcAddr( instance, "vkCmdExecuteGeneratedCommandsEXT" ) ); + vkCreateIndirectCommandsLayoutEXT = PFN_vkCreateIndirectCommandsLayoutEXT( vkGetInstanceProcAddr( instance, "vkCreateIndirectCommandsLayoutEXT" ) ); + vkDestroyIndirectCommandsLayoutEXT = PFN_vkDestroyIndirectCommandsLayoutEXT( vkGetInstanceProcAddr( instance, "vkDestroyIndirectCommandsLayoutEXT" ) ); + vkCreateIndirectExecutionSetEXT = PFN_vkCreateIndirectExecutionSetEXT( vkGetInstanceProcAddr( instance, "vkCreateIndirectExecutionSetEXT" ) ); + vkDestroyIndirectExecutionSetEXT = PFN_vkDestroyIndirectExecutionSetEXT( vkGetInstanceProcAddr( instance, "vkDestroyIndirectExecutionSetEXT" ) ); + vkUpdateIndirectExecutionSetPipelineEXT = + PFN_vkUpdateIndirectExecutionSetPipelineEXT( vkGetInstanceProcAddr( instance, "vkUpdateIndirectExecutionSetPipelineEXT" ) ); + vkUpdateIndirectExecutionSetShaderEXT = + PFN_vkUpdateIndirectExecutionSetShaderEXT( vkGetInstanceProcAddr( instance, "vkUpdateIndirectExecutionSetShaderEXT" ) ); } void init( VULKAN_HPP_NAMESPACE::Device deviceCpp ) VULKAN_HPP_NOEXCEPT @@ -20509,10 +20728,11 @@ namespace VULKAN_HPP_NAMESPACE vkAntiLagUpdateAMD = PFN_vkAntiLagUpdateAMD( vkGetDeviceProcAddr( device, "vkAntiLagUpdateAMD" ) ); //=== VK_EXT_shader_object === - vkCreateShadersEXT = PFN_vkCreateShadersEXT( vkGetDeviceProcAddr( device, "vkCreateShadersEXT" ) ); - vkDestroyShaderEXT = PFN_vkDestroyShaderEXT( vkGetDeviceProcAddr( device, "vkDestroyShaderEXT" ) ); - vkGetShaderBinaryDataEXT = PFN_vkGetShaderBinaryDataEXT( vkGetDeviceProcAddr( device, "vkGetShaderBinaryDataEXT" ) ); - vkCmdBindShadersEXT = PFN_vkCmdBindShadersEXT( vkGetDeviceProcAddr( device, "vkCmdBindShadersEXT" ) ); + vkCreateShadersEXT = PFN_vkCreateShadersEXT( vkGetDeviceProcAddr( device, "vkCreateShadersEXT" ) ); + vkDestroyShaderEXT = PFN_vkDestroyShaderEXT( vkGetDeviceProcAddr( device, "vkDestroyShaderEXT" ) ); + vkGetShaderBinaryDataEXT = PFN_vkGetShaderBinaryDataEXT( vkGetDeviceProcAddr( device, "vkGetShaderBinaryDataEXT" ) ); + vkCmdBindShadersEXT = PFN_vkCmdBindShadersEXT( vkGetDeviceProcAddr( device, "vkCmdBindShadersEXT" ) ); + vkCmdSetDepthClampRangeEXT = PFN_vkCmdSetDepthClampRangeEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthClampRangeEXT" ) ); //=== VK_KHR_pipeline_binary === vkCreatePipelineBinariesKHR = PFN_vkCreatePipelineBinariesKHR( vkGetDeviceProcAddr( device, "vkCreatePipelineBinariesKHR" ) ); @@ -20557,6 +20777,20 @@ namespace VULKAN_HPP_NAMESPACE vkCmdSetDescriptorBufferOffsets2EXT = PFN_vkCmdSetDescriptorBufferOffsets2EXT( vkGetDeviceProcAddr( device, "vkCmdSetDescriptorBufferOffsets2EXT" ) ); vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorBufferEmbeddedSamplers2EXT" ) ); + + //=== VK_EXT_device_generated_commands === + vkGetGeneratedCommandsMemoryRequirementsEXT = + PFN_vkGetGeneratedCommandsMemoryRequirementsEXT( vkGetDeviceProcAddr( device, "vkGetGeneratedCommandsMemoryRequirementsEXT" ) ); + vkCmdPreprocessGeneratedCommandsEXT = PFN_vkCmdPreprocessGeneratedCommandsEXT( vkGetDeviceProcAddr( device, "vkCmdPreprocessGeneratedCommandsEXT" ) ); + vkCmdExecuteGeneratedCommandsEXT = PFN_vkCmdExecuteGeneratedCommandsEXT( vkGetDeviceProcAddr( device, "vkCmdExecuteGeneratedCommandsEXT" ) ); + vkCreateIndirectCommandsLayoutEXT = PFN_vkCreateIndirectCommandsLayoutEXT( vkGetDeviceProcAddr( device, "vkCreateIndirectCommandsLayoutEXT" ) ); + vkDestroyIndirectCommandsLayoutEXT = PFN_vkDestroyIndirectCommandsLayoutEXT( vkGetDeviceProcAddr( device, "vkDestroyIndirectCommandsLayoutEXT" ) ); + vkCreateIndirectExecutionSetEXT = PFN_vkCreateIndirectExecutionSetEXT( vkGetDeviceProcAddr( device, "vkCreateIndirectExecutionSetEXT" ) ); + vkDestroyIndirectExecutionSetEXT = PFN_vkDestroyIndirectExecutionSetEXT( vkGetDeviceProcAddr( device, "vkDestroyIndirectExecutionSetEXT" ) ); + vkUpdateIndirectExecutionSetPipelineEXT = + PFN_vkUpdateIndirectExecutionSetPipelineEXT( vkGetDeviceProcAddr( device, "vkUpdateIndirectExecutionSetPipelineEXT" ) ); + vkUpdateIndirectExecutionSetShaderEXT = + PFN_vkUpdateIndirectExecutionSetShaderEXT( vkGetDeviceProcAddr( device, "vkUpdateIndirectExecutionSetShaderEXT" ) ); } template <typename DynamicLoader> diff --git a/include/vulkan/vulkan_core.h b/include/vulkan/vulkan_core.h index 6f1c17f..e6c1649 100644 --- a/include/vulkan/vulkan_core.h +++ b/include/vulkan/vulkan_core.h @@ -69,7 +69,7 @@ extern "C" { #define VK_API_VERSION_1_0 VK_MAKE_API_VERSION(0, 1, 0, 0)// Patch version should always be set to 0 // Version of this file -#define VK_HEADER_VERSION 295 +#define VK_HEADER_VERSION 296 // Complete version of this file #define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION) @@ -1143,9 +1143,25 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV = 1000563000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT = 1000564000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV = 1000568000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT = 1000572000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT = 1000572001, + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT = 1000572002, + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT = 1000572003, + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT = 1000572004, + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT = 1000572006, + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT = 1000572007, + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT = 1000572008, + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT = 1000572009, + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT = 1000572010, + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT = 1000572011, + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT = 1000572012, + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT = 1000572013, + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT = 1000572014, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA = 1000575000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA = 1000575001, VK_STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA = 1000575002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT = 1000582000, + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT = 1000582001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, // VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT is a deprecated alias @@ -1436,6 +1452,8 @@ typedef enum VkObjectType { VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV = 1000464000, VK_OBJECT_TYPE_SHADER_EXT = 1000482000, VK_OBJECT_TYPE_PIPELINE_BINARY_KHR = 1000483000, + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT = 1000572000, + VK_OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT = 1000572001, VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE, VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION, VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = VK_OBJECT_TYPE_PRIVATE_DATA_SLOT, @@ -2013,6 +2031,7 @@ typedef enum VkDynamicState { VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV = 1000455032, VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT = 1000524000, VK_DYNAMIC_STATE_LINE_STIPPLE_KHR = 1000259000, + VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT = 1000582000, VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = VK_DYNAMIC_STATE_LINE_STIPPLE_KHR, VK_DYNAMIC_STATE_CULL_MODE_EXT = VK_DYNAMIC_STATE_CULL_MODE, VK_DYNAMIC_STATE_FRONT_FACE_EXT = VK_DYNAMIC_STATE_FRONT_FACE, @@ -2248,6 +2267,8 @@ typedef enum VkAccessFlagBits { VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR, VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR, VK_ACCESS_NONE_KHR = VK_ACCESS_NONE, + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT = VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV, + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT = VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV, VK_ACCESS_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkAccessFlagBits; typedef VkFlags VkAccessFlags; @@ -2472,6 +2493,7 @@ typedef enum VkPipelineStageFlagBits { VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT, VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT, VK_PIPELINE_STAGE_NONE_KHR = VK_PIPELINE_STAGE_NONE, + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT = VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV, VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkPipelineStageFlagBits; typedef VkFlags VkPipelineStageFlags; @@ -6655,6 +6677,7 @@ static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR = static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT = 0x01000000ULL; static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000ULL; static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV = 0x00020000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_EXT = 0x00020000ULL; static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00400000ULL; static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV = 0x00400000ULL; static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 0x02000000ULL; @@ -6731,6 +6754,8 @@ static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_ static const VkAccessFlagBits2 VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000ULL; static const VkAccessFlagBits2 VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV = 0x00020000ULL; static const VkAccessFlagBits2 VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV = 0x00040000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_EXT = 0x00020000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_EXT = 0x00040000ULL; static const VkAccessFlagBits2 VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 0x00800000ULL; static const VkAccessFlagBits2 VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV = 0x00800000ULL; static const VkAccessFlagBits2 VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR = 0x00200000ULL; @@ -11201,6 +11226,7 @@ static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_PROTECTED_ACCESS_ static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV = 0x10000000ULL; static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT = 0x20000000ULL; static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR = 0x80000000ULL; +static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT = 0x4000000000ULL; typedef VkFlags64 VkBufferUsageFlags2KHR; @@ -11233,6 +11259,7 @@ static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUF static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT = 0x04000000ULL; static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT = 0x00800000ULL; static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT = 0x01000000ULL; +static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT = 0x80000000ULL; typedef struct VkPhysicalDeviceMaintenance5FeaturesKHR { VkStructureType sType; @@ -18858,6 +18885,12 @@ typedef enum VkShaderCodeTypeEXT { VK_SHADER_CODE_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF } VkShaderCodeTypeEXT; +typedef enum VkDepthClampModeEXT { + VK_DEPTH_CLAMP_MODE_VIEWPORT_RANGE_EXT = 0, + VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT = 1, + VK_DEPTH_CLAMP_MODE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDepthClampModeEXT; + typedef enum VkShaderCreateFlagBitsEXT { VK_SHADER_CREATE_LINK_STAGE_BIT_EXT = 0x00000001, VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 0x00000002, @@ -18866,6 +18899,7 @@ typedef enum VkShaderCreateFlagBitsEXT { VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT = 0x00000010, VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT = 0x00000020, VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 0x00000040, + VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT = 0x00000080, VK_SHADER_CREATE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF } VkShaderCreateFlagBitsEXT; typedef VkFlags VkShaderCreateFlagsEXT; @@ -18901,10 +18935,16 @@ typedef struct VkShaderCreateInfoEXT { typedef VkPipelineShaderStageRequiredSubgroupSizeCreateInfo VkShaderRequiredSubgroupSizeCreateInfoEXT; +typedef struct VkDepthClampRangeEXT { + float minDepthClamp; + float maxDepthClamp; +} VkDepthClampRangeEXT; + typedef VkResult (VKAPI_PTR *PFN_vkCreateShadersEXT)(VkDevice device, uint32_t createInfoCount, const VkShaderCreateInfoEXT* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkShaderEXT* pShaders); typedef void (VKAPI_PTR *PFN_vkDestroyShaderEXT)(VkDevice device, VkShaderEXT shader, const VkAllocationCallbacks* pAllocator); typedef VkResult (VKAPI_PTR *PFN_vkGetShaderBinaryDataEXT)(VkDevice device, VkShaderEXT shader, size_t* pDataSize, void* pData); typedef void (VKAPI_PTR *PFN_vkCmdBindShadersEXT)(VkCommandBuffer commandBuffer, uint32_t stageCount, const VkShaderStageFlagBits* pStages, const VkShaderEXT* pShaders); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthClampRangeEXT)(VkCommandBuffer commandBuffer, VkDepthClampModeEXT depthClampMode, const VkDepthClampRangeEXT* pDepthClampRange); #ifndef VK_NO_PROTOTYPES VKAPI_ATTR VkResult VKAPI_CALL vkCreateShadersEXT( @@ -18930,6 +18970,11 @@ VKAPI_ATTR void VKAPI_CALL vkCmdBindShadersEXT( uint32_t stageCount, const VkShaderStageFlagBits* pStages, const VkShaderEXT* pShaders); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthClampRangeEXT( + VkCommandBuffer commandBuffer, + VkDepthClampModeEXT depthClampMode, + const VkDepthClampRangeEXT* pDepthClampRange); #endif @@ -19511,6 +19556,286 @@ typedef struct VkPhysicalDeviceRayTracingValidationFeaturesNV { +// VK_EXT_device_generated_commands is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_device_generated_commands 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkIndirectExecutionSetEXT) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkIndirectCommandsLayoutEXT) +#define VK_EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 1 +#define VK_EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_EXT_device_generated_commands" + +typedef enum VkIndirectExecutionSetInfoTypeEXT { + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT = 0, + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT = 1, + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkIndirectExecutionSetInfoTypeEXT; + +typedef enum VkIndirectCommandsTokenTypeEXT { + VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT = 0, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT = 1, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT = 2, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT = 3, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT = 4, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT = 5, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT = 6, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT = 7, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT = 8, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT = 9, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT = 1000202002, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT = 1000202003, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT = 1000328000, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT = 1000328001, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT = 1000386004, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkIndirectCommandsTokenTypeEXT; + +typedef enum VkIndirectCommandsInputModeFlagBitsEXT { + VK_INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT = 0x00000001, + VK_INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT = 0x00000002, + VK_INDIRECT_COMMANDS_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkIndirectCommandsInputModeFlagBitsEXT; +typedef VkFlags VkIndirectCommandsInputModeFlagsEXT; + +typedef enum VkIndirectCommandsLayoutUsageFlagBitsEXT { + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT = 0x00000001, + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT = 0x00000002, + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkIndirectCommandsLayoutUsageFlagBitsEXT; +typedef VkFlags VkIndirectCommandsLayoutUsageFlagsEXT; +typedef struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 deviceGeneratedCommands; + VkBool32 dynamicGeneratedPipelineLayout; +} VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT; + +typedef struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t maxIndirectPipelineCount; + uint32_t maxIndirectShaderObjectCount; + uint32_t maxIndirectSequenceCount; + uint32_t maxIndirectCommandsTokenCount; + uint32_t maxIndirectCommandsTokenOffset; + uint32_t maxIndirectCommandsIndirectStride; + VkIndirectCommandsInputModeFlagsEXT supportedIndirectCommandsInputModes; + VkShaderStageFlags supportedIndirectCommandsShaderStages; + VkShaderStageFlags supportedIndirectCommandsShaderStagesPipelineBinding; + VkShaderStageFlags supportedIndirectCommandsShaderStagesShaderBinding; + VkBool32 deviceGeneratedCommandsTransformFeedback; + VkBool32 deviceGeneratedCommandsMultiDrawIndirectCount; +} VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT; + +typedef struct VkGeneratedCommandsMemoryRequirementsInfoEXT { + VkStructureType sType; + void* pNext; + VkIndirectExecutionSetEXT indirectExecutionSet; + VkIndirectCommandsLayoutEXT indirectCommandsLayout; + uint32_t maxSequenceCount; + uint32_t maxDrawCount; +} VkGeneratedCommandsMemoryRequirementsInfoEXT; + +typedef struct VkIndirectExecutionSetPipelineInfoEXT { + VkStructureType sType; + const void* pNext; + VkPipeline initialPipeline; + uint32_t maxPipelineCount; +} VkIndirectExecutionSetPipelineInfoEXT; + +typedef struct VkIndirectExecutionSetShaderLayoutInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t setLayoutCount; + const VkDescriptorSetLayout* pSetLayouts; +} VkIndirectExecutionSetShaderLayoutInfoEXT; + +typedef struct VkIndirectExecutionSetShaderInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t shaderCount; + const VkShaderEXT* pInitialShaders; + const VkIndirectExecutionSetShaderLayoutInfoEXT* pSetLayoutInfos; + uint32_t maxShaderCount; + uint32_t pushConstantRangeCount; + const VkPushConstantRange* pPushConstantRanges; +} VkIndirectExecutionSetShaderInfoEXT; + +typedef union VkIndirectExecutionSetInfoEXT { + const VkIndirectExecutionSetPipelineInfoEXT* pPipelineInfo; + const VkIndirectExecutionSetShaderInfoEXT* pShaderInfo; +} VkIndirectExecutionSetInfoEXT; + +typedef struct VkIndirectExecutionSetCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkIndirectExecutionSetInfoTypeEXT type; + VkIndirectExecutionSetInfoEXT info; +} VkIndirectExecutionSetCreateInfoEXT; + +typedef struct VkGeneratedCommandsInfoEXT { + VkStructureType sType; + const void* pNext; + VkShaderStageFlags shaderStages; + VkIndirectExecutionSetEXT indirectExecutionSet; + VkIndirectCommandsLayoutEXT indirectCommandsLayout; + VkDeviceAddress indirectAddress; + VkDeviceSize indirectAddressSize; + VkDeviceAddress preprocessAddress; + VkDeviceSize preprocessSize; + uint32_t maxSequenceCount; + VkDeviceAddress sequenceCountAddress; + uint32_t maxDrawCount; +} VkGeneratedCommandsInfoEXT; + +typedef struct VkWriteIndirectExecutionSetPipelineEXT { + VkStructureType sType; + const void* pNext; + uint32_t index; + VkPipeline pipeline; +} VkWriteIndirectExecutionSetPipelineEXT; + +typedef struct VkIndirectCommandsPushConstantTokenEXT { + VkPushConstantRange updateRange; +} VkIndirectCommandsPushConstantTokenEXT; + +typedef struct VkIndirectCommandsVertexBufferTokenEXT { + uint32_t vertexBindingUnit; +} VkIndirectCommandsVertexBufferTokenEXT; + +typedef struct VkIndirectCommandsIndexBufferTokenEXT { + VkIndirectCommandsInputModeFlagBitsEXT mode; +} VkIndirectCommandsIndexBufferTokenEXT; + +typedef struct VkIndirectCommandsExecutionSetTokenEXT { + VkIndirectExecutionSetInfoTypeEXT type; + VkShaderStageFlags shaderStages; +} VkIndirectCommandsExecutionSetTokenEXT; + +typedef union VkIndirectCommandsTokenDataEXT { + const VkIndirectCommandsPushConstantTokenEXT* pPushConstant; + const VkIndirectCommandsVertexBufferTokenEXT* pVertexBuffer; + const VkIndirectCommandsIndexBufferTokenEXT* pIndexBuffer; + const VkIndirectCommandsExecutionSetTokenEXT* pExecutionSet; +} VkIndirectCommandsTokenDataEXT; + +typedef struct VkIndirectCommandsLayoutTokenEXT { + VkStructureType sType; + const void* pNext; + VkIndirectCommandsTokenTypeEXT type; + VkIndirectCommandsTokenDataEXT data; + uint32_t offset; +} VkIndirectCommandsLayoutTokenEXT; + +typedef struct VkIndirectCommandsLayoutCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkIndirectCommandsLayoutUsageFlagsEXT flags; + VkShaderStageFlags shaderStages; + uint32_t indirectStride; + VkPipelineLayout pipelineLayout; + uint32_t tokenCount; + const VkIndirectCommandsLayoutTokenEXT* pTokens; +} VkIndirectCommandsLayoutCreateInfoEXT; + +typedef struct VkDrawIndirectCountIndirectCommandEXT { + VkDeviceAddress bufferAddress; + uint32_t stride; + uint32_t commandCount; +} VkDrawIndirectCountIndirectCommandEXT; + +typedef struct VkBindVertexBufferIndirectCommandEXT { + VkDeviceAddress bufferAddress; + uint32_t size; + uint32_t stride; +} VkBindVertexBufferIndirectCommandEXT; + +typedef struct VkBindIndexBufferIndirectCommandEXT { + VkDeviceAddress bufferAddress; + uint32_t size; + VkIndexType indexType; +} VkBindIndexBufferIndirectCommandEXT; + +typedef struct VkGeneratedCommandsPipelineInfoEXT { + VkStructureType sType; + void* pNext; + VkPipeline pipeline; +} VkGeneratedCommandsPipelineInfoEXT; + +typedef struct VkGeneratedCommandsShaderInfoEXT { + VkStructureType sType; + void* pNext; + uint32_t shaderCount; + const VkShaderEXT* pShaders; +} VkGeneratedCommandsShaderInfoEXT; + +typedef struct VkWriteIndirectExecutionSetShaderEXT { + VkStructureType sType; + const void* pNext; + uint32_t index; + VkShaderEXT shader; +} VkWriteIndirectExecutionSetShaderEXT; + +typedef void (VKAPI_PTR *PFN_vkGetGeneratedCommandsMemoryRequirementsEXT)(VkDevice device, const VkGeneratedCommandsMemoryRequirementsInfoEXT* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkCmdPreprocessGeneratedCommandsEXT)(VkCommandBuffer commandBuffer, const VkGeneratedCommandsInfoEXT* pGeneratedCommandsInfo, VkCommandBuffer stateCommandBuffer); +typedef void (VKAPI_PTR *PFN_vkCmdExecuteGeneratedCommandsEXT)(VkCommandBuffer commandBuffer, VkBool32 isPreprocessed, const VkGeneratedCommandsInfoEXT* pGeneratedCommandsInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCreateIndirectCommandsLayoutEXT)(VkDevice device, const VkIndirectCommandsLayoutCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutEXT* pIndirectCommandsLayout); +typedef void (VKAPI_PTR *PFN_vkDestroyIndirectCommandsLayoutEXT)(VkDevice device, VkIndirectCommandsLayoutEXT indirectCommandsLayout, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkCreateIndirectExecutionSetEXT)(VkDevice device, const VkIndirectExecutionSetCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectExecutionSetEXT* pIndirectExecutionSet); +typedef void (VKAPI_PTR *PFN_vkDestroyIndirectExecutionSetEXT)(VkDevice device, VkIndirectExecutionSetEXT indirectExecutionSet, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkUpdateIndirectExecutionSetPipelineEXT)(VkDevice device, VkIndirectExecutionSetEXT indirectExecutionSet, uint32_t executionSetWriteCount, const VkWriteIndirectExecutionSetPipelineEXT* pExecutionSetWrites); +typedef void (VKAPI_PTR *PFN_vkUpdateIndirectExecutionSetShaderEXT)(VkDevice device, VkIndirectExecutionSetEXT indirectExecutionSet, uint32_t executionSetWriteCount, const VkWriteIndirectExecutionSetShaderEXT* pExecutionSetWrites); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetGeneratedCommandsMemoryRequirementsEXT( + VkDevice device, + const VkGeneratedCommandsMemoryRequirementsInfoEXT* pInfo, + VkMemoryRequirements2* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkCmdPreprocessGeneratedCommandsEXT( + VkCommandBuffer commandBuffer, + const VkGeneratedCommandsInfoEXT* pGeneratedCommandsInfo, + VkCommandBuffer stateCommandBuffer); + +VKAPI_ATTR void VKAPI_CALL vkCmdExecuteGeneratedCommandsEXT( + VkCommandBuffer commandBuffer, + VkBool32 isPreprocessed, + const VkGeneratedCommandsInfoEXT* pGeneratedCommandsInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateIndirectCommandsLayoutEXT( + VkDevice device, + const VkIndirectCommandsLayoutCreateInfoEXT* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkIndirectCommandsLayoutEXT* pIndirectCommandsLayout); + +VKAPI_ATTR void VKAPI_CALL vkDestroyIndirectCommandsLayoutEXT( + VkDevice device, + VkIndirectCommandsLayoutEXT indirectCommandsLayout, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateIndirectExecutionSetEXT( + VkDevice device, + const VkIndirectExecutionSetCreateInfoEXT* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkIndirectExecutionSetEXT* pIndirectExecutionSet); + +VKAPI_ATTR void VKAPI_CALL vkDestroyIndirectExecutionSetEXT( + VkDevice device, + VkIndirectExecutionSetEXT indirectExecutionSet, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR void VKAPI_CALL vkUpdateIndirectExecutionSetPipelineEXT( + VkDevice device, + VkIndirectExecutionSetEXT indirectExecutionSet, + uint32_t executionSetWriteCount, + const VkWriteIndirectExecutionSetPipelineEXT* pExecutionSetWrites); + +VKAPI_ATTR void VKAPI_CALL vkUpdateIndirectExecutionSetShaderEXT( + VkDevice device, + VkIndirectExecutionSetEXT indirectExecutionSet, + uint32_t executionSetWriteCount, + const VkWriteIndirectExecutionSetShaderEXT* pExecutionSetWrites); +#endif + + // VK_MESA_image_alignment_control is a preprocessor guard. Do not pass it to API calls. #define VK_MESA_image_alignment_control 1 #define VK_MESA_IMAGE_ALIGNMENT_CONTROL_SPEC_VERSION 1 @@ -19535,6 +19860,25 @@ typedef struct VkImageAlignmentControlCreateInfoMESA { +// VK_EXT_depth_clamp_control is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_depth_clamp_control 1 +#define VK_EXT_DEPTH_CLAMP_CONTROL_SPEC_VERSION 1 +#define VK_EXT_DEPTH_CLAMP_CONTROL_EXTENSION_NAME "VK_EXT_depth_clamp_control" +typedef struct VkPhysicalDeviceDepthClampControlFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 depthClampControl; +} VkPhysicalDeviceDepthClampControlFeaturesEXT; + +typedef struct VkPipelineViewportDepthClampControlCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkDepthClampModeEXT depthClampMode; + const VkDepthClampRangeEXT* pDepthClampRange; +} VkPipelineViewportDepthClampControlCreateInfoEXT; + + + // VK_KHR_acceleration_structure is a preprocessor guard. Do not pass it to API calls. #define VK_KHR_acceleration_structure 1 #define VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION 13 diff --git a/include/vulkan/vulkan_enums.hpp b/include/vulkan/vulkan_enums.hpp index fe4f89d..8867e37 100644 --- a/include/vulkan/vulkan_enums.hpp +++ b/include/vulkan/vulkan_enums.hpp @@ -1448,9 +1448,25 @@ namespace VULKAN_HPP_NAMESPACE ePhysicalDeviceShaderAtomicFloat16VectorFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV, ePhysicalDeviceShaderReplicatedCompositesFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT, ePhysicalDeviceRayTracingValidationFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV, + ePhysicalDeviceDeviceGeneratedCommandsFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT, + ePhysicalDeviceDeviceGeneratedCommandsPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT, + eGeneratedCommandsMemoryRequirementsInfoEXT = VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT, + eIndirectExecutionSetCreateInfoEXT = VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT, + eGeneratedCommandsInfoEXT = VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT, + eIndirectCommandsLayoutCreateInfoEXT = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT, + eIndirectCommandsLayoutTokenEXT = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT, + eWriteIndirectExecutionSetPipelineEXT = VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT, + eWriteIndirectExecutionSetShaderEXT = VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT, + eIndirectExecutionSetPipelineInfoEXT = VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT, + eIndirectExecutionSetShaderInfoEXT = VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT, + eIndirectExecutionSetShaderLayoutInfoEXT = VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT, + eGeneratedCommandsPipelineInfoEXT = VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT, + eGeneratedCommandsShaderInfoEXT = VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT, ePhysicalDeviceImageAlignmentControlFeaturesMESA = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA, ePhysicalDeviceImageAlignmentControlPropertiesMESA = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA, - eImageAlignmentControlCreateInfoMESA = VK_STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA + eImageAlignmentControlCreateInfoMESA = VK_STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA, + ePhysicalDeviceDepthClampControlFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT, + ePipelineViewportDepthClampControlCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT }; enum class PipelineCacheHeaderVersion @@ -1515,10 +1531,12 @@ namespace VULKAN_HPP_NAMESPACE #if defined( VK_USE_PLATFORM_FUCHSIA ) eBufferCollectionFUCHSIA = VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA, #endif /*VK_USE_PLATFORM_FUCHSIA*/ - eMicromapEXT = VK_OBJECT_TYPE_MICROMAP_EXT, - eOpticalFlowSessionNV = VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV, - eShaderEXT = VK_OBJECT_TYPE_SHADER_EXT, - ePipelineBinaryKHR = VK_OBJECT_TYPE_PIPELINE_BINARY_KHR + eMicromapEXT = VK_OBJECT_TYPE_MICROMAP_EXT, + eOpticalFlowSessionNV = VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV, + eShaderEXT = VK_OBJECT_TYPE_SHADER_EXT, + ePipelineBinaryKHR = VK_OBJECT_TYPE_PIPELINE_BINARY_KHR, + eIndirectCommandsLayoutEXT = VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT, + eIndirectExecutionSetEXT = VK_OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT }; enum class VendorId @@ -2195,6 +2213,7 @@ namespace VULKAN_HPP_NAMESPACE eFragmentShadingRateAttachmentKHR = VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, eShadingRateImageNV = VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV, eCommandPreprocessNV = VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV, + eCommandPreprocessEXT = VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT, eTaskShaderEXT = VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT, eTaskShaderNV = VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV, eMeshShaderEXT = VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT, @@ -2852,7 +2871,8 @@ namespace VULKAN_HPP_NAMESPACE eCoverageReductionModeNV = VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV, eAttachmentFeedbackLoopEnableEXT = VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT, eLineStippleKHR = VK_DYNAMIC_STATE_LINE_STIPPLE_KHR, - eLineStippleEXT = VK_DYNAMIC_STATE_LINE_STIPPLE_EXT + eLineStippleEXT = VK_DYNAMIC_STATE_LINE_STIPPLE_EXT, + eDepthClampRangeEXT = VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT }; enum class FrontFace @@ -3366,7 +3386,9 @@ namespace VULKAN_HPP_NAMESPACE eFragmentShadingRateAttachmentReadKHR = VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR, eShadingRateImageReadNV = VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV, eCommandPreprocessReadNV = VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV, - eCommandPreprocessWriteNV = VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV + eCommandPreprocessReadEXT = VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT, + eCommandPreprocessWriteNV = VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV, + eCommandPreprocessWriteEXT = VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT }; using AccessFlags = Flags<AccessFlagBits>; @@ -4217,6 +4239,7 @@ namespace VULKAN_HPP_NAMESPACE eTransformFeedbackEXT = VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT, eConditionalRenderingEXT = VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT, eCommandPreprocessNV = VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV, + eCommandPreprocessEXT = VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_EXT, eFragmentShadingRateAttachmentKHR = VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, eShadingRateImageNV = VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV, eAccelerationStructureBuildKHR = VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, @@ -4294,7 +4317,9 @@ namespace VULKAN_HPP_NAMESPACE eTransformFeedbackCounterWriteEXT = VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT, eConditionalRenderingReadEXT = VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT, eCommandPreprocessReadNV = VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV, + eCommandPreprocessReadEXT = VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_EXT, eCommandPreprocessWriteNV = VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV, + eCommandPreprocessWriteEXT = VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_EXT, eFragmentShadingRateAttachmentReadKHR = VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR, eShadingRateImageReadNV = VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV, eAccelerationStructureReadKHR = VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR, @@ -4501,13 +4526,13 @@ namespace VULKAN_HPP_NAMESPACE eBt709NonlinearEXT = VK_COLOR_SPACE_BT709_NONLINEAR_EXT, eBt2020LinearEXT = VK_COLOR_SPACE_BT2020_LINEAR_EXT, eHdr10St2084EXT = VK_COLOR_SPACE_HDR10_ST2084_EXT, - eDolbyvisionEXT = VK_COLOR_SPACE_DOLBYVISION_EXT, - eHdr10HlgEXT = VK_COLOR_SPACE_HDR10_HLG_EXT, - eAdobergbLinearEXT = VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT, - eAdobergbNonlinearEXT = VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT, - ePassThroughEXT = VK_COLOR_SPACE_PASS_THROUGH_EXT, - eExtendedSrgbNonlinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT, - eDisplayNativeAMD = VK_COLOR_SPACE_DISPLAY_NATIVE_AMD + eDolbyvisionEXT VULKAN_HPP_DEPRECATED_17( "eDolbyvisionEXT is deprecated, but no reason was given in the API XML" ) = VK_COLOR_SPACE_DOLBYVISION_EXT, + eHdr10HlgEXT = VK_COLOR_SPACE_HDR10_HLG_EXT, + eAdobergbLinearEXT = VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT, + eAdobergbNonlinearEXT = VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT, + ePassThroughEXT = VK_COLOR_SPACE_PASS_THROUGH_EXT, + eExtendedSrgbNonlinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT, + eDisplayNativeAMD = VK_COLOR_SPACE_DISPLAY_NATIVE_AMD }; enum class CompositeAlphaFlagBitsKHR : VkCompositeAlphaFlagsKHR @@ -7030,7 +7055,8 @@ namespace VULKAN_HPP_NAMESPACE eProtectedAccessOnlyEXT = VK_PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT, eRayTracingDisplacementMicromapNV = VK_PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV, eDescriptorBufferEXT = VK_PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT, - eCaptureData = VK_PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR + eCaptureData = VK_PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR, + eIndirectBindableEXT = VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT }; using PipelineCreateFlags2KHR = Flags<PipelineCreateFlagBits2KHR>; @@ -7055,7 +7081,7 @@ namespace VULKAN_HPP_NAMESPACE PipelineCreateFlagBits2KHR::eColorAttachmentFeedbackLoopEXT | PipelineCreateFlagBits2KHR::eDepthStencilAttachmentFeedbackLoopEXT | PipelineCreateFlagBits2KHR::eNoProtectedAccessEXT | PipelineCreateFlagBits2KHR::eProtectedAccessOnlyEXT | PipelineCreateFlagBits2KHR::eRayTracingDisplacementMicromapNV | PipelineCreateFlagBits2KHR::eDescriptorBufferEXT | - PipelineCreateFlagBits2KHR::eCaptureData; + PipelineCreateFlagBits2KHR::eCaptureData | PipelineCreateFlagBits2KHR::eIndirectBindableEXT; }; enum class BufferUsageFlagBits2KHR : VkBufferUsageFlags2KHR @@ -7088,7 +7114,8 @@ namespace VULKAN_HPP_NAMESPACE eResourceDescriptorBufferEXT = VK_BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT, ePushDescriptorsDescriptorBufferEXT = VK_BUFFER_USAGE_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT, eMicromapBuildInputReadOnlyEXT = VK_BUFFER_USAGE_2_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT, - eMicromapStorageEXT = VK_BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT + eMicromapStorageEXT = VK_BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT, + ePreprocessBufferEXT = VK_BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT }; using BufferUsageFlags2KHR = Flags<BufferUsageFlagBits2KHR>; @@ -7111,7 +7138,7 @@ namespace VULKAN_HPP_NAMESPACE BufferUsageFlagBits2KHR::eAccelerationStructureBuildInputReadOnly | BufferUsageFlagBits2KHR::eAccelerationStructureStorage | BufferUsageFlagBits2KHR::eSamplerDescriptorBufferEXT | BufferUsageFlagBits2KHR::eResourceDescriptorBufferEXT | BufferUsageFlagBits2KHR::ePushDescriptorsDescriptorBufferEXT | BufferUsageFlagBits2KHR::eMicromapBuildInputReadOnlyEXT | - BufferUsageFlagBits2KHR::eMicromapStorageEXT; + BufferUsageFlagBits2KHR::eMicromapStorageEXT | BufferUsageFlagBits2KHR::ePreprocessBufferEXT; }; //=== VK_AMD_anti_lag === @@ -7139,7 +7166,8 @@ namespace VULKAN_HPP_NAMESPACE eNoTaskShader = VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT, eDispatchBase = VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT, eFragmentShadingRateAttachment = VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT, - eFragmentDensityMapAttachment = VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT + eFragmentDensityMapAttachment = VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT, + eIndirectBindable = VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT }; using ShaderCreateFlagsEXT = Flags<ShaderCreateFlagBitsEXT>; @@ -7151,7 +7179,7 @@ namespace VULKAN_HPP_NAMESPACE static VULKAN_HPP_CONST_OR_CONSTEXPR ShaderCreateFlagsEXT allFlags = ShaderCreateFlagBitsEXT::eLinkStage | ShaderCreateFlagBitsEXT::eAllowVaryingSubgroupSize | ShaderCreateFlagBitsEXT::eRequireFullSubgroups | ShaderCreateFlagBitsEXT::eNoTaskShader | ShaderCreateFlagBitsEXT::eDispatchBase | ShaderCreateFlagBitsEXT::eFragmentShadingRateAttachment | - ShaderCreateFlagBitsEXT::eFragmentDensityMapAttachment; + ShaderCreateFlagBitsEXT::eFragmentDensityMapAttachment | ShaderCreateFlagBitsEXT::eIndirectBindable; }; enum class ShaderCodeTypeEXT @@ -7361,6 +7389,73 @@ namespace VULKAN_HPP_NAMESPACE eOpengles = VK_PHYSICAL_DEVICE_LAYERED_API_OPENGLES_KHR }; + //=== VK_EXT_device_generated_commands === + + enum class IndirectCommandsTokenTypeEXT + { + eExecutionSet = VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT, + ePushConstant = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT, + eSequenceIndex = VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT, + eIndexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT, + eVertexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT, + eDrawIndexed = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT, + eDraw = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT, + eDrawIndexedCount = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT, + eDrawCount = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT, + eDispatch = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT, + eDrawMeshTasksNV = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT, + eDrawMeshTasksCountNV = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT, + eDrawMeshTasks = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT, + eDrawMeshTasksCount = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT, + eTraceRays2 = VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT + }; + + enum class IndirectExecutionSetInfoTypeEXT + { + ePipelines = VK_INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT, + eShaderObjects = VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT + }; + + enum class IndirectCommandsLayoutUsageFlagBitsEXT : VkIndirectCommandsLayoutUsageFlagsEXT + { + eExplicitPreprocess = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT, + eUnorderedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT + }; + + using IndirectCommandsLayoutUsageFlagsEXT = Flags<IndirectCommandsLayoutUsageFlagBitsEXT>; + + template <> + struct FlagTraits<IndirectCommandsLayoutUsageFlagBitsEXT> + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR IndirectCommandsLayoutUsageFlagsEXT allFlags = + IndirectCommandsLayoutUsageFlagBitsEXT::eExplicitPreprocess | IndirectCommandsLayoutUsageFlagBitsEXT::eUnorderedSequences; + }; + + enum class IndirectCommandsInputModeFlagBitsEXT : VkIndirectCommandsInputModeFlagsEXT + { + eVulkanIndexBuffer = VK_INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT, + eDxgiIndexBuffer = VK_INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT + }; + + using IndirectCommandsInputModeFlagsEXT = Flags<IndirectCommandsInputModeFlagBitsEXT>; + + template <> + struct FlagTraits<IndirectCommandsInputModeFlagBitsEXT> + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR IndirectCommandsInputModeFlagsEXT allFlags = + IndirectCommandsInputModeFlagBitsEXT::eVulkanIndexBuffer | IndirectCommandsInputModeFlagBitsEXT::eDxgiIndexBuffer; + }; + + //=== VK_EXT_depth_clamp_control === + + enum class DepthClampModeEXT + { + eViewportRange = VK_DEPTH_CLAMP_MODE_VIEWPORT_RANGE_EXT, + eUserDefinedRange = VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT + }; + //=========================================================== //=== Mapping from ObjectType to DebugReportObjectTypeEXT === //=========================================================== @@ -7484,7 +7579,12 @@ namespace VULKAN_HPP_NAMESPACE return VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; //=== VK_KHR_pipeline_binary === - case VULKAN_HPP_NAMESPACE::ObjectType::ePipelineBinaryKHR: return VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; + case VULKAN_HPP_NAMESPACE::ObjectType::ePipelineBinaryKHR: + return VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; + + //=== VK_EXT_device_generated_commands === + case VULKAN_HPP_NAMESPACE::ObjectType::eIndirectCommandsLayoutEXT: return VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; + case VULKAN_HPP_NAMESPACE::ObjectType::eIndirectExecutionSetEXT: return VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; default: VULKAN_HPP_ASSERT( false && "unknown ObjectType" ); return VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; } diff --git a/include/vulkan/vulkan_extension_inspection.hpp b/include/vulkan/vulkan_extension_inspection.hpp index da405d5..d68f92b 100644 --- a/include/vulkan/vulkan_extension_inspection.hpp +++ b/include/vulkan/vulkan_extension_inspection.hpp @@ -8,11 +8,15 @@ #ifndef VULKAN_EXTENSION_INSPECTION_HPP #define VULKAN_EXTENSION_INSPECTION_HPP -#include <map> -#include <set> -#include <string> -#include <vector> -#include <vulkan/vulkan.hpp> +#if defined( VULKAN_HPP_ENABLE_STD_MODULE ) && defined( VULKAN_HPP_STD_MODULE ) +import VULKAN_HPP_STD_MODULE; +#else +# include <map> +# include <set> +# include <string> +# include <vector> +# include <vulkan/vulkan.hpp> +#endif namespace VULKAN_HPP_NAMESPACE { @@ -446,7 +450,9 @@ namespace VULKAN_HPP_NAMESPACE "VK_NV_shader_atomic_float16_vector", "VK_EXT_shader_replicated_composites", "VK_NV_ray_tracing_validation", - "VK_MESA_image_alignment_control" + "VK_EXT_device_generated_commands", + "VK_MESA_image_alignment_control", + "VK_EXT_depth_clamp_control" }; return deviceExtensions; } @@ -2333,11 +2339,23 @@ namespace VULKAN_HPP_NAMESPACE { "VK_KHR_maintenance6", { { "VK_VERSION_1_1", { {} } } } }, { "VK_NV_descriptor_pool_overallocation", { { "VK_VERSION_1_1", { {} } } } }, { "VK_KHR_maintenance7", { { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_device_generated_commands", + { { "VK_VERSION_1_0", + { { + "VK_KHR_buffer_device_address", + "VK_KHR_maintenance5", + } } } } }, { "VK_MESA_image_alignment_control", { { "VK_VERSION_1_0", { { "VK_KHR_get_physical_device_properties2", } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_depth_clamp_control", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, { "VK_VERSION_1_1", { {} } } } } }; auto depIt = dependencies.find( extension ); @@ -3116,7 +3134,8 @@ namespace VULKAN_HPP_NAMESPACE ( extension == "VK_KHR_shader_relaxed_extended_instruction" ) || ( extension == "VK_NV_command_buffer_inheritance" ) || ( extension == "VK_KHR_maintenance7" ) || ( extension == "VK_NV_shader_atomic_float16_vector" ) || ( extension == "VK_EXT_shader_replicated_composites" ) || ( extension == "VK_NV_ray_tracing_validation" ) || - ( extension == "VK_MESA_image_alignment_control" ); + ( extension == "VK_EXT_device_generated_commands" ) || ( extension == "VK_MESA_image_alignment_control" ) || + ( extension == "VK_EXT_depth_clamp_control" ); } VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isInstanceExtension( std::string const & extension ) diff --git a/include/vulkan/vulkan_funcs.hpp b/include/vulkan/vulkan_funcs.hpp index f91d6a4..95ffd72 100644 --- a/include/vulkan/vulkan_funcs.hpp +++ b/include/vulkan/vulkan_funcs.hpp @@ -25682,6 +25682,35 @@ namespace VULKAN_HPP_NAMESPACE } #endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + template <typename Dispatch> + VULKAN_HPP_INLINE void CommandBuffer::setDepthClampRangeEXT( VULKAN_HPP_NAMESPACE::DepthClampModeEXT depthClampMode, + const VULKAN_HPP_NAMESPACE::DepthClampRangeEXT * pDepthClampRange, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDepthClampRangeEXT( + m_commandBuffer, static_cast<VkDepthClampModeEXT>( depthClampMode ), reinterpret_cast<const VkDepthClampRangeEXT *>( pDepthClampRange ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template <typename Dispatch> + VULKAN_HPP_INLINE void CommandBuffer::setDepthClampRangeEXT( VULKAN_HPP_NAMESPACE::DepthClampModeEXT depthClampMode, + Optional<const VULKAN_HPP_NAMESPACE::DepthClampRangeEXT> depthClampRange, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetDepthClampRangeEXT && + "Function <vkCmdSetDepthClampRangeEXT> requires <VK_EXT_depth_clamp_control> or <VK_EXT_shader_object>" ); +# endif + + d.vkCmdSetDepthClampRangeEXT( + m_commandBuffer, + static_cast<VkDepthClampModeEXT>( depthClampMode ), + reinterpret_cast<const VkDepthClampRangeEXT *>( static_cast<const VULKAN_HPP_NAMESPACE::DepthClampRangeEXT *>( depthClampRange ) ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + //=== VK_KHR_pipeline_binary === template <typename Dispatch> @@ -26874,5 +26903,417 @@ namespace VULKAN_HPP_NAMESPACE } #endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + //=== VK_EXT_device_generated_commands === + + template <typename Dispatch> + VULKAN_HPP_INLINE void Device::getGeneratedCommandsMemoryRequirementsEXT( const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoEXT * pInfo, + VULKAN_HPP_NAMESPACE::MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetGeneratedCommandsMemoryRequirementsEXT( m_device, + reinterpret_cast<const VkGeneratedCommandsMemoryRequirementsInfoEXT *>( pInfo ), + reinterpret_cast<VkMemoryRequirements2 *>( pMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template <typename Dispatch> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2 + Device::getGeneratedCommandsMemoryRequirementsEXT( const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoEXT & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetGeneratedCommandsMemoryRequirementsEXT && + "Function <vkGetGeneratedCommandsMemoryRequirementsEXT> requires <VK_EXT_device_generated_commands>" ); +# endif + + VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements; + d.vkGetGeneratedCommandsMemoryRequirementsEXT( m_device, + reinterpret_cast<const VkGeneratedCommandsMemoryRequirementsInfoEXT *>( &info ), + reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) ); + + return memoryRequirements; + } + + template <typename X, typename Y, typename... Z, typename Dispatch> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> + Device::getGeneratedCommandsMemoryRequirementsEXT( const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoEXT & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetGeneratedCommandsMemoryRequirementsEXT && + "Function <vkGetGeneratedCommandsMemoryRequirementsEXT> requires <VK_EXT_device_generated_commands>" ); +# endif + + VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> structureChain; + VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements = structureChain.template get<VULKAN_HPP_NAMESPACE::MemoryRequirements2>(); + d.vkGetGeneratedCommandsMemoryRequirementsEXT( m_device, + reinterpret_cast<const VkGeneratedCommandsMemoryRequirementsInfoEXT *>( &info ), + reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template <typename Dispatch> + VULKAN_HPP_INLINE void CommandBuffer::preprocessGeneratedCommandsEXT( const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoEXT * pGeneratedCommandsInfo, + VULKAN_HPP_NAMESPACE::CommandBuffer stateCommandBuffer, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPreprocessGeneratedCommandsEXT( + m_commandBuffer, reinterpret_cast<const VkGeneratedCommandsInfoEXT *>( pGeneratedCommandsInfo ), static_cast<VkCommandBuffer>( stateCommandBuffer ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template <typename Dispatch> + VULKAN_HPP_INLINE void CommandBuffer::preprocessGeneratedCommandsEXT( const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoEXT & generatedCommandsInfo, + VULKAN_HPP_NAMESPACE::CommandBuffer stateCommandBuffer, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdPreprocessGeneratedCommandsEXT && "Function <vkCmdPreprocessGeneratedCommandsEXT> requires <VK_EXT_device_generated_commands>" ); +# endif + + d.vkCmdPreprocessGeneratedCommandsEXT( + m_commandBuffer, reinterpret_cast<const VkGeneratedCommandsInfoEXT *>( &generatedCommandsInfo ), static_cast<VkCommandBuffer>( stateCommandBuffer ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template <typename Dispatch> + VULKAN_HPP_INLINE void CommandBuffer::executeGeneratedCommandsEXT( VULKAN_HPP_NAMESPACE::Bool32 isPreprocessed, + const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoEXT * pGeneratedCommandsInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdExecuteGeneratedCommandsEXT( + m_commandBuffer, static_cast<VkBool32>( isPreprocessed ), reinterpret_cast<const VkGeneratedCommandsInfoEXT *>( pGeneratedCommandsInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template <typename Dispatch> + VULKAN_HPP_INLINE void CommandBuffer::executeGeneratedCommandsEXT( VULKAN_HPP_NAMESPACE::Bool32 isPreprocessed, + const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoEXT & generatedCommandsInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdExecuteGeneratedCommandsEXT && "Function <vkCmdExecuteGeneratedCommandsEXT> requires <VK_EXT_device_generated_commands>" ); +# endif + + d.vkCmdExecuteGeneratedCommandsEXT( + m_commandBuffer, static_cast<VkBool32>( isPreprocessed ), reinterpret_cast<const VkGeneratedCommandsInfoEXT *>( &generatedCommandsInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template <typename Dispatch> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createIndirectCommandsLayoutEXT( const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoEXT * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT * pIndirectCommandsLayout, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast<Result>( d.vkCreateIndirectCommandsLayoutEXT( m_device, + reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoEXT *>( pCreateInfo ), + reinterpret_cast<const VkAllocationCallbacks *>( pAllocator ), + reinterpret_cast<VkIndirectCommandsLayoutEXT *>( pIndirectCommandsLayout ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template <typename Dispatch> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT>::type + Device::createIndirectCommandsLayoutEXT( const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoEXT & createInfo, + Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateIndirectCommandsLayoutEXT && "Function <vkCreateIndirectCommandsLayoutEXT> requires <VK_EXT_device_generated_commands>" ); +# endif + + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT indirectCommandsLayout; + VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( d.vkCreateIndirectCommandsLayoutEXT( + m_device, + reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoEXT *>( &createInfo ), + reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ), + reinterpret_cast<VkIndirectCommandsLayoutEXT *>( &indirectCommandsLayout ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createIndirectCommandsLayoutEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( indirectCommandsLayout ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template <typename Dispatch> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT, Dispatch>>::type + Device::createIndirectCommandsLayoutEXTUnique( const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoEXT & createInfo, + Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateIndirectCommandsLayoutEXT && "Function <vkCreateIndirectCommandsLayoutEXT> requires <VK_EXT_device_generated_commands>" ); +# endif + + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT indirectCommandsLayout; + VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( d.vkCreateIndirectCommandsLayoutEXT( + m_device, + reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoEXT *>( &createInfo ), + reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ), + reinterpret_cast<VkIndirectCommandsLayoutEXT *>( &indirectCommandsLayout ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createIndirectCommandsLayoutEXTUnique" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, + UniqueHandle<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT, Dispatch>( + indirectCommandsLayout, ObjectDestroy<Device, Dispatch>( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template <typename Dispatch> + VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutEXT( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT indirectCommandsLayout, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyIndirectCommandsLayoutEXT( + m_device, static_cast<VkIndirectCommandsLayoutEXT>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks *>( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template <typename Dispatch> + VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutEXT( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT indirectCommandsLayout, + Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyIndirectCommandsLayoutEXT && "Function <vkDestroyIndirectCommandsLayoutEXT> requires <VK_EXT_device_generated_commands>" ); +# endif + + d.vkDestroyIndirectCommandsLayoutEXT( + m_device, + static_cast<VkIndirectCommandsLayoutEXT>( indirectCommandsLayout ), + reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template <typename Dispatch> + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT indirectCommandsLayout, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyIndirectCommandsLayoutEXT( + m_device, static_cast<VkIndirectCommandsLayoutEXT>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks *>( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template <typename Dispatch> + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT indirectCommandsLayout, + Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyIndirectCommandsLayoutEXT && "Function <vkDestroyIndirectCommandsLayoutEXT> requires <VK_EXT_device_generated_commands>" ); +# endif + + d.vkDestroyIndirectCommandsLayoutEXT( + m_device, + static_cast<VkIndirectCommandsLayoutEXT>( indirectCommandsLayout ), + reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template <typename Dispatch> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::createIndirectExecutionSetEXT( const VULKAN_HPP_NAMESPACE::IndirectExecutionSetCreateInfoEXT * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT * pIndirectExecutionSet, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast<Result>( d.vkCreateIndirectExecutionSetEXT( m_device, + reinterpret_cast<const VkIndirectExecutionSetCreateInfoEXT *>( pCreateInfo ), + reinterpret_cast<const VkAllocationCallbacks *>( pAllocator ), + reinterpret_cast<VkIndirectExecutionSetEXT *>( pIndirectExecutionSet ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template <typename Dispatch> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT>::type + Device::createIndirectExecutionSetEXT( const VULKAN_HPP_NAMESPACE::IndirectExecutionSetCreateInfoEXT & createInfo, + Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateIndirectExecutionSetEXT && "Function <vkCreateIndirectExecutionSetEXT> requires <VK_EXT_device_generated_commands>" ); +# endif + + VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT indirectExecutionSet; + VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( d.vkCreateIndirectExecutionSetEXT( + m_device, + reinterpret_cast<const VkIndirectExecutionSetCreateInfoEXT *>( &createInfo ), + reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ), + reinterpret_cast<VkIndirectExecutionSetEXT *>( &indirectExecutionSet ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createIndirectExecutionSetEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( indirectExecutionSet ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template <typename Dispatch> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<UniqueHandle<VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT, Dispatch>>::type + Device::createIndirectExecutionSetEXTUnique( const VULKAN_HPP_NAMESPACE::IndirectExecutionSetCreateInfoEXT & createInfo, + Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateIndirectExecutionSetEXT && "Function <vkCreateIndirectExecutionSetEXT> requires <VK_EXT_device_generated_commands>" ); +# endif + + VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT indirectExecutionSet; + VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( d.vkCreateIndirectExecutionSetEXT( + m_device, + reinterpret_cast<const VkIndirectExecutionSetCreateInfoEXT *>( &createInfo ), + reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ), + reinterpret_cast<VkIndirectExecutionSetEXT *>( &indirectExecutionSet ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createIndirectExecutionSetEXTUnique" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( + result, + UniqueHandle<VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT, Dispatch>( indirectExecutionSet, ObjectDestroy<Device, Dispatch>( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template <typename Dispatch> + VULKAN_HPP_INLINE void Device::destroyIndirectExecutionSetEXT( VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT indirectExecutionSet, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyIndirectExecutionSetEXT( + m_device, static_cast<VkIndirectExecutionSetEXT>( indirectExecutionSet ), reinterpret_cast<const VkAllocationCallbacks *>( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template <typename Dispatch> + VULKAN_HPP_INLINE void Device::destroyIndirectExecutionSetEXT( VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT indirectExecutionSet, + Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyIndirectExecutionSetEXT && "Function <vkDestroyIndirectExecutionSetEXT> requires <VK_EXT_device_generated_commands>" ); +# endif + + d.vkDestroyIndirectExecutionSetEXT( + m_device, + static_cast<VkIndirectExecutionSetEXT>( indirectExecutionSet ), + reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template <typename Dispatch> + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT indirectExecutionSet, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyIndirectExecutionSetEXT( + m_device, static_cast<VkIndirectExecutionSetEXT>( indirectExecutionSet ), reinterpret_cast<const VkAllocationCallbacks *>( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template <typename Dispatch> + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT indirectExecutionSet, + Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyIndirectExecutionSetEXT && "Function <vkDestroyIndirectExecutionSetEXT> requires <VK_EXT_device_generated_commands>" ); +# endif + + d.vkDestroyIndirectExecutionSetEXT( + m_device, + static_cast<VkIndirectExecutionSetEXT>( indirectExecutionSet ), + reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template <typename Dispatch> + VULKAN_HPP_INLINE void Device::updateIndirectExecutionSetPipelineEXT( VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT indirectExecutionSet, + uint32_t executionSetWriteCount, + const VULKAN_HPP_NAMESPACE::WriteIndirectExecutionSetPipelineEXT * pExecutionSetWrites, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkUpdateIndirectExecutionSetPipelineEXT( m_device, + static_cast<VkIndirectExecutionSetEXT>( indirectExecutionSet ), + executionSetWriteCount, + reinterpret_cast<const VkWriteIndirectExecutionSetPipelineEXT *>( pExecutionSetWrites ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template <typename Dispatch> + VULKAN_HPP_INLINE void Device::updateIndirectExecutionSetPipelineEXT( + VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT indirectExecutionSet, + VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::WriteIndirectExecutionSetPipelineEXT> const & executionSetWrites, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkUpdateIndirectExecutionSetPipelineEXT && + "Function <vkUpdateIndirectExecutionSetPipelineEXT> requires <VK_EXT_device_generated_commands>" ); +# endif + + d.vkUpdateIndirectExecutionSetPipelineEXT( m_device, + static_cast<VkIndirectExecutionSetEXT>( indirectExecutionSet ), + executionSetWrites.size(), + reinterpret_cast<const VkWriteIndirectExecutionSetPipelineEXT *>( executionSetWrites.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template <typename Dispatch> + VULKAN_HPP_INLINE void Device::updateIndirectExecutionSetShaderEXT( VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT indirectExecutionSet, + uint32_t executionSetWriteCount, + const VULKAN_HPP_NAMESPACE::WriteIndirectExecutionSetShaderEXT * pExecutionSetWrites, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkUpdateIndirectExecutionSetShaderEXT( m_device, + static_cast<VkIndirectExecutionSetEXT>( indirectExecutionSet ), + executionSetWriteCount, + reinterpret_cast<const VkWriteIndirectExecutionSetShaderEXT *>( pExecutionSetWrites ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template <typename Dispatch> + VULKAN_HPP_INLINE void Device::updateIndirectExecutionSetShaderEXT( + VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT indirectExecutionSet, + VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::WriteIndirectExecutionSetShaderEXT> const & executionSetWrites, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkUpdateIndirectExecutionSetShaderEXT && + "Function <vkUpdateIndirectExecutionSetShaderEXT> requires <VK_EXT_device_generated_commands>" ); +# endif + + d.vkUpdateIndirectExecutionSetShaderEXT( m_device, + static_cast<VkIndirectExecutionSetEXT>( indirectExecutionSet ), + executionSetWrites.size(), + reinterpret_cast<const VkWriteIndirectExecutionSetShaderEXT *>( executionSetWrites.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + } // namespace VULKAN_HPP_NAMESPACE #endif diff --git a/include/vulkan/vulkan_handles.hpp b/include/vulkan/vulkan_handles.hpp index 4670c46..48a69c7 100644 --- a/include/vulkan/vulkan_handles.hpp +++ b/include/vulkan/vulkan_handles.hpp @@ -1873,11 +1873,41 @@ namespace VULKAN_HPP_NAMESPACE //=== VK_NV_ray_tracing_validation === struct PhysicalDeviceRayTracingValidationFeaturesNV; + //=== VK_EXT_device_generated_commands === + struct PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT; + struct PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT; + struct GeneratedCommandsMemoryRequirementsInfoEXT; + struct IndirectExecutionSetCreateInfoEXT; + union IndirectExecutionSetInfoEXT; + struct IndirectExecutionSetPipelineInfoEXT; + struct IndirectExecutionSetShaderInfoEXT; + struct GeneratedCommandsInfoEXT; + struct WriteIndirectExecutionSetPipelineEXT; + struct IndirectCommandsLayoutCreateInfoEXT; + struct IndirectCommandsLayoutTokenEXT; + struct DrawIndirectCountIndirectCommandEXT; + struct IndirectCommandsVertexBufferTokenEXT; + struct BindVertexBufferIndirectCommandEXT; + struct IndirectCommandsIndexBufferTokenEXT; + struct BindIndexBufferIndirectCommandEXT; + struct IndirectCommandsPushConstantTokenEXT; + struct IndirectCommandsExecutionSetTokenEXT; + union IndirectCommandsTokenDataEXT; + struct IndirectExecutionSetShaderLayoutInfoEXT; + struct GeneratedCommandsPipelineInfoEXT; + struct GeneratedCommandsShaderInfoEXT; + struct WriteIndirectExecutionSetShaderEXT; + //=== VK_MESA_image_alignment_control === struct PhysicalDeviceImageAlignmentControlFeaturesMESA; struct PhysicalDeviceImageAlignmentControlPropertiesMESA; struct ImageAlignmentControlCreateInfoMESA; + //=== VK_EXT_depth_clamp_control === + struct PhysicalDeviceDepthClampControlFeaturesEXT; + struct PipelineViewportDepthClampControlCreateInfoEXT; + struct DepthClampRangeEXT; + //=================================== //=== HANDLE forward declarations === //=================================== @@ -1981,6 +2011,10 @@ namespace VULKAN_HPP_NAMESPACE //=== VK_KHR_pipeline_binary === class PipelineBinaryKHR; + //=== VK_EXT_device_generated_commands === + class IndirectCommandsLayoutEXT; + class IndirectExecutionSetEXT; + #ifndef VULKAN_HPP_NO_SMART_HANDLE //====================== //=== UNIQUE HANDLEs === @@ -2446,6 +2480,25 @@ namespace VULKAN_HPP_NAMESPACE }; using UniquePipelineBinaryKHR = UniqueHandle<PipelineBinaryKHR, VULKAN_HPP_DEFAULT_DISPATCHER_TYPE>; + + //=== VK_EXT_device_generated_commands === + template <typename Dispatch> + class UniqueHandleTraits<IndirectCommandsLayoutEXT, Dispatch> + { + public: + using deleter = ObjectDestroy<Device, Dispatch>; + }; + + using UniqueIndirectCommandsLayoutEXT = UniqueHandle<IndirectCommandsLayoutEXT, VULKAN_HPP_DEFAULT_DISPATCHER_TYPE>; + + template <typename Dispatch> + class UniqueHandleTraits<IndirectExecutionSetEXT, Dispatch> + { + public: + using deleter = ObjectDestroy<Device, Dispatch>; + }; + + using UniqueIndirectExecutionSetEXT = UniqueHandle<IndirectExecutionSetEXT, VULKAN_HPP_DEFAULT_DISPATCHER_TYPE>; #endif /*VULKAN_HPP_NO_SMART_HANDLE*/ //=============== @@ -7187,6 +7240,17 @@ namespace VULKAN_HPP_NAMESPACE Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; #endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + void setDepthClampRangeEXT( VULKAN_HPP_NAMESPACE::DepthClampModeEXT depthClampMode, + const VULKAN_HPP_NAMESPACE::DepthClampRangeEXT * pDepthClampRange, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + void setDepthClampRangeEXT( VULKAN_HPP_NAMESPACE::DepthClampModeEXT depthClampMode, + Optional<const VULKAN_HPP_NAMESPACE::DepthClampRangeEXT> depthClampRange VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + //=== VK_EXT_attachment_feedback_loop_dynamic_state === template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> @@ -7258,6 +7322,30 @@ namespace VULKAN_HPP_NAMESPACE Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; #endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + //=== VK_EXT_device_generated_commands === + + template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + void preprocessGeneratedCommandsEXT( const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoEXT * pGeneratedCommandsInfo, + VULKAN_HPP_NAMESPACE::CommandBuffer stateCommandBuffer, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + void preprocessGeneratedCommandsEXT( const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoEXT & generatedCommandsInfo, + VULKAN_HPP_NAMESPACE::CommandBuffer stateCommandBuffer, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + void executeGeneratedCommandsEXT( VULKAN_HPP_NAMESPACE::Bool32 isPreprocessed, + const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoEXT * pGeneratedCommandsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + void executeGeneratedCommandsEXT( VULKAN_HPP_NAMESPACE::Bool32 isPreprocessed, + const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoEXT & generatedCommandsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + operator VkCommandBuffer() const VULKAN_HPP_NOEXCEPT { return m_commandBuffer; @@ -8855,6 +8943,116 @@ namespace VULKAN_HPP_NAMESPACE static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; }; + class IndirectCommandsLayoutEXT + { + public: + using CType = VkIndirectCommandsLayoutEXT; + using NativeType = VkIndirectCommandsLayoutEXT; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eIndirectCommandsLayoutEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; + + public: + IndirectCommandsLayoutEXT() VULKAN_HPP_NOEXCEPT{}; // = default - try to workaround a compiler issue + IndirectCommandsLayoutEXT( IndirectCommandsLayoutEXT const & rhs ) = default; + IndirectCommandsLayoutEXT & operator=( IndirectCommandsLayoutEXT const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + IndirectCommandsLayoutEXT( IndirectCommandsLayoutEXT && rhs ) = default; + IndirectCommandsLayoutEXT & operator=( IndirectCommandsLayoutEXT && rhs ) = default; +#else + IndirectCommandsLayoutEXT( IndirectCommandsLayoutEXT && rhs ) VULKAN_HPP_NOEXCEPT + : m_indirectCommandsLayoutEXT( VULKAN_HPP_NAMESPACE::exchange( rhs.m_indirectCommandsLayoutEXT, {} ) ) + { + } + + IndirectCommandsLayoutEXT & operator=( IndirectCommandsLayoutEXT && rhs ) VULKAN_HPP_NOEXCEPT + { + m_indirectCommandsLayoutEXT = VULKAN_HPP_NAMESPACE::exchange( rhs.m_indirectCommandsLayoutEXT, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutEXT( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT IndirectCommandsLayoutEXT( VkIndirectCommandsLayoutEXT indirectCommandsLayoutEXT ) VULKAN_HPP_NOEXCEPT + : m_indirectCommandsLayoutEXT( indirectCommandsLayoutEXT ) + { + } + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + IndirectCommandsLayoutEXT & operator=( VkIndirectCommandsLayoutEXT indirectCommandsLayoutEXT ) VULKAN_HPP_NOEXCEPT + { + m_indirectCommandsLayoutEXT = indirectCommandsLayoutEXT; + return *this; + } +#endif + + IndirectCommandsLayoutEXT & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_indirectCommandsLayoutEXT = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( IndirectCommandsLayoutEXT const & ) const = default; +#else + bool operator==( IndirectCommandsLayoutEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_indirectCommandsLayoutEXT == rhs.m_indirectCommandsLayoutEXT; + } + + bool operator!=( IndirectCommandsLayoutEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_indirectCommandsLayoutEXT != rhs.m_indirectCommandsLayoutEXT; + } + + bool operator<( IndirectCommandsLayoutEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_indirectCommandsLayoutEXT < rhs.m_indirectCommandsLayoutEXT; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkIndirectCommandsLayoutEXT() const VULKAN_HPP_NOEXCEPT + { + return m_indirectCommandsLayoutEXT; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_indirectCommandsLayoutEXT != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_indirectCommandsLayoutEXT == VK_NULL_HANDLE; + } + + private: + VkIndirectCommandsLayoutEXT m_indirectCommandsLayoutEXT = {}; + }; + + template <> + struct CppType<VULKAN_HPP_NAMESPACE::ObjectType, VULKAN_HPP_NAMESPACE::ObjectType::eIndirectCommandsLayoutEXT> + { + using Type = VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType<VkIndirectCommandsLayoutEXT, VK_NULL_HANDLE> + { + using Type = VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT; + }; +#endif + + template <> + struct isVulkanHandleType<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT> + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + class IndirectCommandsLayoutNV { public: @@ -8965,6 +9163,116 @@ namespace VULKAN_HPP_NAMESPACE static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; }; + class IndirectExecutionSetEXT + { + public: + using CType = VkIndirectExecutionSetEXT; + using NativeType = VkIndirectExecutionSetEXT; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eIndirectExecutionSetEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; + + public: + IndirectExecutionSetEXT() VULKAN_HPP_NOEXCEPT{}; // = default - try to workaround a compiler issue + IndirectExecutionSetEXT( IndirectExecutionSetEXT const & rhs ) = default; + IndirectExecutionSetEXT & operator=( IndirectExecutionSetEXT const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + IndirectExecutionSetEXT( IndirectExecutionSetEXT && rhs ) = default; + IndirectExecutionSetEXT & operator=( IndirectExecutionSetEXT && rhs ) = default; +#else + IndirectExecutionSetEXT( IndirectExecutionSetEXT && rhs ) VULKAN_HPP_NOEXCEPT + : m_indirectExecutionSetEXT( VULKAN_HPP_NAMESPACE::exchange( rhs.m_indirectExecutionSetEXT, {} ) ) + { + } + + IndirectExecutionSetEXT & operator=( IndirectExecutionSetEXT && rhs ) VULKAN_HPP_NOEXCEPT + { + m_indirectExecutionSetEXT = VULKAN_HPP_NAMESPACE::exchange( rhs.m_indirectExecutionSetEXT, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR IndirectExecutionSetEXT( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT IndirectExecutionSetEXT( VkIndirectExecutionSetEXT indirectExecutionSetEXT ) VULKAN_HPP_NOEXCEPT + : m_indirectExecutionSetEXT( indirectExecutionSetEXT ) + { + } + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + IndirectExecutionSetEXT & operator=( VkIndirectExecutionSetEXT indirectExecutionSetEXT ) VULKAN_HPP_NOEXCEPT + { + m_indirectExecutionSetEXT = indirectExecutionSetEXT; + return *this; + } +#endif + + IndirectExecutionSetEXT & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_indirectExecutionSetEXT = {}; + return *this; + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( IndirectExecutionSetEXT const & ) const = default; +#else + bool operator==( IndirectExecutionSetEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_indirectExecutionSetEXT == rhs.m_indirectExecutionSetEXT; + } + + bool operator!=( IndirectExecutionSetEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_indirectExecutionSetEXT != rhs.m_indirectExecutionSetEXT; + } + + bool operator<( IndirectExecutionSetEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_indirectExecutionSetEXT < rhs.m_indirectExecutionSetEXT; + } +#endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkIndirectExecutionSetEXT() const VULKAN_HPP_NOEXCEPT + { + return m_indirectExecutionSetEXT; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_indirectExecutionSetEXT != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_indirectExecutionSetEXT == VK_NULL_HANDLE; + } + + private: + VkIndirectExecutionSetEXT m_indirectExecutionSetEXT = {}; + }; + + template <> + struct CppType<VULKAN_HPP_NAMESPACE::ObjectType, VULKAN_HPP_NAMESPACE::ObjectType::eIndirectExecutionSetEXT> + { + using Type = VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType<VkIndirectExecutionSetEXT, VK_NULL_HANDLE> + { + using Type = VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT; + }; +#endif + + template <> + struct isVulkanHandleType<VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT> + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + class PrivateDataSlot { public: @@ -15352,6 +15660,133 @@ namespace VULKAN_HPP_NAMESPACE Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; #endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + //=== VK_EXT_device_generated_commands === + + template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + void getGeneratedCommandsMemoryRequirementsEXT( const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoEXT * pInfo, + VULKAN_HPP_NAMESPACE::MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 + getGeneratedCommandsMemoryRequirementsEXT( const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoEXT & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + template <typename X, typename Y, typename... Z, typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> + getGeneratedCommandsMemoryRequirementsEXT( const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoEXT & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD Result createIndirectCommandsLayoutEXT( const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoEXT * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT * pIndirectCommandsLayout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD typename ResultValueType<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT>::type + createIndirectCommandsLayoutEXT( const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoEXT & createInfo, + Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD typename ResultValueType<UniqueHandle<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT, Dispatch>>::type + createIndirectCommandsLayoutEXTUnique( const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoEXT & createInfo, + Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + void destroyIndirectCommandsLayoutEXT( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT indirectCommandsLayout, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + void destroyIndirectCommandsLayoutEXT( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT indirectCommandsLayout VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + void destroy( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT indirectCommandsLayout, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + void destroy( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT indirectCommandsLayout, + Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD Result createIndirectExecutionSetEXT( const VULKAN_HPP_NAMESPACE::IndirectExecutionSetCreateInfoEXT * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT * pIndirectExecutionSet, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD typename ResultValueType<VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT>::type + createIndirectExecutionSetEXT( const VULKAN_HPP_NAMESPACE::IndirectExecutionSetCreateInfoEXT & createInfo, + Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD typename ResultValueType<UniqueHandle<VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT, Dispatch>>::type + createIndirectExecutionSetEXTUnique( const VULKAN_HPP_NAMESPACE::IndirectExecutionSetCreateInfoEXT & createInfo, + Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + void destroyIndirectExecutionSetEXT( VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT indirectExecutionSet, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + void destroyIndirectExecutionSetEXT( VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT indirectExecutionSet VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, + Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + void destroy( VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT indirectExecutionSet, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + void destroy( VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT indirectExecutionSet, + Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + void updateIndirectExecutionSetPipelineEXT( VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT indirectExecutionSet, + uint32_t executionSetWriteCount, + const VULKAN_HPP_NAMESPACE::WriteIndirectExecutionSetPipelineEXT * pExecutionSetWrites, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + void updateIndirectExecutionSetPipelineEXT( + VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT indirectExecutionSet, + VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::WriteIndirectExecutionSetPipelineEXT> const & executionSetWrites, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + void updateIndirectExecutionSetShaderEXT( VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT indirectExecutionSet, + uint32_t executionSetWriteCount, + const VULKAN_HPP_NAMESPACE::WriteIndirectExecutionSetShaderEXT * pExecutionSetWrites, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + void updateIndirectExecutionSetShaderEXT( + VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT indirectExecutionSet, + VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::WriteIndirectExecutionSetShaderEXT> const & executionSetWrites, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + operator VkDevice() const VULKAN_HPP_NOEXCEPT { return m_device; diff --git a/include/vulkan/vulkan_hash.hpp b/include/vulkan/vulkan_hash.hpp index 1894033..80415ce 100644 --- a/include/vulkan/vulkan_hash.hpp +++ b/include/vulkan/vulkan_hash.hpp @@ -536,6 +536,26 @@ namespace std } }; + //=== VK_EXT_device_generated_commands === + + template <> + struct hash<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT> + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT const & indirectCommandsLayoutEXT ) const VULKAN_HPP_NOEXCEPT + { + return std::hash<VkIndirectCommandsLayoutEXT>{}( static_cast<VkIndirectCommandsLayoutEXT>( indirectCommandsLayoutEXT ) ); + } + }; + + template <> + struct hash<VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT> + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT const & indirectExecutionSetEXT ) const VULKAN_HPP_NOEXCEPT + { + return std::hash<VkIndirectExecutionSetEXT>{}( static_cast<VkIndirectExecutionSetEXT>( indirectExecutionSetEXT ) ); + } + }; + #if 14 <= VULKAN_HPP_CPP_VERSION //====================================== //=== HASH structures for structures === @@ -1475,6 +1495,19 @@ namespace std }; template <> + struct hash<VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandEXT> + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandEXT const & bindIndexBufferIndirectCommandEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindIndexBufferIndirectCommandEXT.bufferAddress ); + VULKAN_HPP_HASH_COMBINE( seed, bindIndexBufferIndirectCommandEXT.size ); + VULKAN_HPP_HASH_COMBINE( seed, bindIndexBufferIndirectCommandEXT.indexType ); + return seed; + } + }; + + template <> struct hash<VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV> { std::size_t operator()( VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV const & bindIndexBufferIndirectCommandNV ) const VULKAN_HPP_NOEXCEPT @@ -1654,6 +1687,19 @@ namespace std }; template <> + struct hash<VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandEXT> + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandEXT const & bindVertexBufferIndirectCommandEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindVertexBufferIndirectCommandEXT.bufferAddress ); + VULKAN_HPP_HASH_COMBINE( seed, bindVertexBufferIndirectCommandEXT.size ); + VULKAN_HPP_HASH_COMBINE( seed, bindVertexBufferIndirectCommandEXT.stride ); + return seed; + } + }; + + template <> struct hash<VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV> { std::size_t operator()( VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV const & bindVertexBufferIndirectCommandNV ) const VULKAN_HPP_NOEXCEPT @@ -3250,6 +3296,18 @@ namespace std }; template <> + struct hash<VULKAN_HPP_NAMESPACE::DepthClampRangeEXT> + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DepthClampRangeEXT const & depthClampRangeEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, depthClampRangeEXT.minDepthClamp ); + VULKAN_HPP_HASH_COMBINE( seed, depthClampRangeEXT.maxDepthClamp ); + return seed; + } + }; + + template <> struct hash<VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT> { std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT const & descriptorAddressInfoEXT ) const VULKAN_HPP_NOEXCEPT @@ -4419,6 +4477,19 @@ namespace std }; template <> + struct hash<VULKAN_HPP_NAMESPACE::DrawIndirectCountIndirectCommandEXT> + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DrawIndirectCountIndirectCommandEXT const & drawIndirectCountIndirectCommandEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, drawIndirectCountIndirectCommandEXT.bufferAddress ); + VULKAN_HPP_HASH_COMBINE( seed, drawIndirectCountIndirectCommandEXT.stride ); + VULKAN_HPP_HASH_COMBINE( seed, drawIndirectCountIndirectCommandEXT.commandCount ); + return seed; + } + }; + + template <> struct hash<VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandEXT> { std::size_t operator()( VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandEXT const & drawMeshTasksIndirectCommandEXT ) const VULKAN_HPP_NOEXCEPT @@ -5206,6 +5277,28 @@ namespace std }; template <> + struct hash<VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoEXT> + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoEXT const & generatedCommandsInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoEXT.shaderStages ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoEXT.indirectExecutionSet ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoEXT.indirectCommandsLayout ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoEXT.indirectAddress ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoEXT.indirectAddressSize ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoEXT.preprocessAddress ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoEXT.preprocessSize ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoEXT.maxSequenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoEXT.sequenceCountAddress ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoEXT.maxDrawCount ); + return seed; + } + }; + + template <> struct hash<VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV> { std::size_t operator()( VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV const & indirectCommandsStreamNV ) const VULKAN_HPP_NOEXCEPT @@ -5243,6 +5336,23 @@ namespace std }; template <> + struct hash<VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoEXT> + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoEXT const & generatedCommandsMemoryRequirementsInfoEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsMemoryRequirementsInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsMemoryRequirementsInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsMemoryRequirementsInfoEXT.indirectExecutionSet ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsMemoryRequirementsInfoEXT.indirectCommandsLayout ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsMemoryRequirementsInfoEXT.maxSequenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsMemoryRequirementsInfoEXT.maxDrawCount ); + return seed; + } + }; + + template <> struct hash<VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV> { std::size_t @@ -5260,6 +5370,33 @@ namespace std }; template <> + struct hash<VULKAN_HPP_NAMESPACE::GeneratedCommandsPipelineInfoEXT> + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::GeneratedCommandsPipelineInfoEXT const & generatedCommandsPipelineInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsPipelineInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsPipelineInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsPipelineInfoEXT.pipeline ); + return seed; + } + }; + + template <> + struct hash<VULKAN_HPP_NAMESPACE::GeneratedCommandsShaderInfoEXT> + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::GeneratedCommandsShaderInfoEXT const & generatedCommandsShaderInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsShaderInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsShaderInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsShaderInfoEXT.shaderCount ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsShaderInfoEXT.pShaders ); + return seed; + } + }; + + template <> struct hash<VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV> { std::size_t operator()( VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV const & latencyTimingsFrameReportNV ) const VULKAN_HPP_NOEXCEPT @@ -6442,6 +6579,82 @@ namespace std # endif /*VK_USE_PLATFORM_FUCHSIA*/ template <> + struct hash<VULKAN_HPP_NAMESPACE::IndirectCommandsExecutionSetTokenEXT> + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::IndirectCommandsExecutionSetTokenEXT const & indirectCommandsExecutionSetTokenEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsExecutionSetTokenEXT.type ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsExecutionSetTokenEXT.shaderStages ); + return seed; + } + }; + + template <> + struct hash<VULKAN_HPP_NAMESPACE::IndirectCommandsIndexBufferTokenEXT> + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::IndirectCommandsIndexBufferTokenEXT const & indirectCommandsIndexBufferTokenEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsIndexBufferTokenEXT.mode ); + return seed; + } + }; + + template <> + struct hash<VULKAN_HPP_NAMESPACE::PushConstantRange> + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PushConstantRange const & pushConstantRange ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pushConstantRange.stageFlags ); + VULKAN_HPP_HASH_COMBINE( seed, pushConstantRange.offset ); + VULKAN_HPP_HASH_COMBINE( seed, pushConstantRange.size ); + return seed; + } + }; + + template <> + struct hash<VULKAN_HPP_NAMESPACE::IndirectCommandsPushConstantTokenEXT> + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::IndirectCommandsPushConstantTokenEXT const & indirectCommandsPushConstantTokenEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsPushConstantTokenEXT.updateRange ); + return seed; + } + }; + + template <> + struct hash<VULKAN_HPP_NAMESPACE::IndirectCommandsVertexBufferTokenEXT> + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::IndirectCommandsVertexBufferTokenEXT const & indirectCommandsVertexBufferTokenEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsVertexBufferTokenEXT.vertexBindingUnit ); + return seed; + } + }; + + template <> + struct hash<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoEXT> + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoEXT const & indirectCommandsLayoutCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoEXT.shaderStages ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoEXT.indirectStride ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoEXT.pipelineLayout ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoEXT.tokenCount ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoEXT.pTokens ); + return seed; + } + }; + + template <> struct hash<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV> { std::size_t operator()( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV const & indirectCommandsLayoutTokenNV ) const VULKAN_HPP_NOEXCEPT @@ -6485,6 +6698,53 @@ namespace std }; template <> + struct hash<VULKAN_HPP_NAMESPACE::IndirectExecutionSetPipelineInfoEXT> + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::IndirectExecutionSetPipelineInfoEXT const & indirectExecutionSetPipelineInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetPipelineInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetPipelineInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetPipelineInfoEXT.initialPipeline ); + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetPipelineInfoEXT.maxPipelineCount ); + return seed; + } + }; + + template <> + struct hash<VULKAN_HPP_NAMESPACE::IndirectExecutionSetShaderLayoutInfoEXT> + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::IndirectExecutionSetShaderLayoutInfoEXT const & indirectExecutionSetShaderLayoutInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetShaderLayoutInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetShaderLayoutInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetShaderLayoutInfoEXT.setLayoutCount ); + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetShaderLayoutInfoEXT.pSetLayouts ); + return seed; + } + }; + + template <> + struct hash<VULKAN_HPP_NAMESPACE::IndirectExecutionSetShaderInfoEXT> + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::IndirectExecutionSetShaderInfoEXT const & indirectExecutionSetShaderInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetShaderInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetShaderInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetShaderInfoEXT.shaderCount ); + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetShaderInfoEXT.pInitialShaders ); + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetShaderInfoEXT.pSetLayoutInfos ); + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetShaderInfoEXT.maxShaderCount ); + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetShaderInfoEXT.pushConstantRangeCount ); + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetShaderInfoEXT.pPushConstantRanges ); + return seed; + } + }; + + template <> struct hash<VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL> { std::size_t operator()( VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL const & initializePerformanceApiInfoINTEL ) const VULKAN_HPP_NOEXCEPT @@ -8064,6 +8324,20 @@ namespace std }; template <> + struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampControlFeaturesEXT> + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampControlFeaturesEXT const & physicalDeviceDepthClampControlFeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthClampControlFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthClampControlFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthClampControlFeaturesEXT.depthClampControl ); + return seed; + } + }; + + template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampZeroOneFeaturesEXT> { std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampZeroOneFeaturesEXT const & physicalDeviceDepthClampZeroOneFeaturesEXT ) const @@ -8314,6 +8588,21 @@ namespace std }; template <> + struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT> + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT const & physicalDeviceDeviceGeneratedCommandsFeaturesEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsFeaturesEXT.deviceGeneratedCommands ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsFeaturesEXT.dynamicGeneratedPipelineLayout ); + return seed; + } + }; + + template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV> { std::size_t operator()( @@ -8328,6 +8617,32 @@ namespace std }; template <> + struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT> + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT const & physicalDeviceDeviceGeneratedCommandsPropertiesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesEXT.maxIndirectPipelineCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesEXT.maxIndirectShaderObjectCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesEXT.maxIndirectSequenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesEXT.maxIndirectCommandsTokenCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesEXT.maxIndirectCommandsTokenOffset ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesEXT.maxIndirectCommandsIndirectStride ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesEXT.supportedIndirectCommandsInputModes ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesEXT.supportedIndirectCommandsShaderStages ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesEXT.supportedIndirectCommandsShaderStagesPipelineBinding ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesEXT.supportedIndirectCommandsShaderStagesShaderBinding ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesEXT.deviceGeneratedCommandsTransformFeedback ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesEXT.deviceGeneratedCommandsMultiDrawIndirectCount ); + return seed; + } + }; + + template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV> { std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & physicalDeviceDeviceGeneratedCommandsPropertiesNV ) @@ -13202,19 +13517,6 @@ namespace std }; template <> - struct hash<VULKAN_HPP_NAMESPACE::PushConstantRange> - { - std::size_t operator()( VULKAN_HPP_NAMESPACE::PushConstantRange const & pushConstantRange ) const VULKAN_HPP_NOEXCEPT - { - std::size_t seed = 0; - VULKAN_HPP_HASH_COMBINE( seed, pushConstantRange.stageFlags ); - VULKAN_HPP_HASH_COMBINE( seed, pushConstantRange.offset ); - VULKAN_HPP_HASH_COMBINE( seed, pushConstantRange.size ); - return seed; - } - }; - - template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo> { std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo const & pipelineLayoutCreateInfo ) const VULKAN_HPP_NOEXCEPT @@ -13511,6 +13813,21 @@ namespace std }; template <> + struct hash<VULKAN_HPP_NAMESPACE::PipelineViewportDepthClampControlCreateInfoEXT> + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineViewportDepthClampControlCreateInfoEXT const & pipelineViewportDepthClampControlCreateInfoEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportDepthClampControlCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportDepthClampControlCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportDepthClampControlCreateInfoEXT.depthClampMode ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportDepthClampControlCreateInfoEXT.pDepthClampRange ); + return seed; + } + }; + + template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT> { std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT const & pipelineViewportDepthClipControlCreateInfoEXT ) const @@ -17139,6 +17456,34 @@ namespace std } }; + template <> + struct hash<VULKAN_HPP_NAMESPACE::WriteIndirectExecutionSetPipelineEXT> + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::WriteIndirectExecutionSetPipelineEXT const & writeIndirectExecutionSetPipelineEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, writeIndirectExecutionSetPipelineEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, writeIndirectExecutionSetPipelineEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, writeIndirectExecutionSetPipelineEXT.index ); + VULKAN_HPP_HASH_COMBINE( seed, writeIndirectExecutionSetPipelineEXT.pipeline ); + return seed; + } + }; + + template <> + struct hash<VULKAN_HPP_NAMESPACE::WriteIndirectExecutionSetShaderEXT> + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::WriteIndirectExecutionSetShaderEXT const & writeIndirectExecutionSetShaderEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, writeIndirectExecutionSetShaderEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, writeIndirectExecutionSetShaderEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, writeIndirectExecutionSetShaderEXT.index ); + VULKAN_HPP_HASH_COMBINE( seed, writeIndirectExecutionSetShaderEXT.shader ); + return seed; + } + }; + # if defined( VK_USE_PLATFORM_XCB_KHR ) template <> struct hash<VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR> diff --git a/include/vulkan/vulkan_hpp_macros.hpp b/include/vulkan/vulkan_hpp_macros.hpp index b754679..0ad04dd 100644 --- a/include/vulkan/vulkan_hpp_macros.hpp +++ b/include/vulkan/vulkan_hpp_macros.hpp @@ -87,6 +87,19 @@ # define VULKAN_HPP_SUPPORT_SPAN #endif +#if defined( __cpp_lib_modules ) && !defined( VULKAN_HPP_STD_MODULE ) && defined( VULKAN_HPP_ENABLE_STD_MODULE ) +# define VULKAN_HPP_STD_MODULE std.compat +#endif + +#ifndef VK_USE_64_BIT_PTR_DEFINES +# if defined( __LP64__ ) || defined( _WIN64 ) || ( defined( __x86_64__ ) && !defined( __ILP32__ ) ) || defined( _M_X64 ) || defined( __ia64 ) || \ + defined( _M_IA64 ) || defined( __aarch64__ ) || defined( __powerpc64__ ) || ( defined( __riscv ) && __riscv_xlen == 64 ) +# define VK_USE_64_BIT_PTR_DEFINES 1 +# else +# define VK_USE_64_BIT_PTR_DEFINES 0 +# endif +#endif + // 32-bit vulkan is not typesafe for non-dispatchable handles, so don't allow copy constructors on this platform by default. // To enable this feature on 32-bit platforms please #define VULKAN_HPP_TYPESAFE_CONVERSION 1 // To disable this feature on 64-bit platforms please #define VULKAN_HPP_TYPESAFE_CONVERSION 0 @@ -185,6 +198,12 @@ # define VULKAN_HPP_DEPRECATED( msg ) #endif +#if 17 <= VULKAN_HPP_CPP_VERSION +# define VULKAN_HPP_DEPRECATED_17( msg ) [[deprecated( msg )]] +#else +# define VULKAN_HPP_DEPRECATED_17( msg ) +#endif + #if ( 17 <= VULKAN_HPP_CPP_VERSION ) && !defined( VULKAN_HPP_NO_NODISCARD_WARNINGS ) # define VULKAN_HPP_NODISCARD [[nodiscard]] # if defined( VULKAN_HPP_NO_EXCEPTIONS ) @@ -279,7 +298,9 @@ namespace VULKAN_HPP_NAMESPACE #endif #if !defined( VULKAN_HPP_EXPECTED ) && ( 23 <= VULKAN_HPP_CPP_VERSION ) && defined( __cpp_lib_expected ) -# include <expected> +# if !( defined( VULKAN_HPP_ENABLE_STD_MODULE ) && defined( VULKAN_HPP_STD_MODULE ) ) +# include <expected> +# endif # define VULKAN_HPP_EXPECTED std::expected # define VULKAN_HPP_UNEXPECTED std::unexpected #endif diff --git a/include/vulkan/vulkan_raii.hpp b/include/vulkan/vulkan_raii.hpp index ac672bf..905d884 100644 --- a/include/vulkan/vulkan_raii.hpp +++ b/include/vulkan/vulkan_raii.hpp @@ -8,9 +8,11 @@ #ifndef VULKAN_RAII_HPP #define VULKAN_RAII_HPP -#include <memory> // std::unique_ptr -#include <utility> // std::forward #include <vulkan/vulkan.hpp> +#if !( defined( VULKAN_HPP_ENABLE_STD_MODULE ) && defined( VULKAN_HPP_STD_MODULE ) ) +# include <memory> // std::unique_ptr +# include <utility> // std::forward +#endif #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) namespace VULKAN_HPP_NAMESPACE @@ -1672,10 +1674,11 @@ namespace VULKAN_HPP_NAMESPACE vkAntiLagUpdateAMD = PFN_vkAntiLagUpdateAMD( vkGetDeviceProcAddr( device, "vkAntiLagUpdateAMD" ) ); //=== VK_EXT_shader_object === - vkCreateShadersEXT = PFN_vkCreateShadersEXT( vkGetDeviceProcAddr( device, "vkCreateShadersEXT" ) ); - vkDestroyShaderEXT = PFN_vkDestroyShaderEXT( vkGetDeviceProcAddr( device, "vkDestroyShaderEXT" ) ); - vkGetShaderBinaryDataEXT = PFN_vkGetShaderBinaryDataEXT( vkGetDeviceProcAddr( device, "vkGetShaderBinaryDataEXT" ) ); - vkCmdBindShadersEXT = PFN_vkCmdBindShadersEXT( vkGetDeviceProcAddr( device, "vkCmdBindShadersEXT" ) ); + vkCreateShadersEXT = PFN_vkCreateShadersEXT( vkGetDeviceProcAddr( device, "vkCreateShadersEXT" ) ); + vkDestroyShaderEXT = PFN_vkDestroyShaderEXT( vkGetDeviceProcAddr( device, "vkDestroyShaderEXT" ) ); + vkGetShaderBinaryDataEXT = PFN_vkGetShaderBinaryDataEXT( vkGetDeviceProcAddr( device, "vkGetShaderBinaryDataEXT" ) ); + vkCmdBindShadersEXT = PFN_vkCmdBindShadersEXT( vkGetDeviceProcAddr( device, "vkCmdBindShadersEXT" ) ); + vkCmdSetDepthClampRangeEXT = PFN_vkCmdSetDepthClampRangeEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthClampRangeEXT" ) ); //=== VK_KHR_pipeline_binary === vkCreatePipelineBinariesKHR = PFN_vkCreatePipelineBinariesKHR( vkGetDeviceProcAddr( device, "vkCreatePipelineBinariesKHR" ) ); @@ -1720,6 +1723,20 @@ namespace VULKAN_HPP_NAMESPACE vkCmdSetDescriptorBufferOffsets2EXT = PFN_vkCmdSetDescriptorBufferOffsets2EXT( vkGetDeviceProcAddr( device, "vkCmdSetDescriptorBufferOffsets2EXT" ) ); vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorBufferEmbeddedSamplers2EXT" ) ); + + //=== VK_EXT_device_generated_commands === + vkGetGeneratedCommandsMemoryRequirementsEXT = + PFN_vkGetGeneratedCommandsMemoryRequirementsEXT( vkGetDeviceProcAddr( device, "vkGetGeneratedCommandsMemoryRequirementsEXT" ) ); + vkCmdPreprocessGeneratedCommandsEXT = PFN_vkCmdPreprocessGeneratedCommandsEXT( vkGetDeviceProcAddr( device, "vkCmdPreprocessGeneratedCommandsEXT" ) ); + vkCmdExecuteGeneratedCommandsEXT = PFN_vkCmdExecuteGeneratedCommandsEXT( vkGetDeviceProcAddr( device, "vkCmdExecuteGeneratedCommandsEXT" ) ); + vkCreateIndirectCommandsLayoutEXT = PFN_vkCreateIndirectCommandsLayoutEXT( vkGetDeviceProcAddr( device, "vkCreateIndirectCommandsLayoutEXT" ) ); + vkDestroyIndirectCommandsLayoutEXT = PFN_vkDestroyIndirectCommandsLayoutEXT( vkGetDeviceProcAddr( device, "vkDestroyIndirectCommandsLayoutEXT" ) ); + vkCreateIndirectExecutionSetEXT = PFN_vkCreateIndirectExecutionSetEXT( vkGetDeviceProcAddr( device, "vkCreateIndirectExecutionSetEXT" ) ); + vkDestroyIndirectExecutionSetEXT = PFN_vkDestroyIndirectExecutionSetEXT( vkGetDeviceProcAddr( device, "vkDestroyIndirectExecutionSetEXT" ) ); + vkUpdateIndirectExecutionSetPipelineEXT = + PFN_vkUpdateIndirectExecutionSetPipelineEXT( vkGetDeviceProcAddr( device, "vkUpdateIndirectExecutionSetPipelineEXT" ) ); + vkUpdateIndirectExecutionSetShaderEXT = + PFN_vkUpdateIndirectExecutionSetShaderEXT( vkGetDeviceProcAddr( device, "vkUpdateIndirectExecutionSetShaderEXT" ) ); } public: @@ -2566,10 +2583,11 @@ namespace VULKAN_HPP_NAMESPACE PFN_vkAntiLagUpdateAMD vkAntiLagUpdateAMD = 0; //=== VK_EXT_shader_object === - PFN_vkCreateShadersEXT vkCreateShadersEXT = 0; - PFN_vkDestroyShaderEXT vkDestroyShaderEXT = 0; - PFN_vkGetShaderBinaryDataEXT vkGetShaderBinaryDataEXT = 0; - PFN_vkCmdBindShadersEXT vkCmdBindShadersEXT = 0; + PFN_vkCreateShadersEXT vkCreateShadersEXT = 0; + PFN_vkDestroyShaderEXT vkDestroyShaderEXT = 0; + PFN_vkGetShaderBinaryDataEXT vkGetShaderBinaryDataEXT = 0; + PFN_vkCmdBindShadersEXT vkCmdBindShadersEXT = 0; + PFN_vkCmdSetDepthClampRangeEXT vkCmdSetDepthClampRangeEXT = 0; //=== VK_KHR_pipeline_binary === PFN_vkCreatePipelineBinariesKHR vkCreatePipelineBinariesKHR = 0; @@ -2612,6 +2630,17 @@ namespace VULKAN_HPP_NAMESPACE PFN_vkCmdPushDescriptorSetWithTemplate2KHR vkCmdPushDescriptorSetWithTemplate2KHR = 0; PFN_vkCmdSetDescriptorBufferOffsets2EXT vkCmdSetDescriptorBufferOffsets2EXT = 0; PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = 0; + + //=== VK_EXT_device_generated_commands === + PFN_vkGetGeneratedCommandsMemoryRequirementsEXT vkGetGeneratedCommandsMemoryRequirementsEXT = 0; + PFN_vkCmdPreprocessGeneratedCommandsEXT vkCmdPreprocessGeneratedCommandsEXT = 0; + PFN_vkCmdExecuteGeneratedCommandsEXT vkCmdExecuteGeneratedCommandsEXT = 0; + PFN_vkCreateIndirectCommandsLayoutEXT vkCreateIndirectCommandsLayoutEXT = 0; + PFN_vkDestroyIndirectCommandsLayoutEXT vkDestroyIndirectCommandsLayoutEXT = 0; + PFN_vkCreateIndirectExecutionSetEXT vkCreateIndirectExecutionSetEXT = 0; + PFN_vkDestroyIndirectExecutionSetEXT vkDestroyIndirectExecutionSetEXT = 0; + PFN_vkUpdateIndirectExecutionSetPipelineEXT vkUpdateIndirectExecutionSetPipelineEXT = 0; + PFN_vkUpdateIndirectExecutionSetShaderEXT vkUpdateIndirectExecutionSetShaderEXT = 0; }; //======================================== @@ -2717,6 +2746,10 @@ namespace VULKAN_HPP_NAMESPACE //=== VK_KHR_pipeline_binary === class PipelineBinaryKHR; + //=== VK_EXT_device_generated_commands === + class IndirectCommandsLayoutEXT; + class IndirectExecutionSetEXT; + //==================== //=== RAII HANDLES === //==================== @@ -4619,6 +4652,27 @@ namespace VULKAN_HPP_NAMESPACE VULKAN_HPP_NODISCARD std::pair<uint64_t, uint64_t> getCalibratedTimestampKHR( const VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR & timestampInfo ) const; + //=== VK_EXT_device_generated_commands === + + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 + getGeneratedCommandsMemoryRequirementsEXT( const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoEXT & info ) const VULKAN_HPP_NOEXCEPT; + + template <typename X, typename Y, typename... Z> + VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> + getGeneratedCommandsMemoryRequirementsEXT( const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoEXT & info ) const VULKAN_HPP_NOEXCEPT; + + VULKAN_HPP_NODISCARD + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::IndirectCommandsLayoutEXT>::Type + createIndirectCommandsLayoutEXT( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoEXT const & createInfo, + VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const + VULKAN_HPP_RAII_CREATE_NOEXCEPT; + + VULKAN_HPP_NODISCARD + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::IndirectExecutionSetEXT>::Type + createIndirectExecutionSetEXT( VULKAN_HPP_NAMESPACE::IndirectExecutionSetCreateInfoEXT const & createInfo, + VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const + VULKAN_HPP_RAII_CREATE_NOEXCEPT; + private: VULKAN_HPP_NAMESPACE::Device m_device = {}; const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = {}; @@ -6390,6 +6444,10 @@ namespace VULKAN_HPP_NAMESPACE void bindShadersEXT( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ShaderStageFlagBits> const & stages, VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ShaderEXT> const & shaders ) const; + void setDepthClampRangeEXT( VULKAN_HPP_NAMESPACE::DepthClampModeEXT depthClampMode, + Optional<const VULKAN_HPP_NAMESPACE::DepthClampRangeEXT> depthClampRange + VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + //=== VK_EXT_attachment_feedback_loop_dynamic_state === void setAttachmentFeedbackLoopEnableEXT( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const @@ -6416,6 +6474,14 @@ namespace VULKAN_HPP_NAMESPACE void bindDescriptorBufferEmbeddedSamplers2EXT( const VULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT & bindDescriptorBufferEmbeddedSamplersInfo ) const VULKAN_HPP_NOEXCEPT; + //=== VK_EXT_device_generated_commands === + + void preprocessGeneratedCommandsEXT( const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoEXT & generatedCommandsInfo, + VULKAN_HPP_NAMESPACE::CommandBuffer stateCommandBuffer ) const VULKAN_HPP_NOEXCEPT; + + void executeGeneratedCommandsEXT( VULKAN_HPP_NAMESPACE::Bool32 isPreprocessed, + const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoEXT & generatedCommandsInfo ) const VULKAN_HPP_NOEXCEPT; + private: VULKAN_HPP_NAMESPACE::Device m_device = {}; VULKAN_HPP_NAMESPACE::CommandPool m_commandPool = {}; @@ -8898,6 +8964,126 @@ namespace VULKAN_HPP_NAMESPACE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; }; + class IndirectCommandsLayoutEXT + { + public: + using CType = VkIndirectCommandsLayoutEXT; + using CppType = VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eIndirectCommandsLayoutEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; + + public: +# if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS ) + IndirectCommandsLayoutEXT( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoEXT const & createInfo, + VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) + { + *this = device.createIndirectCommandsLayoutEXT( createInfo, allocator ); + } +# endif + + IndirectCommandsLayoutEXT( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkIndirectCommandsLayoutEXT indirectCommandsLayout, + VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) + : m_device( device ) + , m_indirectCommandsLayout( indirectCommandsLayout ) + , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + IndirectCommandsLayoutEXT( std::nullptr_t ) {} + + ~IndirectCommandsLayoutEXT() + { + clear(); + } + + IndirectCommandsLayoutEXT() = delete; + IndirectCommandsLayoutEXT( IndirectCommandsLayoutEXT const & ) = delete; + + IndirectCommandsLayoutEXT( IndirectCommandsLayoutEXT && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_indirectCommandsLayout( VULKAN_HPP_NAMESPACE::exchange( rhs.m_indirectCommandsLayout, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + IndirectCommandsLayoutEXT & operator=( IndirectCommandsLayoutEXT const & ) = delete; + + IndirectCommandsLayoutEXT & operator=( IndirectCommandsLayoutEXT && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_indirectCommandsLayout, rhs.m_indirectCommandsLayout ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_indirectCommandsLayout; + } + + operator VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT() const VULKAN_HPP_NOEXCEPT + { + return m_indirectCommandsLayout; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_indirectCommandsLayout ) + { + getDispatcher()->vkDestroyIndirectCommandsLayoutEXT( static_cast<VkDevice>( m_device ), + static_cast<VkIndirectCommandsLayoutEXT>( m_indirectCommandsLayout ), + reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) ); + } + m_device = nullptr; + m_indirectCommandsLayout = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return VULKAN_HPP_NAMESPACE::exchange( m_indirectCommandsLayout, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::IndirectCommandsLayoutEXT & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_indirectCommandsLayout, rhs.m_indirectCommandsLayout ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT m_indirectCommandsLayout = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + class IndirectCommandsLayoutNV { public: @@ -9018,6 +9204,134 @@ namespace VULKAN_HPP_NAMESPACE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; }; + class IndirectExecutionSetEXT + { + public: + using CType = VkIndirectExecutionSetEXT; + using CppType = VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eIndirectExecutionSetEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; + + public: +# if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS ) + IndirectExecutionSetEXT( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::IndirectExecutionSetCreateInfoEXT const & createInfo, + VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) + { + *this = device.createIndirectExecutionSetEXT( createInfo, allocator ); + } +# endif + + IndirectExecutionSetEXT( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkIndirectExecutionSetEXT indirectExecutionSet, + VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) + : m_device( device ) + , m_indirectExecutionSet( indirectExecutionSet ) + , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + IndirectExecutionSetEXT( std::nullptr_t ) {} + + ~IndirectExecutionSetEXT() + { + clear(); + } + + IndirectExecutionSetEXT() = delete; + IndirectExecutionSetEXT( IndirectExecutionSetEXT const & ) = delete; + + IndirectExecutionSetEXT( IndirectExecutionSetEXT && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_indirectExecutionSet( VULKAN_HPP_NAMESPACE::exchange( rhs.m_indirectExecutionSet, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + IndirectExecutionSetEXT & operator=( IndirectExecutionSetEXT const & ) = delete; + + IndirectExecutionSetEXT & operator=( IndirectExecutionSetEXT && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_indirectExecutionSet, rhs.m_indirectExecutionSet ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_indirectExecutionSet; + } + + operator VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT() const VULKAN_HPP_NOEXCEPT + { + return m_indirectExecutionSet; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_indirectExecutionSet ) + { + getDispatcher()->vkDestroyIndirectExecutionSetEXT( static_cast<VkDevice>( m_device ), + static_cast<VkIndirectExecutionSetEXT>( m_indirectExecutionSet ), + reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) ); + } + m_device = nullptr; + m_indirectExecutionSet = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return VULKAN_HPP_NAMESPACE::exchange( m_indirectExecutionSet, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::IndirectExecutionSetEXT & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_indirectExecutionSet, rhs.m_indirectExecutionSet ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_EXT_device_generated_commands === + + void updatePipeline( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::WriteIndirectExecutionSetPipelineEXT> const & executionSetWrites ) const + VULKAN_HPP_NOEXCEPT; + + void updateShader( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::WriteIndirectExecutionSetShaderEXT> const & executionSetWrites ) const + VULKAN_HPP_NOEXCEPT; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT m_indirectExecutionSet = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; + class MicromapEXT { public: @@ -22782,6 +23096,19 @@ namespace VULKAN_HPP_NAMESPACE reinterpret_cast<const VkShaderEXT *>( shaders.data() ) ); } + VULKAN_HPP_INLINE void + CommandBuffer::setDepthClampRangeEXT( VULKAN_HPP_NAMESPACE::DepthClampModeEXT depthClampMode, + Optional<const VULKAN_HPP_NAMESPACE::DepthClampRangeEXT> depthClampRange ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthClampRangeEXT && + "Function <vkCmdSetDepthClampRangeEXT> requires <VK_EXT_depth_clamp_control> or <VK_EXT_shader_object>" ); + + getDispatcher()->vkCmdSetDepthClampRangeEXT( + static_cast<VkCommandBuffer>( m_commandBuffer ), + static_cast<VkDepthClampModeEXT>( depthClampMode ), + reinterpret_cast<const VkDepthClampRangeEXT *>( static_cast<const VULKAN_HPP_NAMESPACE::DepthClampRangeEXT *>( depthClampRange ) ) ); + } + //=== VK_KHR_pipeline_binary === VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE @@ -23212,6 +23539,135 @@ namespace VULKAN_HPP_NAMESPACE reinterpret_cast<const VkBindDescriptorBufferEmbeddedSamplersInfoEXT *>( &bindDescriptorBufferEmbeddedSamplersInfo ) ); } + //=== VK_EXT_device_generated_commands === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2 Device::getGeneratedCommandsMemoryRequirementsEXT( + const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoEXT & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsEXT && + "Function <vkGetGeneratedCommandsMemoryRequirementsEXT> requires <VK_EXT_device_generated_commands>" ); + + VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements; + getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsEXT( static_cast<VkDevice>( m_device ), + reinterpret_cast<const VkGeneratedCommandsMemoryRequirementsInfoEXT *>( &info ), + reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) ); + + return memoryRequirements; + } + + template <typename X, typename Y, typename... Z> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> Device::getGeneratedCommandsMemoryRequirementsEXT( + const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoEXT & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsEXT && + "Function <vkGetGeneratedCommandsMemoryRequirementsEXT> requires <VK_EXT_device_generated_commands>" ); + + VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> structureChain; + VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements = structureChain.template get<VULKAN_HPP_NAMESPACE::MemoryRequirements2>(); + getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsEXT( static_cast<VkDevice>( m_device ), + reinterpret_cast<const VkGeneratedCommandsMemoryRequirementsInfoEXT *>( &info ), + reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) ); + + return structureChain; + } + + VULKAN_HPP_INLINE void CommandBuffer::preprocessGeneratedCommandsEXT( const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoEXT & generatedCommandsInfo, + VULKAN_HPP_NAMESPACE::CommandBuffer stateCommandBuffer ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPreprocessGeneratedCommandsEXT && + "Function <vkCmdPreprocessGeneratedCommandsEXT> requires <VK_EXT_device_generated_commands>" ); + + getDispatcher()->vkCmdPreprocessGeneratedCommandsEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), + reinterpret_cast<const VkGeneratedCommandsInfoEXT *>( &generatedCommandsInfo ), + static_cast<VkCommandBuffer>( stateCommandBuffer ) ); + } + + VULKAN_HPP_INLINE void + CommandBuffer::executeGeneratedCommandsEXT( VULKAN_HPP_NAMESPACE::Bool32 isPreprocessed, + const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoEXT & generatedCommandsInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdExecuteGeneratedCommandsEXT && + "Function <vkCmdExecuteGeneratedCommandsEXT> requires <VK_EXT_device_generated_commands>" ); + + getDispatcher()->vkCmdExecuteGeneratedCommandsEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), + static_cast<VkBool32>( isPreprocessed ), + reinterpret_cast<const VkGeneratedCommandsInfoEXT *>( &generatedCommandsInfo ) ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::IndirectCommandsLayoutEXT>::Type + Device::createIndirectCommandsLayoutEXT( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoEXT const & createInfo, + VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const + VULKAN_HPP_RAII_CREATE_NOEXCEPT + { + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT indirectCommandsLayout; + VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateIndirectCommandsLayoutEXT( + static_cast<VkDevice>( m_device ), + reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoEXT *>( &createInfo ), + reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ), + reinterpret_cast<VkIndirectCommandsLayoutEXT *>( &indirectCommandsLayout ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { +# if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS ) + return VULKAN_HPP_UNEXPECTED( result ); +# else + VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createIndirectCommandsLayoutEXT" ); +# endif + } + + return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::IndirectCommandsLayoutEXT( + *this, *reinterpret_cast<VkIndirectCommandsLayoutEXT *>( &indirectCommandsLayout ), allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::IndirectExecutionSetEXT>::Type + Device::createIndirectExecutionSetEXT( VULKAN_HPP_NAMESPACE::IndirectExecutionSetCreateInfoEXT const & createInfo, + VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const + VULKAN_HPP_RAII_CREATE_NOEXCEPT + { + VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT indirectExecutionSet; + VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateIndirectExecutionSetEXT( + static_cast<VkDevice>( m_device ), + reinterpret_cast<const VkIndirectExecutionSetCreateInfoEXT *>( &createInfo ), + reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ), + reinterpret_cast<VkIndirectExecutionSetEXT *>( &indirectExecutionSet ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { +# if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS ) + return VULKAN_HPP_UNEXPECTED( result ); +# else + VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createIndirectExecutionSetEXT" ); +# endif + } + + return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::IndirectExecutionSetEXT( + *this, *reinterpret_cast<VkIndirectExecutionSetEXT *>( &indirectExecutionSet ), allocator ); + } + + VULKAN_HPP_INLINE void IndirectExecutionSetEXT::updatePipeline( + VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::WriteIndirectExecutionSetPipelineEXT> const & executionSetWrites ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkUpdateIndirectExecutionSetPipelineEXT && + "Function <vkUpdateIndirectExecutionSetPipelineEXT> requires <VK_EXT_device_generated_commands>" ); + + getDispatcher()->vkUpdateIndirectExecutionSetPipelineEXT( static_cast<VkDevice>( m_device ), + static_cast<VkIndirectExecutionSetEXT>( m_indirectExecutionSet ), + executionSetWrites.size(), + reinterpret_cast<const VkWriteIndirectExecutionSetPipelineEXT *>( executionSetWrites.data() ) ); + } + + VULKAN_HPP_INLINE void IndirectExecutionSetEXT::updateShader( + VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::WriteIndirectExecutionSetShaderEXT> const & executionSetWrites ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkUpdateIndirectExecutionSetShaderEXT && + "Function <vkUpdateIndirectExecutionSetShaderEXT> requires <VK_EXT_device_generated_commands>" ); + + getDispatcher()->vkUpdateIndirectExecutionSetShaderEXT( static_cast<VkDevice>( m_device ), + static_cast<VkIndirectExecutionSetEXT>( m_indirectExecutionSet ), + executionSetWrites.size(), + reinterpret_cast<const VkWriteIndirectExecutionSetShaderEXT *>( executionSetWrites.data() ) ); + } + //==================== //=== RAII Helpers === //==================== diff --git a/include/vulkan/vulkan_shared.hpp b/include/vulkan/vulkan_shared.hpp index 1bff517..fbb871b 100644 --- a/include/vulkan/vulkan_shared.hpp +++ b/include/vulkan/vulkan_shared.hpp @@ -8,9 +8,12 @@ #ifndef VULKAN_SHARED_HPP #define VULKAN_SHARED_HPP -#include <atomic> // std::atomic_size_t #include <vulkan/vulkan.hpp> +#if !( defined( VULKAN_HPP_ENABLE_STD_MODULE ) && defined( VULKAN_HPP_STD_MODULE ) ) +# include <atomic> // std::atomic_size_t +#endif + namespace VULKAN_HPP_NAMESPACE { #if !defined( VULKAN_HPP_NO_SMART_HANDLE ) @@ -971,6 +974,27 @@ namespace VULKAN_HPP_NAMESPACE using SharedPipelineBinaryKHR = SharedHandle<PipelineBinaryKHR>; + //=== VK_EXT_device_generated_commands === + template <> + class SharedHandleTraits<IndirectCommandsLayoutEXT> + { + public: + using DestructorType = Device; + using deleter = ObjectDestroyShared<IndirectCommandsLayoutEXT>; + }; + + using SharedIndirectCommandsLayoutEXT = SharedHandle<IndirectCommandsLayoutEXT>; + + template <> + class SharedHandleTraits<IndirectExecutionSetEXT> + { + public: + using DestructorType = Device; + using deleter = ObjectDestroyShared<IndirectExecutionSetEXT>; + }; + + using SharedIndirectExecutionSetEXT = SharedHandle<IndirectExecutionSetEXT>; + enum class SwapchainOwns { no, diff --git a/include/vulkan/vulkan_static_assertions.hpp b/include/vulkan/vulkan_static_assertions.hpp index 1d0e054..c7af29a 100644 --- a/include/vulkan/vulkan_static_assertions.hpp +++ b/include/vulkan/vulkan_static_assertions.hpp @@ -7759,6 +7759,176 @@ VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::Physical VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingValidationFeaturesNV>::value, "PhysicalDeviceRayTracingValidationFeaturesNV is not nothrow_move_constructible!" ); +//=== VK_EXT_device_generated_commands === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT ) == + sizeof( VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT>::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT>::value, + "PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT ) == + sizeof( VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT>::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT>::value, + "PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoEXT ) == sizeof( VkGeneratedCommandsMemoryRequirementsInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoEXT>::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoEXT>::value, + "GeneratedCommandsMemoryRequirementsInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectExecutionSetCreateInfoEXT ) == sizeof( VkIndirectExecutionSetCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::IndirectExecutionSetCreateInfoEXT>::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::IndirectExecutionSetCreateInfoEXT>::value, + "IndirectExecutionSetCreateInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectExecutionSetInfoEXT ) == sizeof( VkIndirectExecutionSetInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::IndirectExecutionSetInfoEXT>::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::IndirectExecutionSetInfoEXT>::value, + "IndirectExecutionSetInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectExecutionSetPipelineInfoEXT ) == sizeof( VkIndirectExecutionSetPipelineInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::IndirectExecutionSetPipelineInfoEXT>::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::IndirectExecutionSetPipelineInfoEXT>::value, + "IndirectExecutionSetPipelineInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectExecutionSetShaderInfoEXT ) == sizeof( VkIndirectExecutionSetShaderInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::IndirectExecutionSetShaderInfoEXT>::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::IndirectExecutionSetShaderInfoEXT>::value, + "IndirectExecutionSetShaderInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoEXT ) == sizeof( VkGeneratedCommandsInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoEXT>::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoEXT>::value, + "GeneratedCommandsInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::WriteIndirectExecutionSetPipelineEXT ) == sizeof( VkWriteIndirectExecutionSetPipelineEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::WriteIndirectExecutionSetPipelineEXT>::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::WriteIndirectExecutionSetPipelineEXT>::value, + "WriteIndirectExecutionSetPipelineEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoEXT ) == sizeof( VkIndirectCommandsLayoutCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoEXT>::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoEXT>::value, + "IndirectCommandsLayoutCreateInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenEXT ) == sizeof( VkIndirectCommandsLayoutTokenEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenEXT>::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenEXT>::value, + "IndirectCommandsLayoutTokenEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DrawIndirectCountIndirectCommandEXT ) == sizeof( VkDrawIndirectCountIndirectCommandEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DrawIndirectCountIndirectCommandEXT>::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DrawIndirectCountIndirectCommandEXT>::value, + "DrawIndirectCountIndirectCommandEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectCommandsVertexBufferTokenEXT ) == sizeof( VkIndirectCommandsVertexBufferTokenEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::IndirectCommandsVertexBufferTokenEXT>::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::IndirectCommandsVertexBufferTokenEXT>::value, + "IndirectCommandsVertexBufferTokenEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandEXT ) == sizeof( VkBindVertexBufferIndirectCommandEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandEXT>::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandEXT>::value, + "BindVertexBufferIndirectCommandEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectCommandsIndexBufferTokenEXT ) == sizeof( VkIndirectCommandsIndexBufferTokenEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::IndirectCommandsIndexBufferTokenEXT>::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::IndirectCommandsIndexBufferTokenEXT>::value, + "IndirectCommandsIndexBufferTokenEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandEXT ) == sizeof( VkBindIndexBufferIndirectCommandEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandEXT>::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandEXT>::value, + "BindIndexBufferIndirectCommandEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectCommandsPushConstantTokenEXT ) == sizeof( VkIndirectCommandsPushConstantTokenEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::IndirectCommandsPushConstantTokenEXT>::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::IndirectCommandsPushConstantTokenEXT>::value, + "IndirectCommandsPushConstantTokenEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectCommandsExecutionSetTokenEXT ) == sizeof( VkIndirectCommandsExecutionSetTokenEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::IndirectCommandsExecutionSetTokenEXT>::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::IndirectCommandsExecutionSetTokenEXT>::value, + "IndirectCommandsExecutionSetTokenEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectCommandsTokenDataEXT ) == sizeof( VkIndirectCommandsTokenDataEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::IndirectCommandsTokenDataEXT>::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::IndirectCommandsTokenDataEXT>::value, + "IndirectCommandsTokenDataEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT ) == sizeof( VkIndirectCommandsLayoutEXT ), + "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT>::value, + "IndirectCommandsLayoutEXT is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT>::value, + "IndirectCommandsLayoutEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT ) == sizeof( VkIndirectExecutionSetEXT ), + "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible<VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT>::value, + "IndirectExecutionSetEXT is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT>::value, + "IndirectExecutionSetEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectExecutionSetShaderLayoutInfoEXT ) == sizeof( VkIndirectExecutionSetShaderLayoutInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::IndirectExecutionSetShaderLayoutInfoEXT>::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::IndirectExecutionSetShaderLayoutInfoEXT>::value, + "IndirectExecutionSetShaderLayoutInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GeneratedCommandsPipelineInfoEXT ) == sizeof( VkGeneratedCommandsPipelineInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::GeneratedCommandsPipelineInfoEXT>::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::GeneratedCommandsPipelineInfoEXT>::value, + "GeneratedCommandsPipelineInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GeneratedCommandsShaderInfoEXT ) == sizeof( VkGeneratedCommandsShaderInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::GeneratedCommandsShaderInfoEXT>::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::GeneratedCommandsShaderInfoEXT>::value, + "GeneratedCommandsShaderInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::WriteIndirectExecutionSetShaderEXT ) == sizeof( VkWriteIndirectExecutionSetShaderEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::WriteIndirectExecutionSetShaderEXT>::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::WriteIndirectExecutionSetShaderEXT>::value, + "WriteIndirectExecutionSetShaderEXT is not nothrow_move_constructible!" ); + //=== VK_MESA_image_alignment_control === VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlFeaturesMESA ) == @@ -7784,4 +7954,26 @@ VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::ImageAli VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::ImageAlignmentControlCreateInfoMESA>::value, "ImageAlignmentControlCreateInfoMESA is not nothrow_move_constructible!" ); +//=== VK_EXT_depth_clamp_control === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampControlFeaturesEXT ) == sizeof( VkPhysicalDeviceDepthClampControlFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampControlFeaturesEXT>::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampControlFeaturesEXT>::value, + "PhysicalDeviceDepthClampControlFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineViewportDepthClampControlCreateInfoEXT ) == + sizeof( VkPipelineViewportDepthClampControlCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::PipelineViewportDepthClampControlCreateInfoEXT>::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineViewportDepthClampControlCreateInfoEXT>::value, + "PipelineViewportDepthClampControlCreateInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DepthClampRangeEXT ) == sizeof( VkDepthClampRangeEXT ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::DepthClampRangeEXT>::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::DepthClampRangeEXT>::value, + "DepthClampRangeEXT is not nothrow_move_constructible!" ); + #endif diff --git a/include/vulkan/vulkan_structs.hpp b/include/vulkan/vulkan_structs.hpp index 5f6391c..1ac3c48 100644 --- a/include/vulkan/vulkan_structs.hpp +++ b/include/vulkan/vulkan_structs.hpp @@ -8695,6 +8695,103 @@ namespace VULKAN_HPP_NAMESPACE using BindImagePlaneMemoryInfoKHR = BindImagePlaneMemoryInfo; + struct BindIndexBufferIndirectCommandEXT + { + using NativeType = VkBindIndexBufferIndirectCommandEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + BindIndexBufferIndirectCommandEXT( VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress_ = {}, + uint32_t size_ = {}, + VULKAN_HPP_NAMESPACE::IndexType indexType_ = VULKAN_HPP_NAMESPACE::IndexType::eUint16 ) VULKAN_HPP_NOEXCEPT + : bufferAddress{ bufferAddress_ } + , size{ size_ } + , indexType{ indexType_ } + { + } + + VULKAN_HPP_CONSTEXPR BindIndexBufferIndirectCommandEXT( BindIndexBufferIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindIndexBufferIndirectCommandEXT( VkBindIndexBufferIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : BindIndexBufferIndirectCommandEXT( *reinterpret_cast<BindIndexBufferIndirectCommandEXT const *>( &rhs ) ) + { + } + + BindIndexBufferIndirectCommandEXT & operator=( BindIndexBufferIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BindIndexBufferIndirectCommandEXT & operator=( VkBindIndexBufferIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandEXT const *>( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindIndexBufferIndirectCommandEXT & setBufferAddress( VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress_ ) VULKAN_HPP_NOEXCEPT + { + bufferAddress = bufferAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindIndexBufferIndirectCommandEXT & setSize( uint32_t size_ ) VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindIndexBufferIndirectCommandEXT & setIndexType( VULKAN_HPP_NAMESPACE::IndexType indexType_ ) VULKAN_HPP_NOEXCEPT + { + indexType = indexType_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkBindIndexBufferIndirectCommandEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<const VkBindIndexBufferIndirectCommandEXT *>( this ); + } + + operator VkBindIndexBufferIndirectCommandEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<VkBindIndexBufferIndirectCommandEXT *>( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple<VULKAN_HPP_NAMESPACE::DeviceAddress const &, uint32_t const &, VULKAN_HPP_NAMESPACE::IndexType const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( bufferAddress, size, indexType ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindIndexBufferIndirectCommandEXT const & ) const = default; +#else + bool operator==( BindIndexBufferIndirectCommandEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( bufferAddress == rhs.bufferAddress ) && ( size == rhs.size ) && ( indexType == rhs.indexType ); +# endif + } + + bool operator!=( BindIndexBufferIndirectCommandEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress = {}; + uint32_t size = {}; + VULKAN_HPP_NAMESPACE::IndexType indexType = VULKAN_HPP_NAMESPACE::IndexType::eUint16; + }; + struct BindIndexBufferIndirectCommandNV { using NativeType = VkBindIndexBufferIndirectCommandNV; @@ -10179,6 +10276,102 @@ namespace VULKAN_HPP_NAMESPACE using Type = BindSparseInfo; }; + struct BindVertexBufferIndirectCommandEXT + { + using NativeType = VkBindVertexBufferIndirectCommandEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BindVertexBufferIndirectCommandEXT( VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress_ = {}, + uint32_t size_ = {}, + uint32_t stride_ = {} ) VULKAN_HPP_NOEXCEPT + : bufferAddress{ bufferAddress_ } + , size{ size_ } + , stride{ stride_ } + { + } + + VULKAN_HPP_CONSTEXPR BindVertexBufferIndirectCommandEXT( BindVertexBufferIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindVertexBufferIndirectCommandEXT( VkBindVertexBufferIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : BindVertexBufferIndirectCommandEXT( *reinterpret_cast<BindVertexBufferIndirectCommandEXT const *>( &rhs ) ) + { + } + + BindVertexBufferIndirectCommandEXT & operator=( BindVertexBufferIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + BindVertexBufferIndirectCommandEXT & operator=( VkBindVertexBufferIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandEXT const *>( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindVertexBufferIndirectCommandEXT & setBufferAddress( VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress_ ) VULKAN_HPP_NOEXCEPT + { + bufferAddress = bufferAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindVertexBufferIndirectCommandEXT & setSize( uint32_t size_ ) VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindVertexBufferIndirectCommandEXT & setStride( uint32_t stride_ ) VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkBindVertexBufferIndirectCommandEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<const VkBindVertexBufferIndirectCommandEXT *>( this ); + } + + operator VkBindVertexBufferIndirectCommandEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<VkBindVertexBufferIndirectCommandEXT *>( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple<VULKAN_HPP_NAMESPACE::DeviceAddress const &, uint32_t const &, uint32_t const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( bufferAddress, size, stride ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindVertexBufferIndirectCommandEXT const & ) const = default; +#else + bool operator==( BindVertexBufferIndirectCommandEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( bufferAddress == rhs.bufferAddress ) && ( size == rhs.size ) && ( stride == rhs.stride ); +# endif + } + + bool operator!=( BindVertexBufferIndirectCommandEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress = {}; + uint32_t size = {}; + uint32_t stride = {}; + }; + struct BindVertexBufferIndirectCommandNV { using NativeType = VkBindVertexBufferIndirectCommandNV; @@ -23509,6 +23702,89 @@ namespace VULKAN_HPP_NAMESPACE using Type = DepthBiasRepresentationInfoEXT; }; + struct DepthClampRangeEXT + { + using NativeType = VkDepthClampRangeEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DepthClampRangeEXT( float minDepthClamp_ = {}, float maxDepthClamp_ = {} ) VULKAN_HPP_NOEXCEPT + : minDepthClamp{ minDepthClamp_ } + , maxDepthClamp{ maxDepthClamp_ } + { + } + + VULKAN_HPP_CONSTEXPR DepthClampRangeEXT( DepthClampRangeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DepthClampRangeEXT( VkDepthClampRangeEXT const & rhs ) VULKAN_HPP_NOEXCEPT : DepthClampRangeEXT( *reinterpret_cast<DepthClampRangeEXT const *>( &rhs ) ) {} + + DepthClampRangeEXT & operator=( DepthClampRangeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DepthClampRangeEXT & operator=( VkDepthClampRangeEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DepthClampRangeEXT const *>( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DepthClampRangeEXT & setMinDepthClamp( float minDepthClamp_ ) VULKAN_HPP_NOEXCEPT + { + minDepthClamp = minDepthClamp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DepthClampRangeEXT & setMaxDepthClamp( float maxDepthClamp_ ) VULKAN_HPP_NOEXCEPT + { + maxDepthClamp = maxDepthClamp_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkDepthClampRangeEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<const VkDepthClampRangeEXT *>( this ); + } + + operator VkDepthClampRangeEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<VkDepthClampRangeEXT *>( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple<float const &, float const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( minDepthClamp, maxDepthClamp ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DepthClampRangeEXT const & ) const = default; +#else + bool operator==( DepthClampRangeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( minDepthClamp == rhs.minDepthClamp ) && ( maxDepthClamp == rhs.maxDepthClamp ); +# endif + } + + bool operator!=( DepthClampRangeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + float minDepthClamp = {}; + float maxDepthClamp = {}; + }; + struct DescriptorAddressInfoEXT { using NativeType = VkDescriptorAddressInfoEXT; @@ -33201,6 +33477,102 @@ namespace VULKAN_HPP_NAMESPACE uint32_t firstInstance = {}; }; + struct DrawIndirectCountIndirectCommandEXT + { + using NativeType = VkDrawIndirectCountIndirectCommandEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DrawIndirectCountIndirectCommandEXT( VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress_ = {}, + uint32_t stride_ = {}, + uint32_t commandCount_ = {} ) VULKAN_HPP_NOEXCEPT + : bufferAddress{ bufferAddress_ } + , stride{ stride_ } + , commandCount{ commandCount_ } + { + } + + VULKAN_HPP_CONSTEXPR DrawIndirectCountIndirectCommandEXT( DrawIndirectCountIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DrawIndirectCountIndirectCommandEXT( VkDrawIndirectCountIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DrawIndirectCountIndirectCommandEXT( *reinterpret_cast<DrawIndirectCountIndirectCommandEXT const *>( &rhs ) ) + { + } + + DrawIndirectCountIndirectCommandEXT & operator=( DrawIndirectCountIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DrawIndirectCountIndirectCommandEXT & operator=( VkDrawIndirectCountIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrawIndirectCountIndirectCommandEXT const *>( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCountIndirectCommandEXT & setBufferAddress( VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress_ ) VULKAN_HPP_NOEXCEPT + { + bufferAddress = bufferAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCountIndirectCommandEXT & setStride( uint32_t stride_ ) VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCountIndirectCommandEXT & setCommandCount( uint32_t commandCount_ ) VULKAN_HPP_NOEXCEPT + { + commandCount = commandCount_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkDrawIndirectCountIndirectCommandEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<const VkDrawIndirectCountIndirectCommandEXT *>( this ); + } + + operator VkDrawIndirectCountIndirectCommandEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<VkDrawIndirectCountIndirectCommandEXT *>( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple<VULKAN_HPP_NAMESPACE::DeviceAddress const &, uint32_t const &, uint32_t const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( bufferAddress, stride, commandCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DrawIndirectCountIndirectCommandEXT const & ) const = default; +#else + bool operator==( DrawIndirectCountIndirectCommandEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( bufferAddress == rhs.bufferAddress ) && ( stride == rhs.stride ) && ( commandCount == rhs.commandCount ); +# endif + } + + bool operator!=( DrawIndirectCountIndirectCommandEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress = {}; + uint32_t stride = {}; + uint32_t commandCount = {}; + }; + struct DrawMeshTasksIndirectCommandEXT { using NativeType = VkDrawMeshTasksIndirectCommandEXT; @@ -38834,6 +39206,211 @@ namespace VULKAN_HPP_NAMESPACE using Type = FramebufferMixedSamplesCombinationNV; }; + struct GeneratedCommandsInfoEXT + { + using NativeType = VkGeneratedCommandsInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGeneratedCommandsInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR GeneratedCommandsInfoEXT( VULKAN_HPP_NAMESPACE::ShaderStageFlags shaderStages_ = {}, + VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT indirectExecutionSet_ = {}, + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT indirectCommandsLayout_ = {}, + VULKAN_HPP_NAMESPACE::DeviceAddress indirectAddress_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize indirectAddressSize_ = {}, + VULKAN_HPP_NAMESPACE::DeviceAddress preprocessAddress_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize preprocessSize_ = {}, + uint32_t maxSequenceCount_ = {}, + VULKAN_HPP_NAMESPACE::DeviceAddress sequenceCountAddress_ = {}, + uint32_t maxDrawCount_ = {}, + const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderStages{ shaderStages_ } + , indirectExecutionSet{ indirectExecutionSet_ } + , indirectCommandsLayout{ indirectCommandsLayout_ } + , indirectAddress{ indirectAddress_ } + , indirectAddressSize{ indirectAddressSize_ } + , preprocessAddress{ preprocessAddress_ } + , preprocessSize{ preprocessSize_ } + , maxSequenceCount{ maxSequenceCount_ } + , sequenceCountAddress{ sequenceCountAddress_ } + , maxDrawCount{ maxDrawCount_ } + { + } + + VULKAN_HPP_CONSTEXPR GeneratedCommandsInfoEXT( GeneratedCommandsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GeneratedCommandsInfoEXT( VkGeneratedCommandsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : GeneratedCommandsInfoEXT( *reinterpret_cast<GeneratedCommandsInfoEXT const *>( &rhs ) ) + { + } + + GeneratedCommandsInfoEXT & operator=( GeneratedCommandsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + GeneratedCommandsInfoEXT & operator=( VkGeneratedCommandsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoEXT const *>( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT & setShaderStages( VULKAN_HPP_NAMESPACE::ShaderStageFlags shaderStages_ ) VULKAN_HPP_NOEXCEPT + { + shaderStages = shaderStages_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT & + setIndirectExecutionSet( VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT indirectExecutionSet_ ) VULKAN_HPP_NOEXCEPT + { + indirectExecutionSet = indirectExecutionSet_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT & + setIndirectCommandsLayout( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT indirectCommandsLayout_ ) VULKAN_HPP_NOEXCEPT + { + indirectCommandsLayout = indirectCommandsLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT & setIndirectAddress( VULKAN_HPP_NAMESPACE::DeviceAddress indirectAddress_ ) VULKAN_HPP_NOEXCEPT + { + indirectAddress = indirectAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT & setIndirectAddressSize( VULKAN_HPP_NAMESPACE::DeviceSize indirectAddressSize_ ) VULKAN_HPP_NOEXCEPT + { + indirectAddressSize = indirectAddressSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT & setPreprocessAddress( VULKAN_HPP_NAMESPACE::DeviceAddress preprocessAddress_ ) VULKAN_HPP_NOEXCEPT + { + preprocessAddress = preprocessAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT & setPreprocessSize( VULKAN_HPP_NAMESPACE::DeviceSize preprocessSize_ ) VULKAN_HPP_NOEXCEPT + { + preprocessSize = preprocessSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT & setMaxSequenceCount( uint32_t maxSequenceCount_ ) VULKAN_HPP_NOEXCEPT + { + maxSequenceCount = maxSequenceCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT & setSequenceCountAddress( VULKAN_HPP_NAMESPACE::DeviceAddress sequenceCountAddress_ ) VULKAN_HPP_NOEXCEPT + { + sequenceCountAddress = sequenceCountAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT & setMaxDrawCount( uint32_t maxDrawCount_ ) VULKAN_HPP_NOEXCEPT + { + maxDrawCount = maxDrawCount_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkGeneratedCommandsInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<const VkGeneratedCommandsInfoEXT *>( this ); + } + + operator VkGeneratedCommandsInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<VkGeneratedCommandsInfoEXT *>( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, + const void * const &, + VULKAN_HPP_NAMESPACE::ShaderStageFlags const &, + VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT const &, + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT const &, + VULKAN_HPP_NAMESPACE::DeviceAddress const &, + VULKAN_HPP_NAMESPACE::DeviceSize const &, + VULKAN_HPP_NAMESPACE::DeviceAddress const &, + VULKAN_HPP_NAMESPACE::DeviceSize const &, + uint32_t const &, + VULKAN_HPP_NAMESPACE::DeviceAddress const &, + uint32_t const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + shaderStages, + indirectExecutionSet, + indirectCommandsLayout, + indirectAddress, + indirectAddressSize, + preprocessAddress, + preprocessSize, + maxSequenceCount, + sequenceCountAddress, + maxDrawCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( GeneratedCommandsInfoEXT const & ) const = default; +#else + bool operator==( GeneratedCommandsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderStages == rhs.shaderStages ) && ( indirectExecutionSet == rhs.indirectExecutionSet ) && + ( indirectCommandsLayout == rhs.indirectCommandsLayout ) && ( indirectAddress == rhs.indirectAddress ) && + ( indirectAddressSize == rhs.indirectAddressSize ) && ( preprocessAddress == rhs.preprocessAddress ) && ( preprocessSize == rhs.preprocessSize ) && + ( maxSequenceCount == rhs.maxSequenceCount ) && ( sequenceCountAddress == rhs.sequenceCountAddress ) && ( maxDrawCount == rhs.maxDrawCount ); +# endif + } + + bool operator!=( GeneratedCommandsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGeneratedCommandsInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::ShaderStageFlags shaderStages = {}; + VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT indirectExecutionSet = {}; + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT indirectCommandsLayout = {}; + VULKAN_HPP_NAMESPACE::DeviceAddress indirectAddress = {}; + VULKAN_HPP_NAMESPACE::DeviceSize indirectAddressSize = {}; + VULKAN_HPP_NAMESPACE::DeviceAddress preprocessAddress = {}; + VULKAN_HPP_NAMESPACE::DeviceSize preprocessSize = {}; + uint32_t maxSequenceCount = {}; + VULKAN_HPP_NAMESPACE::DeviceAddress sequenceCountAddress = {}; + uint32_t maxDrawCount = {}; + }; + + template <> + struct CppType<StructureType, StructureType::eGeneratedCommandsInfoEXT> + { + using Type = GeneratedCommandsInfoEXT; + }; + struct IndirectCommandsStreamNV { using NativeType = VkIndirectCommandsStreamNV; @@ -39203,6 +39780,138 @@ namespace VULKAN_HPP_NAMESPACE using Type = GeneratedCommandsInfoNV; }; + struct GeneratedCommandsMemoryRequirementsInfoEXT + { + using NativeType = VkGeneratedCommandsMemoryRequirementsInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGeneratedCommandsMemoryRequirementsInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR GeneratedCommandsMemoryRequirementsInfoEXT( VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT indirectExecutionSet_ = {}, + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT indirectCommandsLayout_ = {}, + uint32_t maxSequenceCount_ = {}, + uint32_t maxDrawCount_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , indirectExecutionSet{ indirectExecutionSet_ } + , indirectCommandsLayout{ indirectCommandsLayout_ } + , maxSequenceCount{ maxSequenceCount_ } + , maxDrawCount{ maxDrawCount_ } + { + } + + VULKAN_HPP_CONSTEXPR GeneratedCommandsMemoryRequirementsInfoEXT( GeneratedCommandsMemoryRequirementsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GeneratedCommandsMemoryRequirementsInfoEXT( VkGeneratedCommandsMemoryRequirementsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : GeneratedCommandsMemoryRequirementsInfoEXT( *reinterpret_cast<GeneratedCommandsMemoryRequirementsInfoEXT const *>( &rhs ) ) + { + } + + GeneratedCommandsMemoryRequirementsInfoEXT & operator=( GeneratedCommandsMemoryRequirementsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + GeneratedCommandsMemoryRequirementsInfoEXT & operator=( VkGeneratedCommandsMemoryRequirementsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoEXT const *>( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoEXT & + setIndirectExecutionSet( VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT indirectExecutionSet_ ) VULKAN_HPP_NOEXCEPT + { + indirectExecutionSet = indirectExecutionSet_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoEXT & + setIndirectCommandsLayout( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT indirectCommandsLayout_ ) VULKAN_HPP_NOEXCEPT + { + indirectCommandsLayout = indirectCommandsLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoEXT & setMaxSequenceCount( uint32_t maxSequenceCount_ ) VULKAN_HPP_NOEXCEPT + { + maxSequenceCount = maxSequenceCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoEXT & setMaxDrawCount( uint32_t maxDrawCount_ ) VULKAN_HPP_NOEXCEPT + { + maxDrawCount = maxDrawCount_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkGeneratedCommandsMemoryRequirementsInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<const VkGeneratedCommandsMemoryRequirementsInfoEXT *>( this ); + } + + operator VkGeneratedCommandsMemoryRequirementsInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<VkGeneratedCommandsMemoryRequirementsInfoEXT *>( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, + void * const &, + VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT const &, + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT const &, + uint32_t const &, + uint32_t const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, indirectExecutionSet, indirectCommandsLayout, maxSequenceCount, maxDrawCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( GeneratedCommandsMemoryRequirementsInfoEXT const & ) const = default; +#else + bool operator==( GeneratedCommandsMemoryRequirementsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( indirectExecutionSet == rhs.indirectExecutionSet ) && + ( indirectCommandsLayout == rhs.indirectCommandsLayout ) && ( maxSequenceCount == rhs.maxSequenceCount ) && ( maxDrawCount == rhs.maxDrawCount ); +# endif + } + + bool operator!=( GeneratedCommandsMemoryRequirementsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGeneratedCommandsMemoryRequirementsInfoEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT indirectExecutionSet = {}; + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT indirectCommandsLayout = {}; + uint32_t maxSequenceCount = {}; + uint32_t maxDrawCount = {}; + }; + + template <> + struct CppType<StructureType, StructureType::eGeneratedCommandsMemoryRequirementsInfoEXT> + { + using Type = GeneratedCommandsMemoryRequirementsInfoEXT; + }; + struct GeneratedCommandsMemoryRequirementsInfoNV { using NativeType = VkGeneratedCommandsMemoryRequirementsInfoNV; @@ -39336,6 +40045,226 @@ namespace VULKAN_HPP_NAMESPACE using Type = GeneratedCommandsMemoryRequirementsInfoNV; }; + struct GeneratedCommandsPipelineInfoEXT + { + using NativeType = VkGeneratedCommandsPipelineInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGeneratedCommandsPipelineInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR GeneratedCommandsPipelineInfoEXT( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pipeline{ pipeline_ } + { + } + + VULKAN_HPP_CONSTEXPR GeneratedCommandsPipelineInfoEXT( GeneratedCommandsPipelineInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GeneratedCommandsPipelineInfoEXT( VkGeneratedCommandsPipelineInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : GeneratedCommandsPipelineInfoEXT( *reinterpret_cast<GeneratedCommandsPipelineInfoEXT const *>( &rhs ) ) + { + } + + GeneratedCommandsPipelineInfoEXT & operator=( GeneratedCommandsPipelineInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + GeneratedCommandsPipelineInfoEXT & operator=( VkGeneratedCommandsPipelineInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GeneratedCommandsPipelineInfoEXT const *>( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsPipelineInfoEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsPipelineInfoEXT & setPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ ) VULKAN_HPP_NOEXCEPT + { + pipeline = pipeline_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkGeneratedCommandsPipelineInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<const VkGeneratedCommandsPipelineInfoEXT *>( this ); + } + + operator VkGeneratedCommandsPipelineInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<VkGeneratedCommandsPipelineInfoEXT *>( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Pipeline const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pipeline ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( GeneratedCommandsPipelineInfoEXT const & ) const = default; +#else + bool operator==( GeneratedCommandsPipelineInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipeline == rhs.pipeline ); +# endif + } + + bool operator!=( GeneratedCommandsPipelineInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGeneratedCommandsPipelineInfoEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Pipeline pipeline = {}; + }; + + template <> + struct CppType<StructureType, StructureType::eGeneratedCommandsPipelineInfoEXT> + { + using Type = GeneratedCommandsPipelineInfoEXT; + }; + + struct GeneratedCommandsShaderInfoEXT + { + using NativeType = VkGeneratedCommandsShaderInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGeneratedCommandsShaderInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR GeneratedCommandsShaderInfoEXT( uint32_t shaderCount_ = {}, + const VULKAN_HPP_NAMESPACE::ShaderEXT * pShaders_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderCount{ shaderCount_ } + , pShaders{ pShaders_ } + { + } + + VULKAN_HPP_CONSTEXPR GeneratedCommandsShaderInfoEXT( GeneratedCommandsShaderInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GeneratedCommandsShaderInfoEXT( VkGeneratedCommandsShaderInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : GeneratedCommandsShaderInfoEXT( *reinterpret_cast<GeneratedCommandsShaderInfoEXT const *>( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + GeneratedCommandsShaderInfoEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ShaderEXT> const & shaders_, + void * pNext_ = nullptr ) + : pNext( pNext_ ), shaderCount( static_cast<uint32_t>( shaders_.size() ) ), pShaders( shaders_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + GeneratedCommandsShaderInfoEXT & operator=( GeneratedCommandsShaderInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + GeneratedCommandsShaderInfoEXT & operator=( VkGeneratedCommandsShaderInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GeneratedCommandsShaderInfoEXT const *>( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsShaderInfoEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsShaderInfoEXT & setShaderCount( uint32_t shaderCount_ ) VULKAN_HPP_NOEXCEPT + { + shaderCount = shaderCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsShaderInfoEXT & setPShaders( const VULKAN_HPP_NAMESPACE::ShaderEXT * pShaders_ ) VULKAN_HPP_NOEXCEPT + { + pShaders = pShaders_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + GeneratedCommandsShaderInfoEXT & + setShaders( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ShaderEXT> const & shaders_ ) VULKAN_HPP_NOEXCEPT + { + shaderCount = static_cast<uint32_t>( shaders_.size() ); + pShaders = shaders_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkGeneratedCommandsShaderInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<const VkGeneratedCommandsShaderInfoEXT *>( this ); + } + + operator VkGeneratedCommandsShaderInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<VkGeneratedCommandsShaderInfoEXT *>( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::ShaderEXT * const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderCount, pShaders ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( GeneratedCommandsShaderInfoEXT const & ) const = default; +#else + bool operator==( GeneratedCommandsShaderInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderCount == rhs.shaderCount ) && ( pShaders == rhs.pShaders ); +# endif + } + + bool operator!=( GeneratedCommandsShaderInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGeneratedCommandsShaderInfoEXT; + void * pNext = {}; + uint32_t shaderCount = {}; + const VULKAN_HPP_NAMESPACE::ShaderEXT * pShaders = {}; + }; + + template <> + struct CppType<StructureType, StructureType::eGeneratedCommandsShaderInfoEXT> + { + using Type = GeneratedCommandsShaderInfoEXT; + }; + struct LatencyTimingsFrameReportNV { using NativeType = VkLatencyTimingsFrameReportNV; @@ -48702,6 +49631,786 @@ namespace VULKAN_HPP_NAMESPACE }; #endif /*VK_USE_PLATFORM_FUCHSIA*/ + struct IndirectCommandsExecutionSetTokenEXT + { + using NativeType = VkIndirectCommandsExecutionSetTokenEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR IndirectCommandsExecutionSetTokenEXT( + VULKAN_HPP_NAMESPACE::IndirectExecutionSetInfoTypeEXT type_ = VULKAN_HPP_NAMESPACE::IndirectExecutionSetInfoTypeEXT::ePipelines, + VULKAN_HPP_NAMESPACE::ShaderStageFlags shaderStages_ = {} ) VULKAN_HPP_NOEXCEPT + : type{ type_ } + , shaderStages{ shaderStages_ } + { + } + + VULKAN_HPP_CONSTEXPR IndirectCommandsExecutionSetTokenEXT( IndirectCommandsExecutionSetTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IndirectCommandsExecutionSetTokenEXT( VkIndirectCommandsExecutionSetTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : IndirectCommandsExecutionSetTokenEXT( *reinterpret_cast<IndirectCommandsExecutionSetTokenEXT const *>( &rhs ) ) + { + } + + IndirectCommandsExecutionSetTokenEXT & operator=( IndirectCommandsExecutionSetTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + IndirectCommandsExecutionSetTokenEXT & operator=( VkIndirectCommandsExecutionSetTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::IndirectCommandsExecutionSetTokenEXT const *>( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsExecutionSetTokenEXT & setType( VULKAN_HPP_NAMESPACE::IndirectExecutionSetInfoTypeEXT type_ ) VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsExecutionSetTokenEXT & setShaderStages( VULKAN_HPP_NAMESPACE::ShaderStageFlags shaderStages_ ) VULKAN_HPP_NOEXCEPT + { + shaderStages = shaderStages_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkIndirectCommandsExecutionSetTokenEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<const VkIndirectCommandsExecutionSetTokenEXT *>( this ); + } + + operator VkIndirectCommandsExecutionSetTokenEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<VkIndirectCommandsExecutionSetTokenEXT *>( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple<VULKAN_HPP_NAMESPACE::IndirectExecutionSetInfoTypeEXT const &, VULKAN_HPP_NAMESPACE::ShaderStageFlags const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( type, shaderStages ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( IndirectCommandsExecutionSetTokenEXT const & ) const = default; +#else + bool operator==( IndirectCommandsExecutionSetTokenEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( type == rhs.type ) && ( shaderStages == rhs.shaderStages ); +# endif + } + + bool operator!=( IndirectCommandsExecutionSetTokenEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::IndirectExecutionSetInfoTypeEXT type = VULKAN_HPP_NAMESPACE::IndirectExecutionSetInfoTypeEXT::ePipelines; + VULKAN_HPP_NAMESPACE::ShaderStageFlags shaderStages = {}; + }; + + struct IndirectCommandsIndexBufferTokenEXT + { + using NativeType = VkIndirectCommandsIndexBufferTokenEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + IndirectCommandsIndexBufferTokenEXT( VULKAN_HPP_NAMESPACE::IndirectCommandsInputModeFlagBitsEXT mode_ = + VULKAN_HPP_NAMESPACE::IndirectCommandsInputModeFlagBitsEXT::eVulkanIndexBuffer ) VULKAN_HPP_NOEXCEPT + : mode{ mode_ } + { + } + + VULKAN_HPP_CONSTEXPR IndirectCommandsIndexBufferTokenEXT( IndirectCommandsIndexBufferTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IndirectCommandsIndexBufferTokenEXT( VkIndirectCommandsIndexBufferTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : IndirectCommandsIndexBufferTokenEXT( *reinterpret_cast<IndirectCommandsIndexBufferTokenEXT const *>( &rhs ) ) + { + } + + IndirectCommandsIndexBufferTokenEXT & operator=( IndirectCommandsIndexBufferTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + IndirectCommandsIndexBufferTokenEXT & operator=( VkIndirectCommandsIndexBufferTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::IndirectCommandsIndexBufferTokenEXT const *>( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsIndexBufferTokenEXT & + setMode( VULKAN_HPP_NAMESPACE::IndirectCommandsInputModeFlagBitsEXT mode_ ) VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkIndirectCommandsIndexBufferTokenEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<const VkIndirectCommandsIndexBufferTokenEXT *>( this ); + } + + operator VkIndirectCommandsIndexBufferTokenEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<VkIndirectCommandsIndexBufferTokenEXT *>( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple<VULKAN_HPP_NAMESPACE::IndirectCommandsInputModeFlagBitsEXT const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( mode ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( IndirectCommandsIndexBufferTokenEXT const & ) const = default; +#else + bool operator==( IndirectCommandsIndexBufferTokenEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( mode == rhs.mode ); +# endif + } + + bool operator!=( IndirectCommandsIndexBufferTokenEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::IndirectCommandsInputModeFlagBitsEXT mode = VULKAN_HPP_NAMESPACE::IndirectCommandsInputModeFlagBitsEXT::eVulkanIndexBuffer; + }; + + struct PushConstantRange + { + using NativeType = VkPushConstantRange; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PushConstantRange( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ = {}, uint32_t offset_ = {}, uint32_t size_ = {} ) VULKAN_HPP_NOEXCEPT + : stageFlags{ stageFlags_ } + , offset{ offset_ } + , size{ size_ } + { + } + + VULKAN_HPP_CONSTEXPR PushConstantRange( PushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PushConstantRange( VkPushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT : PushConstantRange( *reinterpret_cast<PushConstantRange const *>( &rhs ) ) {} + + PushConstantRange & operator=( PushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PushConstantRange & operator=( VkPushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PushConstantRange const *>( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PushConstantRange & setStageFlags( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ ) VULKAN_HPP_NOEXCEPT + { + stageFlags = stageFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PushConstantRange & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PushConstantRange & setSize( uint32_t size_ ) VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkPushConstantRange const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<const VkPushConstantRange *>( this ); + } + + operator VkPushConstantRange &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<VkPushConstantRange *>( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple<VULKAN_HPP_NAMESPACE::ShaderStageFlags const &, uint32_t const &, uint32_t const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( stageFlags, offset, size ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PushConstantRange const & ) const = default; +#else + bool operator==( PushConstantRange const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( stageFlags == rhs.stageFlags ) && ( offset == rhs.offset ) && ( size == rhs.size ); +# endif + } + + bool operator!=( PushConstantRange const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags = {}; + uint32_t offset = {}; + uint32_t size = {}; + }; + + struct IndirectCommandsPushConstantTokenEXT + { + using NativeType = VkIndirectCommandsPushConstantTokenEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR IndirectCommandsPushConstantTokenEXT( VULKAN_HPP_NAMESPACE::PushConstantRange updateRange_ = {} ) VULKAN_HPP_NOEXCEPT + : updateRange{ updateRange_ } + { + } + + VULKAN_HPP_CONSTEXPR IndirectCommandsPushConstantTokenEXT( IndirectCommandsPushConstantTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IndirectCommandsPushConstantTokenEXT( VkIndirectCommandsPushConstantTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : IndirectCommandsPushConstantTokenEXT( *reinterpret_cast<IndirectCommandsPushConstantTokenEXT const *>( &rhs ) ) + { + } + + IndirectCommandsPushConstantTokenEXT & operator=( IndirectCommandsPushConstantTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + IndirectCommandsPushConstantTokenEXT & operator=( VkIndirectCommandsPushConstantTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::IndirectCommandsPushConstantTokenEXT const *>( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsPushConstantTokenEXT & + setUpdateRange( VULKAN_HPP_NAMESPACE::PushConstantRange const & updateRange_ ) VULKAN_HPP_NOEXCEPT + { + updateRange = updateRange_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkIndirectCommandsPushConstantTokenEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<const VkIndirectCommandsPushConstantTokenEXT *>( this ); + } + + operator VkIndirectCommandsPushConstantTokenEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<VkIndirectCommandsPushConstantTokenEXT *>( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple<VULKAN_HPP_NAMESPACE::PushConstantRange const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( updateRange ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( IndirectCommandsPushConstantTokenEXT const & ) const = default; +#else + bool operator==( IndirectCommandsPushConstantTokenEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( updateRange == rhs.updateRange ); +# endif + } + + bool operator!=( IndirectCommandsPushConstantTokenEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::PushConstantRange updateRange = {}; + }; + + struct IndirectCommandsVertexBufferTokenEXT + { + using NativeType = VkIndirectCommandsVertexBufferTokenEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR IndirectCommandsVertexBufferTokenEXT( uint32_t vertexBindingUnit_ = {} ) VULKAN_HPP_NOEXCEPT : vertexBindingUnit{ vertexBindingUnit_ } + { + } + + VULKAN_HPP_CONSTEXPR IndirectCommandsVertexBufferTokenEXT( IndirectCommandsVertexBufferTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IndirectCommandsVertexBufferTokenEXT( VkIndirectCommandsVertexBufferTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : IndirectCommandsVertexBufferTokenEXT( *reinterpret_cast<IndirectCommandsVertexBufferTokenEXT const *>( &rhs ) ) + { + } + + IndirectCommandsVertexBufferTokenEXT & operator=( IndirectCommandsVertexBufferTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + IndirectCommandsVertexBufferTokenEXT & operator=( VkIndirectCommandsVertexBufferTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::IndirectCommandsVertexBufferTokenEXT const *>( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsVertexBufferTokenEXT & setVertexBindingUnit( uint32_t vertexBindingUnit_ ) VULKAN_HPP_NOEXCEPT + { + vertexBindingUnit = vertexBindingUnit_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkIndirectCommandsVertexBufferTokenEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<const VkIndirectCommandsVertexBufferTokenEXT *>( this ); + } + + operator VkIndirectCommandsVertexBufferTokenEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<VkIndirectCommandsVertexBufferTokenEXT *>( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple<uint32_t const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( vertexBindingUnit ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( IndirectCommandsVertexBufferTokenEXT const & ) const = default; +#else + bool operator==( IndirectCommandsVertexBufferTokenEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( vertexBindingUnit == rhs.vertexBindingUnit ); +# endif + } + + bool operator!=( IndirectCommandsVertexBufferTokenEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t vertexBindingUnit = {}; + }; + + union IndirectCommandsTokenDataEXT + { + using NativeType = VkIndirectCommandsTokenDataEXT; +#if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS ) + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsTokenDataEXT( const VULKAN_HPP_NAMESPACE::IndirectCommandsPushConstantTokenEXT * pPushConstant_ = {} ) + : pPushConstant( pPushConstant_ ) + { + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsTokenDataEXT( const VULKAN_HPP_NAMESPACE::IndirectCommandsVertexBufferTokenEXT * pVertexBuffer_ ) + : pVertexBuffer( pVertexBuffer_ ) + { + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsTokenDataEXT( const VULKAN_HPP_NAMESPACE::IndirectCommandsIndexBufferTokenEXT * pIndexBuffer_ ) + : pIndexBuffer( pIndexBuffer_ ) + { + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsTokenDataEXT( const VULKAN_HPP_NAMESPACE::IndirectCommandsExecutionSetTokenEXT * pExecutionSet_ ) + : pExecutionSet( pExecutionSet_ ) + { + } +#endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/ + +#if !defined( VULKAN_HPP_NO_UNION_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsTokenDataEXT & + setPPushConstant( const VULKAN_HPP_NAMESPACE::IndirectCommandsPushConstantTokenEXT * pPushConstant_ ) VULKAN_HPP_NOEXCEPT + { + pPushConstant = pPushConstant_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsTokenDataEXT & + setPVertexBuffer( const VULKAN_HPP_NAMESPACE::IndirectCommandsVertexBufferTokenEXT * pVertexBuffer_ ) VULKAN_HPP_NOEXCEPT + { + pVertexBuffer = pVertexBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsTokenDataEXT & + setPIndexBuffer( const VULKAN_HPP_NAMESPACE::IndirectCommandsIndexBufferTokenEXT * pIndexBuffer_ ) VULKAN_HPP_NOEXCEPT + { + pIndexBuffer = pIndexBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsTokenDataEXT & + setPExecutionSet( const VULKAN_HPP_NAMESPACE::IndirectCommandsExecutionSetTokenEXT * pExecutionSet_ ) VULKAN_HPP_NOEXCEPT + { + pExecutionSet = pExecutionSet_; + return *this; + } +#endif /*VULKAN_HPP_NO_UNION_SETTERS*/ + + operator VkIndirectCommandsTokenDataEXT const &() const + { + return *reinterpret_cast<const VkIndirectCommandsTokenDataEXT *>( this ); + } + + operator VkIndirectCommandsTokenDataEXT &() + { + return *reinterpret_cast<VkIndirectCommandsTokenDataEXT *>( this ); + } + +#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS + const VULKAN_HPP_NAMESPACE::IndirectCommandsPushConstantTokenEXT * pPushConstant; + const VULKAN_HPP_NAMESPACE::IndirectCommandsVertexBufferTokenEXT * pVertexBuffer; + const VULKAN_HPP_NAMESPACE::IndirectCommandsIndexBufferTokenEXT * pIndexBuffer; + const VULKAN_HPP_NAMESPACE::IndirectCommandsExecutionSetTokenEXT * pExecutionSet; +#else + const VkIndirectCommandsPushConstantTokenEXT * pPushConstant; + const VkIndirectCommandsVertexBufferTokenEXT * pVertexBuffer; + const VkIndirectCommandsIndexBufferTokenEXT * pIndexBuffer; + const VkIndirectCommandsExecutionSetTokenEXT * pExecutionSet; +#endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ + }; + + struct IndirectCommandsLayoutTokenEXT + { + using NativeType = VkIndirectCommandsLayoutTokenEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eIndirectCommandsLayoutTokenEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenEXT( + VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeEXT type_ = VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeEXT::eExecutionSet, + VULKAN_HPP_NAMESPACE::IndirectCommandsTokenDataEXT data_ = {}, + uint32_t offset_ = {}, + const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , type{ type_ } + , data{ data_ } + , offset{ offset_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenEXT( IndirectCommandsLayoutTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IndirectCommandsLayoutTokenEXT( VkIndirectCommandsLayoutTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : IndirectCommandsLayoutTokenEXT( *reinterpret_cast<IndirectCommandsLayoutTokenEXT const *>( &rhs ) ) + { + } + + IndirectCommandsLayoutTokenEXT & operator=( IndirectCommandsLayoutTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + IndirectCommandsLayoutTokenEXT & operator=( VkIndirectCommandsLayoutTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenEXT const *>( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenEXT & setType( VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeEXT type_ ) VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenEXT & setData( VULKAN_HPP_NAMESPACE::IndirectCommandsTokenDataEXT const & data_ ) VULKAN_HPP_NOEXCEPT + { + data = data_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenEXT & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkIndirectCommandsLayoutTokenEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<const VkIndirectCommandsLayoutTokenEXT *>( this ); + } + + operator VkIndirectCommandsLayoutTokenEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<VkIndirectCommandsLayoutTokenEXT *>( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, + const void * const &, + VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeEXT const &, + VULKAN_HPP_NAMESPACE::IndirectCommandsTokenDataEXT const &, + uint32_t const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, type, data, offset ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eIndirectCommandsLayoutTokenEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeEXT type = VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeEXT::eExecutionSet; + VULKAN_HPP_NAMESPACE::IndirectCommandsTokenDataEXT data = {}; + uint32_t offset = {}; + }; + + template <> + struct CppType<StructureType, StructureType::eIndirectCommandsLayoutTokenEXT> + { + using Type = IndirectCommandsLayoutTokenEXT; + }; + + struct IndirectCommandsLayoutCreateInfoEXT + { + using NativeType = VkIndirectCommandsLayoutCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eIndirectCommandsLayoutCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutCreateInfoEXT( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsEXT flags_ = {}, + VULKAN_HPP_NAMESPACE::ShaderStageFlags shaderStages_ = {}, + uint32_t indirectStride_ = {}, + VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout_ = {}, + uint32_t tokenCount_ = {}, + const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenEXT * pTokens_ = {}, + const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , shaderStages{ shaderStages_ } + , indirectStride{ indirectStride_ } + , pipelineLayout{ pipelineLayout_ } + , tokenCount{ tokenCount_ } + , pTokens{ pTokens_ } + { + } + + VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutCreateInfoEXT( IndirectCommandsLayoutCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IndirectCommandsLayoutCreateInfoEXT( VkIndirectCommandsLayoutCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : IndirectCommandsLayoutCreateInfoEXT( *reinterpret_cast<IndirectCommandsLayoutCreateInfoEXT const *>( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + IndirectCommandsLayoutCreateInfoEXT( + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsEXT flags_, + VULKAN_HPP_NAMESPACE::ShaderStageFlags shaderStages_, + uint32_t indirectStride_, + VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenEXT> const & tokens_, + const void * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , shaderStages( shaderStages_ ) + , indirectStride( indirectStride_ ) + , pipelineLayout( pipelineLayout_ ) + , tokenCount( static_cast<uint32_t>( tokens_.size() ) ) + , pTokens( tokens_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + IndirectCommandsLayoutCreateInfoEXT & operator=( IndirectCommandsLayoutCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + IndirectCommandsLayoutCreateInfoEXT & operator=( VkIndirectCommandsLayoutCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoEXT const *>( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoEXT & + setFlags( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoEXT & setShaderStages( VULKAN_HPP_NAMESPACE::ShaderStageFlags shaderStages_ ) VULKAN_HPP_NOEXCEPT + { + shaderStages = shaderStages_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoEXT & setIndirectStride( uint32_t indirectStride_ ) VULKAN_HPP_NOEXCEPT + { + indirectStride = indirectStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoEXT & setPipelineLayout( VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout_ ) VULKAN_HPP_NOEXCEPT + { + pipelineLayout = pipelineLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoEXT & setTokenCount( uint32_t tokenCount_ ) VULKAN_HPP_NOEXCEPT + { + tokenCount = tokenCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoEXT & + setPTokens( const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenEXT * pTokens_ ) VULKAN_HPP_NOEXCEPT + { + pTokens = pTokens_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + IndirectCommandsLayoutCreateInfoEXT & + setTokens( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenEXT> const & tokens_ ) VULKAN_HPP_NOEXCEPT + { + tokenCount = static_cast<uint32_t>( tokens_.size() ); + pTokens = tokens_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkIndirectCommandsLayoutCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoEXT *>( this ); + } + + operator VkIndirectCommandsLayoutCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<VkIndirectCommandsLayoutCreateInfoEXT *>( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, + const void * const &, + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsEXT const &, + VULKAN_HPP_NAMESPACE::ShaderStageFlags const &, + uint32_t const &, + VULKAN_HPP_NAMESPACE::PipelineLayout const &, + uint32_t const &, + const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenEXT * const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, shaderStages, indirectStride, pipelineLayout, tokenCount, pTokens ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( IndirectCommandsLayoutCreateInfoEXT const & ) const = default; +#else + bool operator==( IndirectCommandsLayoutCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( shaderStages == rhs.shaderStages ) && + ( indirectStride == rhs.indirectStride ) && ( pipelineLayout == rhs.pipelineLayout ) && ( tokenCount == rhs.tokenCount ) && + ( pTokens == rhs.pTokens ); +# endif + } + + bool operator!=( IndirectCommandsLayoutCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eIndirectCommandsLayoutCreateInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsEXT flags = {}; + VULKAN_HPP_NAMESPACE::ShaderStageFlags shaderStages = {}; + uint32_t indirectStride = {}; + VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout = {}; + uint32_t tokenCount = {}; + const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenEXT * pTokens = {}; + }; + + template <> + struct CppType<StructureType, StructureType::eIndirectCommandsLayoutCreateInfoEXT> + { + using Type = IndirectCommandsLayoutCreateInfoEXT; + }; + struct IndirectCommandsLayoutTokenNV { using NativeType = VkIndirectCommandsLayoutTokenNV; @@ -49196,6 +50905,593 @@ namespace VULKAN_HPP_NAMESPACE using Type = IndirectCommandsLayoutCreateInfoNV; }; + struct IndirectExecutionSetPipelineInfoEXT + { + using NativeType = VkIndirectExecutionSetPipelineInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eIndirectExecutionSetPipelineInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR IndirectExecutionSetPipelineInfoEXT( VULKAN_HPP_NAMESPACE::Pipeline initialPipeline_ = {}, + uint32_t maxPipelineCount_ = {}, + const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , initialPipeline{ initialPipeline_ } + , maxPipelineCount{ maxPipelineCount_ } + { + } + + VULKAN_HPP_CONSTEXPR IndirectExecutionSetPipelineInfoEXT( IndirectExecutionSetPipelineInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IndirectExecutionSetPipelineInfoEXT( VkIndirectExecutionSetPipelineInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : IndirectExecutionSetPipelineInfoEXT( *reinterpret_cast<IndirectExecutionSetPipelineInfoEXT const *>( &rhs ) ) + { + } + + IndirectExecutionSetPipelineInfoEXT & operator=( IndirectExecutionSetPipelineInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + IndirectExecutionSetPipelineInfoEXT & operator=( VkIndirectExecutionSetPipelineInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::IndirectExecutionSetPipelineInfoEXT const *>( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetPipelineInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetPipelineInfoEXT & setInitialPipeline( VULKAN_HPP_NAMESPACE::Pipeline initialPipeline_ ) VULKAN_HPP_NOEXCEPT + { + initialPipeline = initialPipeline_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetPipelineInfoEXT & setMaxPipelineCount( uint32_t maxPipelineCount_ ) VULKAN_HPP_NOEXCEPT + { + maxPipelineCount = maxPipelineCount_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkIndirectExecutionSetPipelineInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<const VkIndirectExecutionSetPipelineInfoEXT *>( this ); + } + + operator VkIndirectExecutionSetPipelineInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<VkIndirectExecutionSetPipelineInfoEXT *>( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Pipeline const &, uint32_t const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, initialPipeline, maxPipelineCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( IndirectExecutionSetPipelineInfoEXT const & ) const = default; +#else + bool operator==( IndirectExecutionSetPipelineInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( initialPipeline == rhs.initialPipeline ) && ( maxPipelineCount == rhs.maxPipelineCount ); +# endif + } + + bool operator!=( IndirectExecutionSetPipelineInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eIndirectExecutionSetPipelineInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::Pipeline initialPipeline = {}; + uint32_t maxPipelineCount = {}; + }; + + template <> + struct CppType<StructureType, StructureType::eIndirectExecutionSetPipelineInfoEXT> + { + using Type = IndirectExecutionSetPipelineInfoEXT; + }; + + struct IndirectExecutionSetShaderLayoutInfoEXT + { + using NativeType = VkIndirectExecutionSetShaderLayoutInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eIndirectExecutionSetShaderLayoutInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR IndirectExecutionSetShaderLayoutInfoEXT( uint32_t setLayoutCount_ = {}, + const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts_ = {}, + const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , setLayoutCount{ setLayoutCount_ } + , pSetLayouts{ pSetLayouts_ } + { + } + + VULKAN_HPP_CONSTEXPR IndirectExecutionSetShaderLayoutInfoEXT( IndirectExecutionSetShaderLayoutInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IndirectExecutionSetShaderLayoutInfoEXT( VkIndirectExecutionSetShaderLayoutInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : IndirectExecutionSetShaderLayoutInfoEXT( *reinterpret_cast<IndirectExecutionSetShaderLayoutInfoEXT const *>( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + IndirectExecutionSetShaderLayoutInfoEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayout> const & setLayouts_, + const void * pNext_ = nullptr ) + : pNext( pNext_ ), setLayoutCount( static_cast<uint32_t>( setLayouts_.size() ) ), pSetLayouts( setLayouts_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + IndirectExecutionSetShaderLayoutInfoEXT & operator=( IndirectExecutionSetShaderLayoutInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + IndirectExecutionSetShaderLayoutInfoEXT & operator=( VkIndirectExecutionSetShaderLayoutInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::IndirectExecutionSetShaderLayoutInfoEXT const *>( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetShaderLayoutInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetShaderLayoutInfoEXT & setSetLayoutCount( uint32_t setLayoutCount_ ) VULKAN_HPP_NOEXCEPT + { + setLayoutCount = setLayoutCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetShaderLayoutInfoEXT & + setPSetLayouts( const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts_ ) VULKAN_HPP_NOEXCEPT + { + pSetLayouts = pSetLayouts_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + IndirectExecutionSetShaderLayoutInfoEXT & + setSetLayouts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayout> const & setLayouts_ ) VULKAN_HPP_NOEXCEPT + { + setLayoutCount = static_cast<uint32_t>( setLayouts_.size() ); + pSetLayouts = setLayouts_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkIndirectExecutionSetShaderLayoutInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<const VkIndirectExecutionSetShaderLayoutInfoEXT *>( this ); + } + + operator VkIndirectExecutionSetShaderLayoutInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<VkIndirectExecutionSetShaderLayoutInfoEXT *>( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, setLayoutCount, pSetLayouts ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( IndirectExecutionSetShaderLayoutInfoEXT const & ) const = default; +#else + bool operator==( IndirectExecutionSetShaderLayoutInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( setLayoutCount == rhs.setLayoutCount ) && ( pSetLayouts == rhs.pSetLayouts ); +# endif + } + + bool operator!=( IndirectExecutionSetShaderLayoutInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eIndirectExecutionSetShaderLayoutInfoEXT; + const void * pNext = {}; + uint32_t setLayoutCount = {}; + const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts = {}; + }; + + template <> + struct CppType<StructureType, StructureType::eIndirectExecutionSetShaderLayoutInfoEXT> + { + using Type = IndirectExecutionSetShaderLayoutInfoEXT; + }; + + struct IndirectExecutionSetShaderInfoEXT + { + using NativeType = VkIndirectExecutionSetShaderInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eIndirectExecutionSetShaderInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR IndirectExecutionSetShaderInfoEXT( uint32_t shaderCount_ = {}, + const VULKAN_HPP_NAMESPACE::ShaderEXT * pInitialShaders_ = {}, + const VULKAN_HPP_NAMESPACE::IndirectExecutionSetShaderLayoutInfoEXT * pSetLayoutInfos_ = {}, + uint32_t maxShaderCount_ = {}, + uint32_t pushConstantRangeCount_ = {}, + const VULKAN_HPP_NAMESPACE::PushConstantRange * pPushConstantRanges_ = {}, + const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderCount{ shaderCount_ } + , pInitialShaders{ pInitialShaders_ } + , pSetLayoutInfos{ pSetLayoutInfos_ } + , maxShaderCount{ maxShaderCount_ } + , pushConstantRangeCount{ pushConstantRangeCount_ } + , pPushConstantRanges{ pPushConstantRanges_ } + { + } + + VULKAN_HPP_CONSTEXPR IndirectExecutionSetShaderInfoEXT( IndirectExecutionSetShaderInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IndirectExecutionSetShaderInfoEXT( VkIndirectExecutionSetShaderInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : IndirectExecutionSetShaderInfoEXT( *reinterpret_cast<IndirectExecutionSetShaderInfoEXT const *>( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + IndirectExecutionSetShaderInfoEXT( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ShaderEXT> const & initialShaders_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::IndirectExecutionSetShaderLayoutInfoEXT> const & setLayoutInfos_ = {}, + uint32_t maxShaderCount_ = {}, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PushConstantRange> const & pushConstantRanges_ = {}, + const void * pNext_ = nullptr ) + : pNext( pNext_ ) + , shaderCount( static_cast<uint32_t>( initialShaders_.size() ) ) + , pInitialShaders( initialShaders_.data() ) + , pSetLayoutInfos( setLayoutInfos_.data() ) + , maxShaderCount( maxShaderCount_ ) + , pushConstantRangeCount( static_cast<uint32_t>( pushConstantRanges_.size() ) ) + , pPushConstantRanges( pushConstantRanges_.data() ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( setLayoutInfos_.empty() || ( initialShaders_.size() == setLayoutInfos_.size() ) ); +# else + if ( !setLayoutInfos_.empty() && ( initialShaders_.size() != setLayoutInfos_.size() ) ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::IndirectExecutionSetShaderInfoEXT::IndirectExecutionSetShaderInfoEXT: !setLayoutInfos_.empty() && ( initialShaders_.size() != setLayoutInfos_.size() )" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + IndirectExecutionSetShaderInfoEXT & operator=( IndirectExecutionSetShaderInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + IndirectExecutionSetShaderInfoEXT & operator=( VkIndirectExecutionSetShaderInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::IndirectExecutionSetShaderInfoEXT const *>( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetShaderInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetShaderInfoEXT & setShaderCount( uint32_t shaderCount_ ) VULKAN_HPP_NOEXCEPT + { + shaderCount = shaderCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetShaderInfoEXT & + setPInitialShaders( const VULKAN_HPP_NAMESPACE::ShaderEXT * pInitialShaders_ ) VULKAN_HPP_NOEXCEPT + { + pInitialShaders = pInitialShaders_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + IndirectExecutionSetShaderInfoEXT & + setInitialShaders( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ShaderEXT> const & initialShaders_ ) VULKAN_HPP_NOEXCEPT + { + shaderCount = static_cast<uint32_t>( initialShaders_.size() ); + pInitialShaders = initialShaders_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetShaderInfoEXT & + setPSetLayoutInfos( const VULKAN_HPP_NAMESPACE::IndirectExecutionSetShaderLayoutInfoEXT * pSetLayoutInfos_ ) VULKAN_HPP_NOEXCEPT + { + pSetLayoutInfos = pSetLayoutInfos_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + IndirectExecutionSetShaderInfoEXT & setSetLayoutInfos( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::IndirectExecutionSetShaderLayoutInfoEXT> const & setLayoutInfos_ ) + VULKAN_HPP_NOEXCEPT + { + shaderCount = static_cast<uint32_t>( setLayoutInfos_.size() ); + pSetLayoutInfos = setLayoutInfos_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetShaderInfoEXT & setMaxShaderCount( uint32_t maxShaderCount_ ) VULKAN_HPP_NOEXCEPT + { + maxShaderCount = maxShaderCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetShaderInfoEXT & setPushConstantRangeCount( uint32_t pushConstantRangeCount_ ) VULKAN_HPP_NOEXCEPT + { + pushConstantRangeCount = pushConstantRangeCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetShaderInfoEXT & + setPPushConstantRanges( const VULKAN_HPP_NAMESPACE::PushConstantRange * pPushConstantRanges_ ) VULKAN_HPP_NOEXCEPT + { + pPushConstantRanges = pPushConstantRanges_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + IndirectExecutionSetShaderInfoEXT & setPushConstantRanges( + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PushConstantRange> const & pushConstantRanges_ ) VULKAN_HPP_NOEXCEPT + { + pushConstantRangeCount = static_cast<uint32_t>( pushConstantRanges_.size() ); + pPushConstantRanges = pushConstantRanges_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkIndirectExecutionSetShaderInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<const VkIndirectExecutionSetShaderInfoEXT *>( this ); + } + + operator VkIndirectExecutionSetShaderInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<VkIndirectExecutionSetShaderInfoEXT *>( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, + const void * const &, + uint32_t const &, + const VULKAN_HPP_NAMESPACE::ShaderEXT * const &, + const VULKAN_HPP_NAMESPACE::IndirectExecutionSetShaderLayoutInfoEXT * const &, + uint32_t const &, + uint32_t const &, + const VULKAN_HPP_NAMESPACE::PushConstantRange * const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderCount, pInitialShaders, pSetLayoutInfos, maxShaderCount, pushConstantRangeCount, pPushConstantRanges ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( IndirectExecutionSetShaderInfoEXT const & ) const = default; +#else + bool operator==( IndirectExecutionSetShaderInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderCount == rhs.shaderCount ) && ( pInitialShaders == rhs.pInitialShaders ) && + ( pSetLayoutInfos == rhs.pSetLayoutInfos ) && ( maxShaderCount == rhs.maxShaderCount ) && + ( pushConstantRangeCount == rhs.pushConstantRangeCount ) && ( pPushConstantRanges == rhs.pPushConstantRanges ); +# endif + } + + bool operator!=( IndirectExecutionSetShaderInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eIndirectExecutionSetShaderInfoEXT; + const void * pNext = {}; + uint32_t shaderCount = {}; + const VULKAN_HPP_NAMESPACE::ShaderEXT * pInitialShaders = {}; + const VULKAN_HPP_NAMESPACE::IndirectExecutionSetShaderLayoutInfoEXT * pSetLayoutInfos = {}; + uint32_t maxShaderCount = {}; + uint32_t pushConstantRangeCount = {}; + const VULKAN_HPP_NAMESPACE::PushConstantRange * pPushConstantRanges = {}; + }; + + template <> + struct CppType<StructureType, StructureType::eIndirectExecutionSetShaderInfoEXT> + { + using Type = IndirectExecutionSetShaderInfoEXT; + }; + + union IndirectExecutionSetInfoEXT + { + using NativeType = VkIndirectExecutionSetInfoEXT; +#if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS ) + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetInfoEXT( const VULKAN_HPP_NAMESPACE::IndirectExecutionSetPipelineInfoEXT * pPipelineInfo_ = {} ) + : pPipelineInfo( pPipelineInfo_ ) + { + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetInfoEXT( const VULKAN_HPP_NAMESPACE::IndirectExecutionSetShaderInfoEXT * pShaderInfo_ ) + : pShaderInfo( pShaderInfo_ ) + { + } +#endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/ + +#if !defined( VULKAN_HPP_NO_UNION_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetInfoEXT & + setPPipelineInfo( const VULKAN_HPP_NAMESPACE::IndirectExecutionSetPipelineInfoEXT * pPipelineInfo_ ) VULKAN_HPP_NOEXCEPT + { + pPipelineInfo = pPipelineInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetInfoEXT & + setPShaderInfo( const VULKAN_HPP_NAMESPACE::IndirectExecutionSetShaderInfoEXT * pShaderInfo_ ) VULKAN_HPP_NOEXCEPT + { + pShaderInfo = pShaderInfo_; + return *this; + } +#endif /*VULKAN_HPP_NO_UNION_SETTERS*/ + + operator VkIndirectExecutionSetInfoEXT const &() const + { + return *reinterpret_cast<const VkIndirectExecutionSetInfoEXT *>( this ); + } + + operator VkIndirectExecutionSetInfoEXT &() + { + return *reinterpret_cast<VkIndirectExecutionSetInfoEXT *>( this ); + } + +#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS + const VULKAN_HPP_NAMESPACE::IndirectExecutionSetPipelineInfoEXT * pPipelineInfo; + const VULKAN_HPP_NAMESPACE::IndirectExecutionSetShaderInfoEXT * pShaderInfo; +#else + const VkIndirectExecutionSetPipelineInfoEXT * pPipelineInfo; + const VkIndirectExecutionSetShaderInfoEXT * pShaderInfo; +#endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ + }; + + struct IndirectExecutionSetCreateInfoEXT + { + using NativeType = VkIndirectExecutionSetCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eIndirectExecutionSetCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetCreateInfoEXT( + VULKAN_HPP_NAMESPACE::IndirectExecutionSetInfoTypeEXT type_ = VULKAN_HPP_NAMESPACE::IndirectExecutionSetInfoTypeEXT::ePipelines, + VULKAN_HPP_NAMESPACE::IndirectExecutionSetInfoEXT info_ = {}, + const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , type{ type_ } + , info{ info_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetCreateInfoEXT( IndirectExecutionSetCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IndirectExecutionSetCreateInfoEXT( VkIndirectExecutionSetCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : IndirectExecutionSetCreateInfoEXT( *reinterpret_cast<IndirectExecutionSetCreateInfoEXT const *>( &rhs ) ) + { + } + + IndirectExecutionSetCreateInfoEXT & operator=( IndirectExecutionSetCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + IndirectExecutionSetCreateInfoEXT & operator=( VkIndirectExecutionSetCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::IndirectExecutionSetCreateInfoEXT const *>( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetCreateInfoEXT & setType( VULKAN_HPP_NAMESPACE::IndirectExecutionSetInfoTypeEXT type_ ) VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetCreateInfoEXT & setInfo( VULKAN_HPP_NAMESPACE::IndirectExecutionSetInfoEXT const & info_ ) VULKAN_HPP_NOEXCEPT + { + info = info_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkIndirectExecutionSetCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<const VkIndirectExecutionSetCreateInfoEXT *>( this ); + } + + operator VkIndirectExecutionSetCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<VkIndirectExecutionSetCreateInfoEXT *>( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, + const void * const &, + VULKAN_HPP_NAMESPACE::IndirectExecutionSetInfoTypeEXT const &, + VULKAN_HPP_NAMESPACE::IndirectExecutionSetInfoEXT const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, type, info ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eIndirectExecutionSetCreateInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::IndirectExecutionSetInfoTypeEXT type = VULKAN_HPP_NAMESPACE::IndirectExecutionSetInfoTypeEXT::ePipelines; + VULKAN_HPP_NAMESPACE::IndirectExecutionSetInfoEXT info = {}; + }; + + template <> + struct CppType<StructureType, StructureType::eIndirectExecutionSetCreateInfoEXT> + { + using Type = IndirectExecutionSetCreateInfoEXT; + }; + struct InitializePerformanceApiInfoINTEL { using NativeType = VkInitializePerformanceApiInfoINTEL; @@ -49265,7 +51561,7 @@ namespace VULKAN_HPP_NAMESPACE #if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) auto operator<=>( InitializePerformanceApiInfoINTEL const & ) const = default; #else - bool operator==( InitializePerformanceApiInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + bool operator==( InitializePerformanceApiInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT { # if defined( VULKAN_HPP_USE_REFLECT ) return this->reflect() == rhs.reflect(); @@ -60876,6 +63172,104 @@ namespace VULKAN_HPP_NAMESPACE using Type = PhysicalDeviceDepthBiasControlFeaturesEXT; }; + struct PhysicalDeviceDepthClampControlFeaturesEXT + { + using NativeType = VkPhysicalDeviceDepthClampControlFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDepthClampControlFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClampControlFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 depthClampControl_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , depthClampControl{ depthClampControl_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClampControlFeaturesEXT( PhysicalDeviceDepthClampControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDepthClampControlFeaturesEXT( VkPhysicalDeviceDepthClampControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDepthClampControlFeaturesEXT( *reinterpret_cast<PhysicalDeviceDepthClampControlFeaturesEXT const *>( &rhs ) ) + { + } + + PhysicalDeviceDepthClampControlFeaturesEXT & operator=( PhysicalDeviceDepthClampControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceDepthClampControlFeaturesEXT & operator=( VkPhysicalDeviceDepthClampControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampControlFeaturesEXT const *>( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClampControlFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClampControlFeaturesEXT & + setDepthClampControl( VULKAN_HPP_NAMESPACE::Bool32 depthClampControl_ ) VULKAN_HPP_NOEXCEPT + { + depthClampControl = depthClampControl_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkPhysicalDeviceDepthClampControlFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<const VkPhysicalDeviceDepthClampControlFeaturesEXT *>( this ); + } + + operator VkPhysicalDeviceDepthClampControlFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<VkPhysicalDeviceDepthClampControlFeaturesEXT *>( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, depthClampControl ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDepthClampControlFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceDepthClampControlFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( depthClampControl == rhs.depthClampControl ); +# endif + } + + bool operator!=( PhysicalDeviceDepthClampControlFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDepthClampControlFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 depthClampControl = {}; + }; + + template <> + struct CppType<StructureType, StructureType::ePhysicalDeviceDepthClampControlFeaturesEXT> + { + using Type = PhysicalDeviceDepthClampControlFeaturesEXT; + }; + struct PhysicalDeviceDepthClampZeroOneFeaturesEXT { using NativeType = VkPhysicalDeviceDepthClampZeroOneFeaturesEXT; @@ -62668,6 +65062,116 @@ namespace VULKAN_HPP_NAMESPACE using Type = PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV; }; + struct PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT + { + using NativeType = VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDeviceGeneratedCommandsFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT( VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedCommands_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 dynamicGeneratedPipelineLayout_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , deviceGeneratedCommands{ deviceGeneratedCommands_ } + , dynamicGeneratedPipelineLayout{ dynamicGeneratedPipelineLayout_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT( PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT( VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT( *reinterpret_cast<PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT const *>( &rhs ) ) + { + } + + PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT & operator=( PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT & operator=( VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT const *>( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT & + setDeviceGeneratedCommands( VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedCommands_ ) VULKAN_HPP_NOEXCEPT + { + deviceGeneratedCommands = deviceGeneratedCommands_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT & + setDynamicGeneratedPipelineLayout( VULKAN_HPP_NAMESPACE::Bool32 dynamicGeneratedPipelineLayout_ ) VULKAN_HPP_NOEXCEPT + { + dynamicGeneratedPipelineLayout = dynamicGeneratedPipelineLayout_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT *>( this ); + } + + operator VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT *>( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, deviceGeneratedCommands, dynamicGeneratedPipelineLayout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceGeneratedCommands == rhs.deviceGeneratedCommands ) && + ( dynamicGeneratedPipelineLayout == rhs.dynamicGeneratedPipelineLayout ); +# endif + } + + bool operator!=( PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDeviceGeneratedCommandsFeaturesEXT; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedCommands = {}; + VULKAN_HPP_NAMESPACE::Bool32 dynamicGeneratedPipelineLayout = {}; + }; + + template <> + struct CppType<StructureType, StructureType::ePhysicalDeviceDeviceGeneratedCommandsFeaturesEXT> + { + using Type = PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT; + }; + struct PhysicalDeviceDeviceGeneratedCommandsFeaturesNV { using NativeType = VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV; @@ -62767,6 +65271,161 @@ namespace VULKAN_HPP_NAMESPACE using Type = PhysicalDeviceDeviceGeneratedCommandsFeaturesNV; }; + struct PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT + { + using NativeType = VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDeviceGeneratedCommandsPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT( uint32_t maxIndirectPipelineCount_ = {}, + uint32_t maxIndirectShaderObjectCount_ = {}, + uint32_t maxIndirectSequenceCount_ = {}, + uint32_t maxIndirectCommandsTokenCount_ = {}, + uint32_t maxIndirectCommandsTokenOffset_ = {}, + uint32_t maxIndirectCommandsIndirectStride_ = {}, + VULKAN_HPP_NAMESPACE::IndirectCommandsInputModeFlagsEXT supportedIndirectCommandsInputModes_ = {}, + VULKAN_HPP_NAMESPACE::ShaderStageFlags supportedIndirectCommandsShaderStages_ = {}, + VULKAN_HPP_NAMESPACE::ShaderStageFlags supportedIndirectCommandsShaderStagesPipelineBinding_ = {}, + VULKAN_HPP_NAMESPACE::ShaderStageFlags supportedIndirectCommandsShaderStagesShaderBinding_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedCommandsTransformFeedback_ = {}, + VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedCommandsMultiDrawIndirectCount_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxIndirectPipelineCount{ maxIndirectPipelineCount_ } + , maxIndirectShaderObjectCount{ maxIndirectShaderObjectCount_ } + , maxIndirectSequenceCount{ maxIndirectSequenceCount_ } + , maxIndirectCommandsTokenCount{ maxIndirectCommandsTokenCount_ } + , maxIndirectCommandsTokenOffset{ maxIndirectCommandsTokenOffset_ } + , maxIndirectCommandsIndirectStride{ maxIndirectCommandsIndirectStride_ } + , supportedIndirectCommandsInputModes{ supportedIndirectCommandsInputModes_ } + , supportedIndirectCommandsShaderStages{ supportedIndirectCommandsShaderStages_ } + , supportedIndirectCommandsShaderStagesPipelineBinding{ supportedIndirectCommandsShaderStagesPipelineBinding_ } + , supportedIndirectCommandsShaderStagesShaderBinding{ supportedIndirectCommandsShaderStagesShaderBinding_ } + , deviceGeneratedCommandsTransformFeedback{ deviceGeneratedCommandsTransformFeedback_ } + , deviceGeneratedCommandsMultiDrawIndirectCount{ deviceGeneratedCommandsMultiDrawIndirectCount_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT( PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT( VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT( *reinterpret_cast<PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT const *>( &rhs ) ) + { + } + + PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT & + operator=( PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT & operator=( VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT const *>( &rhs ); + return *this; + } + + operator VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<const VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT *>( this ); + } + + operator VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT *>( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, + void * const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + VULKAN_HPP_NAMESPACE::IndirectCommandsInputModeFlagsEXT const &, + VULKAN_HPP_NAMESPACE::ShaderStageFlags const &, + VULKAN_HPP_NAMESPACE::ShaderStageFlags const &, + VULKAN_HPP_NAMESPACE::ShaderStageFlags const &, + VULKAN_HPP_NAMESPACE::Bool32 const &, + VULKAN_HPP_NAMESPACE::Bool32 const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + maxIndirectPipelineCount, + maxIndirectShaderObjectCount, + maxIndirectSequenceCount, + maxIndirectCommandsTokenCount, + maxIndirectCommandsTokenOffset, + maxIndirectCommandsIndirectStride, + supportedIndirectCommandsInputModes, + supportedIndirectCommandsShaderStages, + supportedIndirectCommandsShaderStagesPipelineBinding, + supportedIndirectCommandsShaderStagesShaderBinding, + deviceGeneratedCommandsTransformFeedback, + deviceGeneratedCommandsMultiDrawIndirectCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxIndirectPipelineCount == rhs.maxIndirectPipelineCount ) && + ( maxIndirectShaderObjectCount == rhs.maxIndirectShaderObjectCount ) && ( maxIndirectSequenceCount == rhs.maxIndirectSequenceCount ) && + ( maxIndirectCommandsTokenCount == rhs.maxIndirectCommandsTokenCount ) && + ( maxIndirectCommandsTokenOffset == rhs.maxIndirectCommandsTokenOffset ) && + ( maxIndirectCommandsIndirectStride == rhs.maxIndirectCommandsIndirectStride ) && + ( supportedIndirectCommandsInputModes == rhs.supportedIndirectCommandsInputModes ) && + ( supportedIndirectCommandsShaderStages == rhs.supportedIndirectCommandsShaderStages ) && + ( supportedIndirectCommandsShaderStagesPipelineBinding == rhs.supportedIndirectCommandsShaderStagesPipelineBinding ) && + ( supportedIndirectCommandsShaderStagesShaderBinding == rhs.supportedIndirectCommandsShaderStagesShaderBinding ) && + ( deviceGeneratedCommandsTransformFeedback == rhs.deviceGeneratedCommandsTransformFeedback ) && + ( deviceGeneratedCommandsMultiDrawIndirectCount == rhs.deviceGeneratedCommandsMultiDrawIndirectCount ); +# endif + } + + bool operator!=( PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDeviceGeneratedCommandsPropertiesEXT; + void * pNext = {}; + uint32_t maxIndirectPipelineCount = {}; + uint32_t maxIndirectShaderObjectCount = {}; + uint32_t maxIndirectSequenceCount = {}; + uint32_t maxIndirectCommandsTokenCount = {}; + uint32_t maxIndirectCommandsTokenOffset = {}; + uint32_t maxIndirectCommandsIndirectStride = {}; + VULKAN_HPP_NAMESPACE::IndirectCommandsInputModeFlagsEXT supportedIndirectCommandsInputModes = {}; + VULKAN_HPP_NAMESPACE::ShaderStageFlags supportedIndirectCommandsShaderStages = {}; + VULKAN_HPP_NAMESPACE::ShaderStageFlags supportedIndirectCommandsShaderStagesPipelineBinding = {}; + VULKAN_HPP_NAMESPACE::ShaderStageFlags supportedIndirectCommandsShaderStagesShaderBinding = {}; + VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedCommandsTransformFeedback = {}; + VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedCommandsMultiDrawIndirectCount = {}; + }; + + template <> + struct CppType<StructureType, StructureType::ePhysicalDeviceDeviceGeneratedCommandsPropertiesEXT> + { + using Type = PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT; + }; + struct PhysicalDeviceDeviceGeneratedCommandsPropertiesNV { using NativeType = VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV; @@ -96561,98 +99220,6 @@ namespace VULKAN_HPP_NAMESPACE using PipelineInfoEXT = PipelineInfoKHR; - struct PushConstantRange - { - using NativeType = VkPushConstantRange; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR - PushConstantRange( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ = {}, uint32_t offset_ = {}, uint32_t size_ = {} ) VULKAN_HPP_NOEXCEPT - : stageFlags{ stageFlags_ } - , offset{ offset_ } - , size{ size_ } - { - } - - VULKAN_HPP_CONSTEXPR PushConstantRange( PushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PushConstantRange( VkPushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT : PushConstantRange( *reinterpret_cast<PushConstantRange const *>( &rhs ) ) {} - - PushConstantRange & operator=( PushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT = default; -#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ - - PushConstantRange & operator=( VkPushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PushConstantRange const *>( &rhs ); - return *this; - } - -#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) - VULKAN_HPP_CONSTEXPR_14 PushConstantRange & setStageFlags( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ ) VULKAN_HPP_NOEXCEPT - { - stageFlags = stageFlags_; - return *this; - } - - VULKAN_HPP_CONSTEXPR_14 PushConstantRange & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT - { - offset = offset_; - return *this; - } - - VULKAN_HPP_CONSTEXPR_14 PushConstantRange & setSize( uint32_t size_ ) VULKAN_HPP_NOEXCEPT - { - size = size_; - return *this; - } -#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ - - operator VkPushConstantRange const &() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast<const VkPushConstantRange *>( this ); - } - - operator VkPushConstantRange &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast<VkPushConstantRange *>( this ); - } - -#if defined( VULKAN_HPP_USE_REFLECT ) -# if 14 <= VULKAN_HPP_CPP_VERSION - auto -# else - std::tuple<VULKAN_HPP_NAMESPACE::ShaderStageFlags const &, uint32_t const &, uint32_t const &> -# endif - reflect() const VULKAN_HPP_NOEXCEPT - { - return std::tie( stageFlags, offset, size ); - } -#endif - -#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) - auto operator<=>( PushConstantRange const & ) const = default; -#else - bool operator==( PushConstantRange const & rhs ) const VULKAN_HPP_NOEXCEPT - { -# if defined( VULKAN_HPP_USE_REFLECT ) - return this->reflect() == rhs.reflect(); -# else - return ( stageFlags == rhs.stageFlags ) && ( offset == rhs.offset ) && ( size == rhs.size ); -# endif - } - - bool operator!=( PushConstantRange const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - public: - VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags = {}; - uint32_t offset = {}; - uint32_t size = {}; - }; - struct PipelineLayoutCreateInfo { using NativeType = VkPipelineLayoutCreateInfo; @@ -98922,6 +101489,119 @@ namespace VULKAN_HPP_NAMESPACE using Type = PipelineViewportCoarseSampleOrderStateCreateInfoNV; }; + struct PipelineViewportDepthClampControlCreateInfoEXT + { + using NativeType = VkPipelineViewportDepthClampControlCreateInfoEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineViewportDepthClampControlCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineViewportDepthClampControlCreateInfoEXT( + VULKAN_HPP_NAMESPACE::DepthClampModeEXT depthClampMode_ = VULKAN_HPP_NAMESPACE::DepthClampModeEXT::eViewportRange, + const VULKAN_HPP_NAMESPACE::DepthClampRangeEXT * pDepthClampRange_ = {}, + const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , depthClampMode{ depthClampMode_ } + , pDepthClampRange{ pDepthClampRange_ } + { + } + + VULKAN_HPP_CONSTEXPR + PipelineViewportDepthClampControlCreateInfoEXT( PipelineViewportDepthClampControlCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineViewportDepthClampControlCreateInfoEXT( VkPipelineViewportDepthClampControlCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineViewportDepthClampControlCreateInfoEXT( *reinterpret_cast<PipelineViewportDepthClampControlCreateInfoEXT const *>( &rhs ) ) + { + } + + PipelineViewportDepthClampControlCreateInfoEXT & operator=( PipelineViewportDepthClampControlCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PipelineViewportDepthClampControlCreateInfoEXT & operator=( VkPipelineViewportDepthClampControlCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineViewportDepthClampControlCreateInfoEXT const *>( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineViewportDepthClampControlCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportDepthClampControlCreateInfoEXT & + setDepthClampMode( VULKAN_HPP_NAMESPACE::DepthClampModeEXT depthClampMode_ ) VULKAN_HPP_NOEXCEPT + { + depthClampMode = depthClampMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportDepthClampControlCreateInfoEXT & + setPDepthClampRange( const VULKAN_HPP_NAMESPACE::DepthClampRangeEXT * pDepthClampRange_ ) VULKAN_HPP_NOEXCEPT + { + pDepthClampRange = pDepthClampRange_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkPipelineViewportDepthClampControlCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<const VkPipelineViewportDepthClampControlCreateInfoEXT *>( this ); + } + + operator VkPipelineViewportDepthClampControlCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<VkPipelineViewportDepthClampControlCreateInfoEXT *>( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, + const void * const &, + VULKAN_HPP_NAMESPACE::DepthClampModeEXT const &, + const VULKAN_HPP_NAMESPACE::DepthClampRangeEXT * const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, depthClampMode, pDepthClampRange ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineViewportDepthClampControlCreateInfoEXT const & ) const = default; +#else + bool operator==( PipelineViewportDepthClampControlCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( depthClampMode == rhs.depthClampMode ) && ( pDepthClampRange == rhs.pDepthClampRange ); +# endif + } + + bool operator!=( PipelineViewportDepthClampControlCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportDepthClampControlCreateInfoEXT; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::DepthClampModeEXT depthClampMode = VULKAN_HPP_NAMESPACE::DepthClampModeEXT::eViewportRange; + const VULKAN_HPP_NAMESPACE::DepthClampRangeEXT * pDepthClampRange = {}; + }; + + template <> + struct CppType<StructureType, StructureType::ePipelineViewportDepthClampControlCreateInfoEXT> + { + using Type = PipelineViewportDepthClampControlCreateInfoEXT; + }; + struct PipelineViewportDepthClipControlCreateInfoEXT { using NativeType = VkPipelineViewportDepthClipControlCreateInfoEXT; @@ -128671,6 +131351,218 @@ namespace VULKAN_HPP_NAMESPACE using WriteDescriptorSetInlineUniformBlockEXT = WriteDescriptorSetInlineUniformBlock; + struct WriteIndirectExecutionSetPipelineEXT + { + using NativeType = VkWriteIndirectExecutionSetPipelineEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eWriteIndirectExecutionSetPipelineEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR WriteIndirectExecutionSetPipelineEXT( uint32_t index_ = {}, + VULKAN_HPP_NAMESPACE::Pipeline pipeline_ = {}, + const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , index{ index_ } + , pipeline{ pipeline_ } + { + } + + VULKAN_HPP_CONSTEXPR WriteIndirectExecutionSetPipelineEXT( WriteIndirectExecutionSetPipelineEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + WriteIndirectExecutionSetPipelineEXT( VkWriteIndirectExecutionSetPipelineEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : WriteIndirectExecutionSetPipelineEXT( *reinterpret_cast<WriteIndirectExecutionSetPipelineEXT const *>( &rhs ) ) + { + } + + WriteIndirectExecutionSetPipelineEXT & operator=( WriteIndirectExecutionSetPipelineEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + WriteIndirectExecutionSetPipelineEXT & operator=( VkWriteIndirectExecutionSetPipelineEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::WriteIndirectExecutionSetPipelineEXT const *>( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 WriteIndirectExecutionSetPipelineEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteIndirectExecutionSetPipelineEXT & setIndex( uint32_t index_ ) VULKAN_HPP_NOEXCEPT + { + index = index_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteIndirectExecutionSetPipelineEXT & setPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ ) VULKAN_HPP_NOEXCEPT + { + pipeline = pipeline_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkWriteIndirectExecutionSetPipelineEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<const VkWriteIndirectExecutionSetPipelineEXT *>( this ); + } + + operator VkWriteIndirectExecutionSetPipelineEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<VkWriteIndirectExecutionSetPipelineEXT *>( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, VULKAN_HPP_NAMESPACE::Pipeline const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, index, pipeline ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( WriteIndirectExecutionSetPipelineEXT const & ) const = default; +#else + bool operator==( WriteIndirectExecutionSetPipelineEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( index == rhs.index ) && ( pipeline == rhs.pipeline ); +# endif + } + + bool operator!=( WriteIndirectExecutionSetPipelineEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWriteIndirectExecutionSetPipelineEXT; + const void * pNext = {}; + uint32_t index = {}; + VULKAN_HPP_NAMESPACE::Pipeline pipeline = {}; + }; + + template <> + struct CppType<StructureType, StructureType::eWriteIndirectExecutionSetPipelineEXT> + { + using Type = WriteIndirectExecutionSetPipelineEXT; + }; + + struct WriteIndirectExecutionSetShaderEXT + { + using NativeType = VkWriteIndirectExecutionSetShaderEXT; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eWriteIndirectExecutionSetShaderEXT; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR WriteIndirectExecutionSetShaderEXT( uint32_t index_ = {}, + VULKAN_HPP_NAMESPACE::ShaderEXT shader_ = {}, + const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , index{ index_ } + , shader{ shader_ } + { + } + + VULKAN_HPP_CONSTEXPR WriteIndirectExecutionSetShaderEXT( WriteIndirectExecutionSetShaderEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + WriteIndirectExecutionSetShaderEXT( VkWriteIndirectExecutionSetShaderEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : WriteIndirectExecutionSetShaderEXT( *reinterpret_cast<WriteIndirectExecutionSetShaderEXT const *>( &rhs ) ) + { + } + + WriteIndirectExecutionSetShaderEXT & operator=( WriteIndirectExecutionSetShaderEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + WriteIndirectExecutionSetShaderEXT & operator=( VkWriteIndirectExecutionSetShaderEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::WriteIndirectExecutionSetShaderEXT const *>( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 WriteIndirectExecutionSetShaderEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteIndirectExecutionSetShaderEXT & setIndex( uint32_t index_ ) VULKAN_HPP_NOEXCEPT + { + index = index_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteIndirectExecutionSetShaderEXT & setShader( VULKAN_HPP_NAMESPACE::ShaderEXT shader_ ) VULKAN_HPP_NOEXCEPT + { + shader = shader_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkWriteIndirectExecutionSetShaderEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<const VkWriteIndirectExecutionSetShaderEXT *>( this ); + } + + operator VkWriteIndirectExecutionSetShaderEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<VkWriteIndirectExecutionSetShaderEXT *>( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, VULKAN_HPP_NAMESPACE::ShaderEXT const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, index, shader ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( WriteIndirectExecutionSetShaderEXT const & ) const = default; +#else + bool operator==( WriteIndirectExecutionSetShaderEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( index == rhs.index ) && ( shader == rhs.shader ); +# endif + } + + bool operator!=( WriteIndirectExecutionSetShaderEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWriteIndirectExecutionSetShaderEXT; + const void * pNext = {}; + uint32_t index = {}; + VULKAN_HPP_NAMESPACE::ShaderEXT shader = {}; + }; + + template <> + struct CppType<StructureType, StructureType::eWriteIndirectExecutionSetShaderEXT> + { + using Type = WriteIndirectExecutionSetShaderEXT; + }; + #if defined( VK_USE_PLATFORM_XCB_KHR ) struct XcbSurfaceCreateInfoKHR { diff --git a/include/vulkan/vulkan_to_string.hpp b/include/vulkan/vulkan_to_string.hpp index 8417c14..4e5b5ae 100644 --- a/include/vulkan/vulkan_to_string.hpp +++ b/include/vulkan/vulkan_to_string.hpp @@ -10,10 +10,23 @@ #include <vulkan/vulkan_enums.hpp> -#if __cpp_lib_format -# include <format> // std::format +// ignore warnings on using deprecated enum values in this header +#if defined( __clang__ ) || defined( __GNUC__ ) +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#elif defined( _MSC_VER ) +# pragma warning( push ) +# pragma warning( disable : 4996 ) +#endif + +#if defined( VULKAN_HPP_ENABLE_STD_MODULE ) && defined( VULKAN_HPP_STD_MODULE ) +import VULKAN_HPP_STD_MODULE; #else -# include <sstream> // std::stringstream +# if __cpp_lib_format +# include <format> // std::format +# else +# include <sstream> // std::stringstream +# endif #endif namespace VULKAN_HPP_NAMESPACE @@ -3432,6 +3445,8 @@ namespace VULKAN_HPP_NAMESPACE result += "DescriptorBufferEXT | "; if ( value & PipelineCreateFlagBits2KHR::eCaptureData ) result += "CaptureData | "; + if ( value & PipelineCreateFlagBits2KHR::eIndirectBindableEXT ) + result += "IndirectBindableEXT | "; return "{ " + result.substr( 0, result.size() - 3 ) + " }"; } @@ -3496,6 +3511,8 @@ namespace VULKAN_HPP_NAMESPACE result += "MicromapBuildInputReadOnlyEXT | "; if ( value & BufferUsageFlagBits2KHR::eMicromapStorageEXT ) result += "MicromapStorageEXT | "; + if ( value & BufferUsageFlagBits2KHR::ePreprocessBufferEXT ) + result += "PreprocessBufferEXT | "; return "{ " + result.substr( 0, result.size() - 3 ) + " }"; } @@ -3522,6 +3539,38 @@ namespace VULKAN_HPP_NAMESPACE result += "FragmentShadingRateAttachment | "; if ( value & ShaderCreateFlagBitsEXT::eFragmentDensityMapAttachment ) result += "FragmentDensityMapAttachment | "; + if ( value & ShaderCreateFlagBitsEXT::eIndirectBindable ) + result += "IndirectBindable | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + //=== VK_EXT_device_generated_commands === + + VULKAN_HPP_INLINE std::string to_string( IndirectCommandsLayoutUsageFlagsEXT value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & IndirectCommandsLayoutUsageFlagBitsEXT::eExplicitPreprocess ) + result += "ExplicitPreprocess | "; + if ( value & IndirectCommandsLayoutUsageFlagBitsEXT::eUnorderedSequences ) + result += "UnorderedSequences | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + + VULKAN_HPP_INLINE std::string to_string( IndirectCommandsInputModeFlagsEXT value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & IndirectCommandsInputModeFlagBitsEXT::eVulkanIndexBuffer ) + result += "VulkanIndexBuffer | "; + if ( value & IndirectCommandsInputModeFlagBitsEXT::eDxgiIndexBuffer ) + result += "DxgiIndexBuffer | "; return "{ " + result.substr( 0, result.size() - 3 ) + " }"; } @@ -4580,9 +4629,25 @@ namespace VULKAN_HPP_NAMESPACE case StructureType::ePhysicalDeviceShaderAtomicFloat16VectorFeaturesNV: return "PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV"; case StructureType::ePhysicalDeviceShaderReplicatedCompositesFeaturesEXT: return "PhysicalDeviceShaderReplicatedCompositesFeaturesEXT"; case StructureType::ePhysicalDeviceRayTracingValidationFeaturesNV: return "PhysicalDeviceRayTracingValidationFeaturesNV"; + case StructureType::ePhysicalDeviceDeviceGeneratedCommandsFeaturesEXT: return "PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT"; + case StructureType::ePhysicalDeviceDeviceGeneratedCommandsPropertiesEXT: return "PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT"; + case StructureType::eGeneratedCommandsMemoryRequirementsInfoEXT: return "GeneratedCommandsMemoryRequirementsInfoEXT"; + case StructureType::eIndirectExecutionSetCreateInfoEXT: return "IndirectExecutionSetCreateInfoEXT"; + case StructureType::eGeneratedCommandsInfoEXT: return "GeneratedCommandsInfoEXT"; + case StructureType::eIndirectCommandsLayoutCreateInfoEXT: return "IndirectCommandsLayoutCreateInfoEXT"; + case StructureType::eIndirectCommandsLayoutTokenEXT: return "IndirectCommandsLayoutTokenEXT"; + case StructureType::eWriteIndirectExecutionSetPipelineEXT: return "WriteIndirectExecutionSetPipelineEXT"; + case StructureType::eWriteIndirectExecutionSetShaderEXT: return "WriteIndirectExecutionSetShaderEXT"; + case StructureType::eIndirectExecutionSetPipelineInfoEXT: return "IndirectExecutionSetPipelineInfoEXT"; + case StructureType::eIndirectExecutionSetShaderInfoEXT: return "IndirectExecutionSetShaderInfoEXT"; + case StructureType::eIndirectExecutionSetShaderLayoutInfoEXT: return "IndirectExecutionSetShaderLayoutInfoEXT"; + case StructureType::eGeneratedCommandsPipelineInfoEXT: return "GeneratedCommandsPipelineInfoEXT"; + case StructureType::eGeneratedCommandsShaderInfoEXT: return "GeneratedCommandsShaderInfoEXT"; case StructureType::ePhysicalDeviceImageAlignmentControlFeaturesMESA: return "PhysicalDeviceImageAlignmentControlFeaturesMESA"; case StructureType::ePhysicalDeviceImageAlignmentControlPropertiesMESA: return "PhysicalDeviceImageAlignmentControlPropertiesMESA"; case StructureType::eImageAlignmentControlCreateInfoMESA: return "ImageAlignmentControlCreateInfoMESA"; + case StructureType::ePhysicalDeviceDepthClampControlFeaturesEXT: return "PhysicalDeviceDepthClampControlFeaturesEXT"; + case StructureType::ePipelineViewportDepthClampControlCreateInfoEXT: return "PipelineViewportDepthClampControlCreateInfoEXT"; default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast<uint32_t>( value ) ) + " )"; } } @@ -4656,6 +4721,8 @@ namespace VULKAN_HPP_NAMESPACE case ObjectType::eOpticalFlowSessionNV: return "OpticalFlowSessionNV"; case ObjectType::eShaderEXT: return "ShaderEXT"; case ObjectType::ePipelineBinaryKHR: return "PipelineBinaryKHR"; + case ObjectType::eIndirectCommandsLayoutEXT: return "IndirectCommandsLayoutEXT"; + case ObjectType::eIndirectExecutionSetEXT: return "IndirectExecutionSetEXT"; default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast<uint32_t>( value ) ) + " )"; } } @@ -5701,6 +5768,7 @@ namespace VULKAN_HPP_NAMESPACE case DynamicState::eCoverageReductionModeNV: return "CoverageReductionModeNV"; case DynamicState::eAttachmentFeedbackLoopEnableEXT: return "AttachmentFeedbackLoopEnableEXT"; case DynamicState::eLineStippleKHR: return "LineStippleKHR"; + case DynamicState::eDepthClampRangeEXT: return "DepthClampRangeEXT"; default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast<uint32_t>( value ) ) + " )"; } } @@ -8879,6 +8947,7 @@ namespace VULKAN_HPP_NAMESPACE case PipelineCreateFlagBits2KHR::eRayTracingDisplacementMicromapNV: return "RayTracingDisplacementMicromapNV"; case PipelineCreateFlagBits2KHR::eDescriptorBufferEXT: return "DescriptorBufferEXT"; case PipelineCreateFlagBits2KHR::eCaptureData: return "CaptureData"; + case PipelineCreateFlagBits2KHR::eIndirectBindableEXT: return "IndirectBindableEXT"; default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast<uint32_t>( value ) ) + " )"; } } @@ -8915,6 +8984,7 @@ namespace VULKAN_HPP_NAMESPACE case BufferUsageFlagBits2KHR::ePushDescriptorsDescriptorBufferEXT: return "PushDescriptorsDescriptorBufferEXT"; case BufferUsageFlagBits2KHR::eMicromapBuildInputReadOnlyEXT: return "MicromapBuildInputReadOnlyEXT"; case BufferUsageFlagBits2KHR::eMicromapStorageEXT: return "MicromapStorageEXT"; + case BufferUsageFlagBits2KHR::ePreprocessBufferEXT: return "PreprocessBufferEXT"; default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast<uint32_t>( value ) ) + " )"; } } @@ -8955,6 +9025,7 @@ namespace VULKAN_HPP_NAMESPACE case ShaderCreateFlagBitsEXT::eDispatchBase: return "DispatchBase"; case ShaderCreateFlagBitsEXT::eFragmentShadingRateAttachment: return "FragmentShadingRateAttachment"; case ShaderCreateFlagBitsEXT::eFragmentDensityMapAttachment: return "FragmentDensityMapAttachment"; + case ShaderCreateFlagBitsEXT::eIndirectBindable: return "IndirectBindable"; default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast<uint32_t>( value ) ) + " )"; } } @@ -9145,5 +9216,79 @@ namespace VULKAN_HPP_NAMESPACE } } + //=== VK_EXT_device_generated_commands === + + VULKAN_HPP_INLINE std::string to_string( IndirectCommandsTokenTypeEXT value ) + { + switch ( value ) + { + case IndirectCommandsTokenTypeEXT::eExecutionSet: return "ExecutionSet"; + case IndirectCommandsTokenTypeEXT::ePushConstant: return "PushConstant"; + case IndirectCommandsTokenTypeEXT::eSequenceIndex: return "SequenceIndex"; + case IndirectCommandsTokenTypeEXT::eIndexBuffer: return "IndexBuffer"; + case IndirectCommandsTokenTypeEXT::eVertexBuffer: return "VertexBuffer"; + case IndirectCommandsTokenTypeEXT::eDrawIndexed: return "DrawIndexed"; + case IndirectCommandsTokenTypeEXT::eDraw: return "Draw"; + case IndirectCommandsTokenTypeEXT::eDrawIndexedCount: return "DrawIndexedCount"; + case IndirectCommandsTokenTypeEXT::eDrawCount: return "DrawCount"; + case IndirectCommandsTokenTypeEXT::eDispatch: return "Dispatch"; + case IndirectCommandsTokenTypeEXT::eDrawMeshTasksNV: return "DrawMeshTasksNV"; + case IndirectCommandsTokenTypeEXT::eDrawMeshTasksCountNV: return "DrawMeshTasksCountNV"; + case IndirectCommandsTokenTypeEXT::eDrawMeshTasks: return "DrawMeshTasks"; + case IndirectCommandsTokenTypeEXT::eDrawMeshTasksCount: return "DrawMeshTasksCount"; + case IndirectCommandsTokenTypeEXT::eTraceRays2: return "TraceRays2"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast<uint32_t>( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE std::string to_string( IndirectExecutionSetInfoTypeEXT value ) + { + switch ( value ) + { + case IndirectExecutionSetInfoTypeEXT::ePipelines: return "Pipelines"; + case IndirectExecutionSetInfoTypeEXT::eShaderObjects: return "ShaderObjects"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast<uint32_t>( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE std::string to_string( IndirectCommandsLayoutUsageFlagBitsEXT value ) + { + switch ( value ) + { + case IndirectCommandsLayoutUsageFlagBitsEXT::eExplicitPreprocess: return "ExplicitPreprocess"; + case IndirectCommandsLayoutUsageFlagBitsEXT::eUnorderedSequences: return "UnorderedSequences"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast<uint32_t>( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE std::string to_string( IndirectCommandsInputModeFlagBitsEXT value ) + { + switch ( value ) + { + case IndirectCommandsInputModeFlagBitsEXT::eVulkanIndexBuffer: return "VulkanIndexBuffer"; + case IndirectCommandsInputModeFlagBitsEXT::eDxgiIndexBuffer: return "DxgiIndexBuffer"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast<uint32_t>( value ) ) + " )"; + } + } + + //=== VK_EXT_depth_clamp_control === + + VULKAN_HPP_INLINE std::string to_string( DepthClampModeEXT value ) + { + switch ( value ) + { + case DepthClampModeEXT::eViewportRange: return "ViewportRange"; + case DepthClampModeEXT::eUserDefinedRange: return "UserDefinedRange"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast<uint32_t>( value ) ) + " )"; + } + } + } // namespace VULKAN_HPP_NAMESPACE + +#if defined( __clang__ ) || defined( __GNUC__ ) +# pragma GCC diagnostic pop +#elif defined( _MSC_VER ) +# pragma warning( pop ) +#endif + #endif diff --git a/registry/validusage.json b/registry/validusage.json index d4148c3..73f7277 100644 --- a/registry/validusage.json +++ b/registry/validusage.json @@ -1,9 +1,9 @@ { "version info": { "schema version": 2, - "api version": "1.3.295", - "comment": "from git branch: github-main commit: 8e435deb15124bbf9a7e3340e6cc7975999ed5c5", - "date": "2024-08-30 09:13:37Z" + "api version": "1.3.296", + "comment": "from git branch: github-main commit: 486e4b289053a7d64784e7ce791711843c60c235", + "date": "2024-09-26 07:23:50Z" }, "validation": { "vkGetInstanceProcAddr": { @@ -369,7 +369,7 @@ }, { "vuid": "VUID-VkPhysicalDeviceProperties2-pNext-pNext", - "text": "Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>, <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI\">VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI</a>, <a href=\"#VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR\">VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceConservativeRasterizationPropertiesEXT\">VkPhysicalDeviceConservativeRasterizationPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixPropertiesKHR\">VkPhysicalDeviceCooperativeMatrixPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixPropertiesNV\">VkPhysicalDeviceCooperativeMatrixPropertiesNV</a>, <a href=\"#VkPhysicalDeviceCopyMemoryIndirectPropertiesNV\">VkPhysicalDeviceCopyMemoryIndirectPropertiesNV</a>, <a href=\"#VkPhysicalDeviceCudaKernelLaunchPropertiesNV\">VkPhysicalDeviceCudaKernelLaunchPropertiesNV</a>, <a href=\"#VkPhysicalDeviceCustomBorderColorPropertiesEXT\">VkPhysicalDeviceCustomBorderColorPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>, <a href=\"#VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT\">VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorBufferPropertiesEXT\">VkPhysicalDeviceDescriptorBufferPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingProperties\">VkPhysicalDeviceDescriptorIndexingProperties</a>, <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</a>, <a href=\"#VkPhysicalDeviceDiscardRectanglePropertiesEXT\">VkPhysicalDeviceDiscardRectanglePropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDisplacementMicromapPropertiesNV\">VkPhysicalDeviceDisplacementMicromapPropertiesNV</a>, <a href=\"#VkPhysicalDeviceDriverProperties\">VkPhysicalDeviceDriverProperties</a>, <a href=\"#VkPhysicalDeviceDrmPropertiesEXT\">VkPhysicalDeviceDrmPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceExtendedDynamicState3PropertiesEXT\">VkPhysicalDeviceExtendedDynamicState3PropertiesEXT</a>, <a href=\"#VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV\">VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV</a>, <a href=\"#VkPhysicalDeviceExternalFormatResolvePropertiesANDROID\">VkPhysicalDeviceExternalFormatResolvePropertiesANDROID</a>, <a href=\"#VkPhysicalDeviceExternalMemoryHostPropertiesEXT\">VkPhysicalDeviceExternalMemoryHostPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFloatControlsProperties\">VkPhysicalDeviceFloatControlsProperties</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMap2PropertiesEXT\">VkPhysicalDeviceFragmentDensityMap2PropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM\">VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapPropertiesEXT\">VkPhysicalDeviceFragmentDensityMapPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR\">VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV\">VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRatePropertiesKHR\">VkPhysicalDeviceFragmentShadingRatePropertiesKHR</a>, <a href=\"#VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT\">VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceHostImageCopyPropertiesEXT\">VkPhysicalDeviceHostImageCopyPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceIDProperties\">VkPhysicalDeviceIDProperties</a>, <a href=\"#VkPhysicalDeviceImageAlignmentControlPropertiesMESA\">VkPhysicalDeviceImageAlignmentControlPropertiesMESA</a>, <a href=\"#VkPhysicalDeviceImageProcessing2PropertiesQCOM\">VkPhysicalDeviceImageProcessing2PropertiesQCOM</a>, <a href=\"#VkPhysicalDeviceImageProcessingPropertiesQCOM\">VkPhysicalDeviceImageProcessingPropertiesQCOM</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockProperties\">VkPhysicalDeviceInlineUniformBlockProperties</a>, <a href=\"#VkPhysicalDeviceLayeredApiPropertiesListKHR\">VkPhysicalDeviceLayeredApiPropertiesListKHR</a>, <a href=\"#VkPhysicalDeviceLayeredDriverPropertiesMSFT\">VkPhysicalDeviceLayeredDriverPropertiesMSFT</a>, <a href=\"#VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT\">VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceLineRasterizationPropertiesKHR\">VkPhysicalDeviceLineRasterizationPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceMaintenance3Properties\">VkPhysicalDeviceMaintenance3Properties</a>, <a href=\"#VkPhysicalDeviceMaintenance4Properties\">VkPhysicalDeviceMaintenance4Properties</a>, <a href=\"#VkPhysicalDeviceMaintenance5PropertiesKHR\">VkPhysicalDeviceMaintenance5PropertiesKHR</a>, <a href=\"#VkPhysicalDeviceMaintenance6PropertiesKHR\">VkPhysicalDeviceMaintenance6PropertiesKHR</a>, <a href=\"#VkPhysicalDeviceMaintenance7PropertiesKHR\">VkPhysicalDeviceMaintenance7PropertiesKHR</a>, <a href=\"#VkPhysicalDeviceMapMemoryPlacedPropertiesEXT\">VkPhysicalDeviceMapMemoryPlacedPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceMemoryDecompressionPropertiesNV\">VkPhysicalDeviceMemoryDecompressionPropertiesNV</a>, <a href=\"#VkPhysicalDeviceMeshShaderPropertiesEXT\">VkPhysicalDeviceMeshShaderPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceMeshShaderPropertiesNV\">VkPhysicalDeviceMeshShaderPropertiesNV</a>, <a href=\"#VkPhysicalDeviceMultiDrawPropertiesEXT\">VkPhysicalDeviceMultiDrawPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX\">VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX</a>, <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>, <a href=\"#VkPhysicalDeviceNestedCommandBufferPropertiesEXT\">VkPhysicalDeviceNestedCommandBufferPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceOpacityMicromapPropertiesEXT\">VkPhysicalDeviceOpacityMicromapPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceOpticalFlowPropertiesNV\">VkPhysicalDeviceOpticalFlowPropertiesNV</a>, <a href=\"#VkPhysicalDevicePCIBusInfoPropertiesEXT\">VkPhysicalDevicePCIBusInfoPropertiesEXT</a>, <a href=\"#VkPhysicalDevicePerformanceQueryPropertiesKHR\">VkPhysicalDevicePerformanceQueryPropertiesKHR</a>, <a href=\"#VkPhysicalDevicePipelineBinaryPropertiesKHR\">VkPhysicalDevicePipelineBinaryPropertiesKHR</a>, <a href=\"#VkPhysicalDevicePipelineRobustnessPropertiesEXT\">VkPhysicalDevicePipelineRobustnessPropertiesEXT</a>, <a href=\"#VkPhysicalDevicePointClippingProperties\">VkPhysicalDevicePointClippingProperties</a>, <a href=\"#VkPhysicalDevicePortabilitySubsetPropertiesKHR\">VkPhysicalDevicePortabilitySubsetPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryProperties\">VkPhysicalDeviceProtectedMemoryProperties</a>, <a href=\"#VkPhysicalDeviceProvokingVertexPropertiesEXT\">VkPhysicalDeviceProvokingVertexPropertiesEXT</a>, <a href=\"#VkPhysicalDevicePushDescriptorPropertiesKHR\">VkPhysicalDevicePushDescriptorPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV\">VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV</a>, <a href=\"#VkPhysicalDeviceRayTracingPipelinePropertiesKHR\">VkPhysicalDeviceRayTracingPipelinePropertiesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>, <a href=\"#VkPhysicalDeviceRenderPassStripedPropertiesARM\">VkPhysicalDeviceRenderPassStripedPropertiesARM</a>, <a href=\"#VkPhysicalDeviceRobustness2PropertiesEXT\">VkPhysicalDeviceRobustness2PropertiesEXT</a>, <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceSamplerFilterMinmaxProperties\">VkPhysicalDeviceSamplerFilterMinmaxProperties</a>, <a href=\"#VkPhysicalDeviceSchedulingControlsPropertiesARM\">VkPhysicalDeviceSchedulingControlsPropertiesARM</a>, <a href=\"#VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM\">VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM</a>, <a href=\"#VkPhysicalDeviceShaderCoreProperties2AMD\">VkPhysicalDeviceShaderCoreProperties2AMD</a>, <a href=\"#VkPhysicalDeviceShaderCorePropertiesAMD\">VkPhysicalDeviceShaderCorePropertiesAMD</a>, <a href=\"#VkPhysicalDeviceShaderCorePropertiesARM\">VkPhysicalDeviceShaderCorePropertiesARM</a>, <a href=\"#VkPhysicalDeviceShaderEnqueuePropertiesAMDX\">VkPhysicalDeviceShaderEnqueuePropertiesAMDX</a>, <a href=\"#VkPhysicalDeviceShaderIntegerDotProductProperties\">VkPhysicalDeviceShaderIntegerDotProductProperties</a>, <a href=\"#VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT\">VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceShaderObjectPropertiesEXT\">VkPhysicalDeviceShaderObjectPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceShaderSMBuiltinsPropertiesNV\">VkPhysicalDeviceShaderSMBuiltinsPropertiesNV</a>, <a href=\"#VkPhysicalDeviceShaderTileImagePropertiesEXT\">VkPhysicalDeviceShaderTileImagePropertiesEXT</a>, <a href=\"#VkPhysicalDeviceShadingRateImagePropertiesNV\">VkPhysicalDeviceShadingRateImagePropertiesNV</a>, <a href=\"#VkPhysicalDeviceSubgroupProperties\">VkPhysicalDeviceSubgroupProperties</a>, <a href=\"#VkPhysicalDeviceSubgroupSizeControlProperties\">VkPhysicalDeviceSubgroupSizeControlProperties</a>, <a href=\"#VkPhysicalDeviceSubpassShadingPropertiesHUAWEI\">VkPhysicalDeviceSubpassShadingPropertiesHUAWEI</a>, <a href=\"#VkPhysicalDeviceTexelBufferAlignmentProperties\">VkPhysicalDeviceTexelBufferAlignmentProperties</a>, <a href=\"#VkPhysicalDeviceTimelineSemaphoreProperties\">VkPhysicalDeviceTimelineSemaphoreProperties</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackPropertiesEXT\">VkPhysicalDeviceTransformFeedbackPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT\">VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR\">VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceVulkan11Properties\">VkPhysicalDeviceVulkan11Properties</a>, <a href=\"#VkPhysicalDeviceVulkan12Properties\">VkPhysicalDeviceVulkan12Properties</a>, or <a href=\"#VkPhysicalDeviceVulkan13Properties\">VkPhysicalDeviceVulkan13Properties</a>", + "text": "Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>, <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI\">VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI</a>, <a href=\"#VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR\">VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceConservativeRasterizationPropertiesEXT\">VkPhysicalDeviceConservativeRasterizationPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixPropertiesKHR\">VkPhysicalDeviceCooperativeMatrixPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixPropertiesNV\">VkPhysicalDeviceCooperativeMatrixPropertiesNV</a>, <a href=\"#VkPhysicalDeviceCopyMemoryIndirectPropertiesNV\">VkPhysicalDeviceCopyMemoryIndirectPropertiesNV</a>, <a href=\"#VkPhysicalDeviceCudaKernelLaunchPropertiesNV\">VkPhysicalDeviceCudaKernelLaunchPropertiesNV</a>, <a href=\"#VkPhysicalDeviceCustomBorderColorPropertiesEXT\">VkPhysicalDeviceCustomBorderColorPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>, <a href=\"#VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT\">VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorBufferPropertiesEXT\">VkPhysicalDeviceDescriptorBufferPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingProperties\">VkPhysicalDeviceDescriptorIndexingProperties</a>, <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</a>, <a href=\"#VkPhysicalDeviceDiscardRectanglePropertiesEXT\">VkPhysicalDeviceDiscardRectanglePropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDisplacementMicromapPropertiesNV\">VkPhysicalDeviceDisplacementMicromapPropertiesNV</a>, <a href=\"#VkPhysicalDeviceDriverProperties\">VkPhysicalDeviceDriverProperties</a>, <a href=\"#VkPhysicalDeviceDrmPropertiesEXT\">VkPhysicalDeviceDrmPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceExtendedDynamicState3PropertiesEXT\">VkPhysicalDeviceExtendedDynamicState3PropertiesEXT</a>, <a href=\"#VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV\">VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV</a>, <a href=\"#VkPhysicalDeviceExternalFormatResolvePropertiesANDROID\">VkPhysicalDeviceExternalFormatResolvePropertiesANDROID</a>, <a href=\"#VkPhysicalDeviceExternalMemoryHostPropertiesEXT\">VkPhysicalDeviceExternalMemoryHostPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFloatControlsProperties\">VkPhysicalDeviceFloatControlsProperties</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMap2PropertiesEXT\">VkPhysicalDeviceFragmentDensityMap2PropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM\">VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapPropertiesEXT\">VkPhysicalDeviceFragmentDensityMapPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR\">VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV\">VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRatePropertiesKHR\">VkPhysicalDeviceFragmentShadingRatePropertiesKHR</a>, <a href=\"#VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT\">VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceHostImageCopyPropertiesEXT\">VkPhysicalDeviceHostImageCopyPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceIDProperties\">VkPhysicalDeviceIDProperties</a>, <a href=\"#VkPhysicalDeviceImageAlignmentControlPropertiesMESA\">VkPhysicalDeviceImageAlignmentControlPropertiesMESA</a>, <a href=\"#VkPhysicalDeviceImageProcessing2PropertiesQCOM\">VkPhysicalDeviceImageProcessing2PropertiesQCOM</a>, <a href=\"#VkPhysicalDeviceImageProcessingPropertiesQCOM\">VkPhysicalDeviceImageProcessingPropertiesQCOM</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockProperties\">VkPhysicalDeviceInlineUniformBlockProperties</a>, <a href=\"#VkPhysicalDeviceLayeredApiPropertiesListKHR\">VkPhysicalDeviceLayeredApiPropertiesListKHR</a>, <a href=\"#VkPhysicalDeviceLayeredDriverPropertiesMSFT\">VkPhysicalDeviceLayeredDriverPropertiesMSFT</a>, <a href=\"#VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT\">VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceLineRasterizationPropertiesKHR\">VkPhysicalDeviceLineRasterizationPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceMaintenance3Properties\">VkPhysicalDeviceMaintenance3Properties</a>, <a href=\"#VkPhysicalDeviceMaintenance4Properties\">VkPhysicalDeviceMaintenance4Properties</a>, <a href=\"#VkPhysicalDeviceMaintenance5PropertiesKHR\">VkPhysicalDeviceMaintenance5PropertiesKHR</a>, <a href=\"#VkPhysicalDeviceMaintenance6PropertiesKHR\">VkPhysicalDeviceMaintenance6PropertiesKHR</a>, <a href=\"#VkPhysicalDeviceMaintenance7PropertiesKHR\">VkPhysicalDeviceMaintenance7PropertiesKHR</a>, <a href=\"#VkPhysicalDeviceMapMemoryPlacedPropertiesEXT\">VkPhysicalDeviceMapMemoryPlacedPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceMemoryDecompressionPropertiesNV\">VkPhysicalDeviceMemoryDecompressionPropertiesNV</a>, <a href=\"#VkPhysicalDeviceMeshShaderPropertiesEXT\">VkPhysicalDeviceMeshShaderPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceMeshShaderPropertiesNV\">VkPhysicalDeviceMeshShaderPropertiesNV</a>, <a href=\"#VkPhysicalDeviceMultiDrawPropertiesEXT\">VkPhysicalDeviceMultiDrawPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX\">VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX</a>, <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>, <a href=\"#VkPhysicalDeviceNestedCommandBufferPropertiesEXT\">VkPhysicalDeviceNestedCommandBufferPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceOpacityMicromapPropertiesEXT\">VkPhysicalDeviceOpacityMicromapPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceOpticalFlowPropertiesNV\">VkPhysicalDeviceOpticalFlowPropertiesNV</a>, <a href=\"#VkPhysicalDevicePCIBusInfoPropertiesEXT\">VkPhysicalDevicePCIBusInfoPropertiesEXT</a>, <a href=\"#VkPhysicalDevicePerformanceQueryPropertiesKHR\">VkPhysicalDevicePerformanceQueryPropertiesKHR</a>, <a href=\"#VkPhysicalDevicePipelineBinaryPropertiesKHR\">VkPhysicalDevicePipelineBinaryPropertiesKHR</a>, <a href=\"#VkPhysicalDevicePipelineRobustnessPropertiesEXT\">VkPhysicalDevicePipelineRobustnessPropertiesEXT</a>, <a href=\"#VkPhysicalDevicePointClippingProperties\">VkPhysicalDevicePointClippingProperties</a>, <a href=\"#VkPhysicalDevicePortabilitySubsetPropertiesKHR\">VkPhysicalDevicePortabilitySubsetPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryProperties\">VkPhysicalDeviceProtectedMemoryProperties</a>, <a href=\"#VkPhysicalDeviceProvokingVertexPropertiesEXT\">VkPhysicalDeviceProvokingVertexPropertiesEXT</a>, <a href=\"#VkPhysicalDevicePushDescriptorPropertiesKHR\">VkPhysicalDevicePushDescriptorPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV\">VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV</a>, <a href=\"#VkPhysicalDeviceRayTracingPipelinePropertiesKHR\">VkPhysicalDeviceRayTracingPipelinePropertiesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>, <a href=\"#VkPhysicalDeviceRenderPassStripedPropertiesARM\">VkPhysicalDeviceRenderPassStripedPropertiesARM</a>, <a href=\"#VkPhysicalDeviceRobustness2PropertiesEXT\">VkPhysicalDeviceRobustness2PropertiesEXT</a>, <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceSamplerFilterMinmaxProperties\">VkPhysicalDeviceSamplerFilterMinmaxProperties</a>, <a href=\"#VkPhysicalDeviceSchedulingControlsPropertiesARM\">VkPhysicalDeviceSchedulingControlsPropertiesARM</a>, <a href=\"#VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM\">VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM</a>, <a href=\"#VkPhysicalDeviceShaderCoreProperties2AMD\">VkPhysicalDeviceShaderCoreProperties2AMD</a>, <a href=\"#VkPhysicalDeviceShaderCorePropertiesAMD\">VkPhysicalDeviceShaderCorePropertiesAMD</a>, <a href=\"#VkPhysicalDeviceShaderCorePropertiesARM\">VkPhysicalDeviceShaderCorePropertiesARM</a>, <a href=\"#VkPhysicalDeviceShaderEnqueuePropertiesAMDX\">VkPhysicalDeviceShaderEnqueuePropertiesAMDX</a>, <a href=\"#VkPhysicalDeviceShaderIntegerDotProductProperties\">VkPhysicalDeviceShaderIntegerDotProductProperties</a>, <a href=\"#VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT\">VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceShaderObjectPropertiesEXT\">VkPhysicalDeviceShaderObjectPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceShaderSMBuiltinsPropertiesNV\">VkPhysicalDeviceShaderSMBuiltinsPropertiesNV</a>, <a href=\"#VkPhysicalDeviceShaderTileImagePropertiesEXT\">VkPhysicalDeviceShaderTileImagePropertiesEXT</a>, <a href=\"#VkPhysicalDeviceShadingRateImagePropertiesNV\">VkPhysicalDeviceShadingRateImagePropertiesNV</a>, <a href=\"#VkPhysicalDeviceSubgroupProperties\">VkPhysicalDeviceSubgroupProperties</a>, <a href=\"#VkPhysicalDeviceSubgroupSizeControlProperties\">VkPhysicalDeviceSubgroupSizeControlProperties</a>, <a href=\"#VkPhysicalDeviceSubpassShadingPropertiesHUAWEI\">VkPhysicalDeviceSubpassShadingPropertiesHUAWEI</a>, <a href=\"#VkPhysicalDeviceTexelBufferAlignmentProperties\">VkPhysicalDeviceTexelBufferAlignmentProperties</a>, <a href=\"#VkPhysicalDeviceTimelineSemaphoreProperties\">VkPhysicalDeviceTimelineSemaphoreProperties</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackPropertiesEXT\">VkPhysicalDeviceTransformFeedbackPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT\">VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR\">VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceVulkan11Properties\">VkPhysicalDeviceVulkan11Properties</a>, <a href=\"#VkPhysicalDeviceVulkan12Properties\">VkPhysicalDeviceVulkan12Properties</a>, or <a href=\"#VkPhysicalDeviceVulkan13Properties\">VkPhysicalDeviceVulkan13Properties</a>", "page": "vkspec" }, { @@ -886,7 +886,7 @@ }, { "vuid": "VUID-VkDeviceCreateInfo-pNext-pNext", - "text": "Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceDeviceMemoryReportCreateInfoEXT\">VkDeviceDeviceMemoryReportCreateInfoEXT</a>, <a href=\"#VkDeviceDiagnosticsConfigCreateInfoNV\">VkDeviceDiagnosticsConfigCreateInfoNV</a>, <a href=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>, <a href=\"#VkDeviceMemoryOverallocationCreateInfoAMD\">VkDeviceMemoryOverallocationCreateInfoAMD</a>, <a href=\"#VkDevicePipelineBinaryInternalCacheControlKHR\">VkDevicePipelineBinaryInternalCacheControlKHR</a>, <a href=\"#VkDevicePrivateDataCreateInfo\">VkDevicePrivateDataCreateInfo</a>, <a href=\"#VkDeviceQueueShaderCoreControlCreateInfoARM\">VkDeviceQueueShaderCoreControlCreateInfoARM</a>, <a href=\"#VkPhysicalDevice16BitStorageFeatures\">VkPhysicalDevice16BitStorageFeatures</a>, <a href=\"#VkPhysicalDevice4444FormatsFeaturesEXT\">VkPhysicalDevice4444FormatsFeaturesEXT</a>, <a href=\"#VkPhysicalDevice8BitStorageFeatures\">VkPhysicalDevice8BitStorageFeatures</a>, <a href=\"#VkPhysicalDeviceASTCDecodeFeaturesEXT\">VkPhysicalDeviceASTCDecodeFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceAccelerationStructureFeaturesKHR\">VkPhysicalDeviceAccelerationStructureFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceAddressBindingReportFeaturesEXT\">VkPhysicalDeviceAddressBindingReportFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceAmigoProfilingFeaturesSEC\">VkPhysicalDeviceAmigoProfilingFeaturesSEC</a>, <a href=\"#VkPhysicalDeviceAntiLagFeaturesAMD\">VkPhysicalDeviceAntiLagFeaturesAMD</a>, <a href=\"#VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT\">VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT\">VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT\">VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBorderColorSwizzleFeaturesEXT\">VkPhysicalDeviceBorderColorSwizzleFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeatures\">VkPhysicalDeviceBufferDeviceAddressFeatures</a>, <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeaturesEXT\">VkPhysicalDeviceBufferDeviceAddressFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI\">VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI</a>, <a href=\"#VkPhysicalDeviceCoherentMemoryFeaturesAMD\">VkPhysicalDeviceCoherentMemoryFeaturesAMD</a>, <a href=\"#VkPhysicalDeviceColorWriteEnableFeaturesEXT\">VkPhysicalDeviceColorWriteEnableFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceCommandBufferInheritanceFeaturesNV\">VkPhysicalDeviceCommandBufferInheritanceFeaturesNV</a>, <a href=\"#VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR\">VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceConditionalRenderingFeaturesEXT\">VkPhysicalDeviceConditionalRenderingFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixFeaturesKHR\">VkPhysicalDeviceCooperativeMatrixFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixFeaturesNV\">VkPhysicalDeviceCooperativeMatrixFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCopyMemoryIndirectFeaturesNV\">VkPhysicalDeviceCopyMemoryIndirectFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCornerSampledImageFeaturesNV\">VkPhysicalDeviceCornerSampledImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCoverageReductionModeFeaturesNV\">VkPhysicalDeviceCoverageReductionModeFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCubicClampFeaturesQCOM\">VkPhysicalDeviceCubicClampFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceCubicWeightsFeaturesQCOM\">VkPhysicalDeviceCubicWeightsFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceCudaKernelLaunchFeaturesNV\">VkPhysicalDeviceCudaKernelLaunchFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCustomBorderColorFeaturesEXT\">VkPhysicalDeviceCustomBorderColorFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV\">VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDepthBiasControlFeaturesEXT\">VkPhysicalDeviceDepthBiasControlFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDepthClampZeroOneFeaturesEXT\">VkPhysicalDeviceDepthClampZeroOneFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDepthClipControlFeaturesEXT\">VkPhysicalDeviceDepthClipControlFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDepthClipEnableFeaturesEXT\">VkPhysicalDeviceDepthClipEnableFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorBufferFeaturesEXT\">VkPhysicalDeviceDescriptorBufferFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>, <a href=\"#VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV\">VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE\">VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE</a>, <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV\">VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV\">VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDeviceMemoryReportFeaturesEXT\">VkPhysicalDeviceDeviceMemoryReportFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDiagnosticsConfigFeaturesNV\">VkPhysicalDeviceDiagnosticsConfigFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDisplacementMicromapFeaturesNV\">VkPhysicalDeviceDisplacementMicromapFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDynamicRenderingFeatures\">VkPhysicalDeviceDynamicRenderingFeatures</a>, <a href=\"#VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR\">VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT\">VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExclusiveScissorFeaturesNV\">VkPhysicalDeviceExclusiveScissorFeaturesNV</a>, <a href=\"#VkPhysicalDeviceExtendedDynamicState2FeaturesEXT\">VkPhysicalDeviceExtendedDynamicState2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExtendedDynamicState3FeaturesEXT\">VkPhysicalDeviceExtendedDynamicState3FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExtendedDynamicStateFeaturesEXT\">VkPhysicalDeviceExtendedDynamicStateFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV\">VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV</a>, <a href=\"#VkPhysicalDeviceExternalFormatResolveFeaturesANDROID\">VkPhysicalDeviceExternalFormatResolveFeaturesANDROID</a>, <a href=\"#VkPhysicalDeviceExternalMemoryRDMAFeaturesNV\">VkPhysicalDeviceExternalMemoryRDMAFeaturesNV</a>, <a href=\"#VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX\">VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX</a>, <a href=\"#VkPhysicalDeviceFaultFeaturesEXT\">VkPhysicalDeviceFaultFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMap2FeaturesEXT\">VkPhysicalDeviceFragmentDensityMap2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapFeaturesEXT\">VkPhysicalDeviceFragmentDensityMapFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM\">VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR\">VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT\">VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV\">VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRateFeaturesKHR\">VkPhysicalDeviceFragmentShadingRateFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceFrameBoundaryFeaturesEXT\">VkPhysicalDeviceFrameBoundaryFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR\">VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT\">VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceHostImageCopyFeaturesEXT\">VkPhysicalDeviceHostImageCopyFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceHostQueryResetFeatures\">VkPhysicalDeviceHostQueryResetFeatures</a>, <a href=\"#VkPhysicalDeviceImage2DViewOf3DFeaturesEXT\">VkPhysicalDeviceImage2DViewOf3DFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImageAlignmentControlFeaturesMESA\">VkPhysicalDeviceImageAlignmentControlFeaturesMESA</a>, <a href=\"#VkPhysicalDeviceImageCompressionControlFeaturesEXT\">VkPhysicalDeviceImageCompressionControlFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT\">VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImageProcessing2FeaturesQCOM\">VkPhysicalDeviceImageProcessing2FeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceImageProcessingFeaturesQCOM\">VkPhysicalDeviceImageProcessingFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceImageRobustnessFeatures\">VkPhysicalDeviceImageRobustnessFeatures</a>, <a href=\"#VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT\">VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImageViewMinLodFeaturesEXT\">VkPhysicalDeviceImageViewMinLodFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImagelessFramebufferFeatures\">VkPhysicalDeviceImagelessFramebufferFeatures</a>, <a href=\"#VkPhysicalDeviceIndexTypeUint8FeaturesKHR\">VkPhysicalDeviceIndexTypeUint8FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceInheritedViewportScissorFeaturesNV\">VkPhysicalDeviceInheritedViewportScissorFeaturesNV</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockFeatures\">VkPhysicalDeviceInlineUniformBlockFeatures</a>, <a href=\"#VkPhysicalDeviceInvocationMaskFeaturesHUAWEI\">VkPhysicalDeviceInvocationMaskFeaturesHUAWEI</a>, <a href=\"#VkPhysicalDeviceLegacyDitheringFeaturesEXT\">VkPhysicalDeviceLegacyDitheringFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT\">VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceLineRasterizationFeaturesKHR\">VkPhysicalDeviceLineRasterizationFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceLinearColorAttachmentFeaturesNV\">VkPhysicalDeviceLinearColorAttachmentFeaturesNV</a>, <a href=\"#VkPhysicalDeviceMaintenance4Features\">VkPhysicalDeviceMaintenance4Features</a>, <a href=\"#VkPhysicalDeviceMaintenance5FeaturesKHR\">VkPhysicalDeviceMaintenance5FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceMaintenance6FeaturesKHR\">VkPhysicalDeviceMaintenance6FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceMaintenance7FeaturesKHR\">VkPhysicalDeviceMaintenance7FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceMapMemoryPlacedFeaturesEXT\">VkPhysicalDeviceMapMemoryPlacedFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMemoryDecompressionFeaturesNV\">VkPhysicalDeviceMemoryDecompressionFeaturesNV</a>, <a href=\"#VkPhysicalDeviceMemoryPriorityFeaturesEXT\">VkPhysicalDeviceMemoryPriorityFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMeshShaderFeaturesEXT\">VkPhysicalDeviceMeshShaderFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMeshShaderFeaturesNV\">VkPhysicalDeviceMeshShaderFeaturesNV</a>, <a href=\"#VkPhysicalDeviceMultiDrawFeaturesEXT\">VkPhysicalDeviceMultiDrawFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT\">VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMultiviewFeatures\">VkPhysicalDeviceMultiviewFeatures</a>, <a href=\"#VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM\">VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM\">VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT\">VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceNestedCommandBufferFeaturesEXT\">VkPhysicalDeviceNestedCommandBufferFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT\">VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceOpacityMicromapFeaturesEXT\">VkPhysicalDeviceOpacityMicromapFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceOpticalFlowFeaturesNV\">VkPhysicalDeviceOpticalFlowFeaturesNV</a>, <a href=\"#VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT\">VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePerStageDescriptorSetFeaturesNV\">VkPhysicalDevicePerStageDescriptorSetFeaturesNV</a>, <a href=\"#VkPhysicalDevicePerformanceQueryFeaturesKHR\">VkPhysicalDevicePerformanceQueryFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePipelineBinaryFeaturesKHR\">VkPhysicalDevicePipelineBinaryFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePipelineCreationCacheControlFeatures\">VkPhysicalDevicePipelineCreationCacheControlFeatures</a>, <a href=\"#VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR\">VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT\">VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePipelinePropertiesFeaturesEXT\">VkPhysicalDevicePipelinePropertiesFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePipelineProtectedAccessFeaturesEXT\">VkPhysicalDevicePipelineProtectedAccessFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePipelineRobustnessFeaturesEXT\">VkPhysicalDevicePipelineRobustnessFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePresentBarrierFeaturesNV\">VkPhysicalDevicePresentBarrierFeaturesNV</a>, <a href=\"#VkPhysicalDevicePresentIdFeaturesKHR\">VkPhysicalDevicePresentIdFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePresentWaitFeaturesKHR\">VkPhysicalDevicePresentWaitFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT\">VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT\">VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePrivateDataFeatures\">VkPhysicalDevicePrivateDataFeatures</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryFeatures\">VkPhysicalDeviceProtectedMemoryFeatures</a>, <a href=\"#VkPhysicalDeviceProvokingVertexFeaturesEXT\">VkPhysicalDeviceProvokingVertexFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT\">VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT\">VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceRawAccessChainsFeaturesNV\">VkPhysicalDeviceRawAccessChainsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceRayQueryFeaturesKHR\">VkPhysicalDeviceRayQueryFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV\">VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV</a>, <a href=\"#VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR\">VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingMotionBlurFeaturesNV\">VkPhysicalDeviceRayTracingMotionBlurFeaturesNV</a>, <a href=\"#VkPhysicalDeviceRayTracingPipelineFeaturesKHR\">VkPhysicalDeviceRayTracingPipelineFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR\">VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingValidationFeaturesNV\">VkPhysicalDeviceRayTracingValidationFeaturesNV</a>, <a href=\"#VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG\">VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG</a>, <a href=\"#VkPhysicalDeviceRenderPassStripedFeaturesARM\">VkPhysicalDeviceRenderPassStripedFeaturesARM</a>, <a href=\"#VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV\">VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV</a>, <a href=\"#VkPhysicalDeviceRobustness2FeaturesEXT\">VkPhysicalDeviceRobustness2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceSamplerYcbcrConversionFeatures\">VkPhysicalDeviceSamplerYcbcrConversionFeatures</a>, <a href=\"#VkPhysicalDeviceScalarBlockLayoutFeatures\">VkPhysicalDeviceScalarBlockLayoutFeatures</a>, <a href=\"#VkPhysicalDeviceSchedulingControlsFeaturesARM\">VkPhysicalDeviceSchedulingControlsFeaturesARM</a>, <a href=\"#VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures\">VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures</a>, <a href=\"#VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV\">VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT\">VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderAtomicFloatFeaturesEXT\">VkPhysicalDeviceShaderAtomicFloatFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderAtomicInt64Features\">VkPhysicalDeviceShaderAtomicInt64Features</a>, <a href=\"#VkPhysicalDeviceShaderClockFeaturesKHR\">VkPhysicalDeviceShaderClockFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM\">VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM</a>, <a href=\"#VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures\">VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures</a>, <a href=\"#VkPhysicalDeviceShaderDrawParametersFeatures\">VkPhysicalDeviceShaderDrawParametersFeatures</a>, <a href=\"#VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD\">VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD</a>, <a href=\"#VkPhysicalDeviceShaderEnqueueFeaturesAMDX\">VkPhysicalDeviceShaderEnqueueFeaturesAMDX</a>, <a href=\"#VkPhysicalDeviceShaderExpectAssumeFeaturesKHR\">VkPhysicalDeviceShaderExpectAssumeFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderFloat16Int8Features\">VkPhysicalDeviceShaderFloat16Int8Features</a>, <a href=\"#VkPhysicalDeviceShaderFloatControls2FeaturesKHR\">VkPhysicalDeviceShaderFloatControls2FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT\">VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderImageFootprintFeaturesNV\">VkPhysicalDeviceShaderImageFootprintFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShaderIntegerDotProductFeatures\">VkPhysicalDeviceShaderIntegerDotProductFeatures</a>, <a href=\"#VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL\">VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL</a>, <a href=\"#VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR\">VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT\">VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderObjectFeaturesEXT\">VkPhysicalDeviceShaderObjectFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderQuadControlFeaturesKHR\">VkPhysicalDeviceShaderQuadControlFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR\">VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT\">VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderSMBuiltinsFeaturesNV\">VkPhysicalDeviceShaderSMBuiltinsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures\">VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures</a>, <a href=\"#VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR\">VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR\">VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderTerminateInvocationFeatures\">VkPhysicalDeviceShaderTerminateInvocationFeatures</a>, <a href=\"#VkPhysicalDeviceShaderTileImageFeaturesEXT\">VkPhysicalDeviceShaderTileImageFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShadingRateImageFeaturesNV\">VkPhysicalDeviceShadingRateImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceSubgroupSizeControlFeatures\">VkPhysicalDeviceSubgroupSizeControlFeatures</a>, <a href=\"#VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT\">VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceSubpassShadingFeaturesHUAWEI\">VkPhysicalDeviceSubpassShadingFeaturesHUAWEI</a>, <a href=\"#VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT\">VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceSynchronization2Features\">VkPhysicalDeviceSynchronization2Features</a>, <a href=\"#VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT\">VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceTextureCompressionASTCHDRFeatures\">VkPhysicalDeviceTextureCompressionASTCHDRFeatures</a>, <a href=\"#VkPhysicalDeviceTilePropertiesFeaturesQCOM\">VkPhysicalDeviceTilePropertiesFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceTimelineSemaphoreFeatures\">VkPhysicalDeviceTimelineSemaphoreFeatures</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackFeaturesEXT\">VkPhysicalDeviceTransformFeedbackFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceUniformBufferStandardLayoutFeatures\">VkPhysicalDeviceUniformBufferStandardLayoutFeatures</a>, <a href=\"#VkPhysicalDeviceVariablePointersFeatures\">VkPhysicalDeviceVariablePointersFeatures</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR\">VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT\">VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceVideoMaintenance1FeaturesKHR\">VkPhysicalDeviceVideoMaintenance1FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceVulkan11Features\">VkPhysicalDeviceVulkan11Features</a>, <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a>, <a href=\"#VkPhysicalDeviceVulkan13Features\">VkPhysicalDeviceVulkan13Features</a>, <a href=\"#VkPhysicalDeviceVulkanMemoryModelFeatures\">VkPhysicalDeviceVulkanMemoryModelFeatures</a>, <a href=\"#VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR\">VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT\">VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceYcbcrDegammaFeaturesQCOM\">VkPhysicalDeviceYcbcrDegammaFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceYcbcrImageArraysFeaturesEXT\">VkPhysicalDeviceYcbcrImageArraysFeaturesEXT</a>, or <a href=\"#VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures\">VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures</a>", + "text": "Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceDeviceMemoryReportCreateInfoEXT\">VkDeviceDeviceMemoryReportCreateInfoEXT</a>, <a href=\"#VkDeviceDiagnosticsConfigCreateInfoNV\">VkDeviceDiagnosticsConfigCreateInfoNV</a>, <a href=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>, <a href=\"#VkDeviceMemoryOverallocationCreateInfoAMD\">VkDeviceMemoryOverallocationCreateInfoAMD</a>, <a href=\"#VkDevicePipelineBinaryInternalCacheControlKHR\">VkDevicePipelineBinaryInternalCacheControlKHR</a>, <a href=\"#VkDevicePrivateDataCreateInfo\">VkDevicePrivateDataCreateInfo</a>, <a href=\"#VkDeviceQueueShaderCoreControlCreateInfoARM\">VkDeviceQueueShaderCoreControlCreateInfoARM</a>, <a href=\"#VkPhysicalDevice16BitStorageFeatures\">VkPhysicalDevice16BitStorageFeatures</a>, <a href=\"#VkPhysicalDevice4444FormatsFeaturesEXT\">VkPhysicalDevice4444FormatsFeaturesEXT</a>, <a href=\"#VkPhysicalDevice8BitStorageFeatures\">VkPhysicalDevice8BitStorageFeatures</a>, <a href=\"#VkPhysicalDeviceASTCDecodeFeaturesEXT\">VkPhysicalDeviceASTCDecodeFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceAccelerationStructureFeaturesKHR\">VkPhysicalDeviceAccelerationStructureFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceAddressBindingReportFeaturesEXT\">VkPhysicalDeviceAddressBindingReportFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceAmigoProfilingFeaturesSEC\">VkPhysicalDeviceAmigoProfilingFeaturesSEC</a>, <a href=\"#VkPhysicalDeviceAntiLagFeaturesAMD\">VkPhysicalDeviceAntiLagFeaturesAMD</a>, <a href=\"#VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT\">VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT\">VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT\">VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBorderColorSwizzleFeaturesEXT\">VkPhysicalDeviceBorderColorSwizzleFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeatures\">VkPhysicalDeviceBufferDeviceAddressFeatures</a>, <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeaturesEXT\">VkPhysicalDeviceBufferDeviceAddressFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI\">VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI</a>, <a href=\"#VkPhysicalDeviceCoherentMemoryFeaturesAMD\">VkPhysicalDeviceCoherentMemoryFeaturesAMD</a>, <a href=\"#VkPhysicalDeviceColorWriteEnableFeaturesEXT\">VkPhysicalDeviceColorWriteEnableFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceCommandBufferInheritanceFeaturesNV\">VkPhysicalDeviceCommandBufferInheritanceFeaturesNV</a>, <a href=\"#VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR\">VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceConditionalRenderingFeaturesEXT\">VkPhysicalDeviceConditionalRenderingFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixFeaturesKHR\">VkPhysicalDeviceCooperativeMatrixFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixFeaturesNV\">VkPhysicalDeviceCooperativeMatrixFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCopyMemoryIndirectFeaturesNV\">VkPhysicalDeviceCopyMemoryIndirectFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCornerSampledImageFeaturesNV\">VkPhysicalDeviceCornerSampledImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCoverageReductionModeFeaturesNV\">VkPhysicalDeviceCoverageReductionModeFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCubicClampFeaturesQCOM\">VkPhysicalDeviceCubicClampFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceCubicWeightsFeaturesQCOM\">VkPhysicalDeviceCubicWeightsFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceCudaKernelLaunchFeaturesNV\">VkPhysicalDeviceCudaKernelLaunchFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCustomBorderColorFeaturesEXT\">VkPhysicalDeviceCustomBorderColorFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV\">VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDepthBiasControlFeaturesEXT\">VkPhysicalDeviceDepthBiasControlFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDepthClampControlFeaturesEXT\">VkPhysicalDeviceDepthClampControlFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDepthClampZeroOneFeaturesEXT\">VkPhysicalDeviceDepthClampZeroOneFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDepthClipControlFeaturesEXT\">VkPhysicalDeviceDepthClipControlFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDepthClipEnableFeaturesEXT\">VkPhysicalDeviceDepthClipEnableFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorBufferFeaturesEXT\">VkPhysicalDeviceDescriptorBufferFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>, <a href=\"#VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV\">VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE\">VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE</a>, <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV\">VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV\">VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDeviceMemoryReportFeaturesEXT\">VkPhysicalDeviceDeviceMemoryReportFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDiagnosticsConfigFeaturesNV\">VkPhysicalDeviceDiagnosticsConfigFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDisplacementMicromapFeaturesNV\">VkPhysicalDeviceDisplacementMicromapFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDynamicRenderingFeatures\">VkPhysicalDeviceDynamicRenderingFeatures</a>, <a href=\"#VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR\">VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT\">VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExclusiveScissorFeaturesNV\">VkPhysicalDeviceExclusiveScissorFeaturesNV</a>, <a href=\"#VkPhysicalDeviceExtendedDynamicState2FeaturesEXT\">VkPhysicalDeviceExtendedDynamicState2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExtendedDynamicState3FeaturesEXT\">VkPhysicalDeviceExtendedDynamicState3FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExtendedDynamicStateFeaturesEXT\">VkPhysicalDeviceExtendedDynamicStateFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV\">VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV</a>, <a href=\"#VkPhysicalDeviceExternalFormatResolveFeaturesANDROID\">VkPhysicalDeviceExternalFormatResolveFeaturesANDROID</a>, <a href=\"#VkPhysicalDeviceExternalMemoryRDMAFeaturesNV\">VkPhysicalDeviceExternalMemoryRDMAFeaturesNV</a>, <a href=\"#VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX\">VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX</a>, <a href=\"#VkPhysicalDeviceFaultFeaturesEXT\">VkPhysicalDeviceFaultFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMap2FeaturesEXT\">VkPhysicalDeviceFragmentDensityMap2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapFeaturesEXT\">VkPhysicalDeviceFragmentDensityMapFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM\">VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR\">VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT\">VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV\">VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRateFeaturesKHR\">VkPhysicalDeviceFragmentShadingRateFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceFrameBoundaryFeaturesEXT\">VkPhysicalDeviceFrameBoundaryFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR\">VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT\">VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceHostImageCopyFeaturesEXT\">VkPhysicalDeviceHostImageCopyFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceHostQueryResetFeatures\">VkPhysicalDeviceHostQueryResetFeatures</a>, <a href=\"#VkPhysicalDeviceImage2DViewOf3DFeaturesEXT\">VkPhysicalDeviceImage2DViewOf3DFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImageAlignmentControlFeaturesMESA\">VkPhysicalDeviceImageAlignmentControlFeaturesMESA</a>, <a href=\"#VkPhysicalDeviceImageCompressionControlFeaturesEXT\">VkPhysicalDeviceImageCompressionControlFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT\">VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImageProcessing2FeaturesQCOM\">VkPhysicalDeviceImageProcessing2FeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceImageProcessingFeaturesQCOM\">VkPhysicalDeviceImageProcessingFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceImageRobustnessFeatures\">VkPhysicalDeviceImageRobustnessFeatures</a>, <a href=\"#VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT\">VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImageViewMinLodFeaturesEXT\">VkPhysicalDeviceImageViewMinLodFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImagelessFramebufferFeatures\">VkPhysicalDeviceImagelessFramebufferFeatures</a>, <a href=\"#VkPhysicalDeviceIndexTypeUint8FeaturesKHR\">VkPhysicalDeviceIndexTypeUint8FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceInheritedViewportScissorFeaturesNV\">VkPhysicalDeviceInheritedViewportScissorFeaturesNV</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockFeatures\">VkPhysicalDeviceInlineUniformBlockFeatures</a>, <a href=\"#VkPhysicalDeviceInvocationMaskFeaturesHUAWEI\">VkPhysicalDeviceInvocationMaskFeaturesHUAWEI</a>, <a href=\"#VkPhysicalDeviceLegacyDitheringFeaturesEXT\">VkPhysicalDeviceLegacyDitheringFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT\">VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceLineRasterizationFeaturesKHR\">VkPhysicalDeviceLineRasterizationFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceLinearColorAttachmentFeaturesNV\">VkPhysicalDeviceLinearColorAttachmentFeaturesNV</a>, <a href=\"#VkPhysicalDeviceMaintenance4Features\">VkPhysicalDeviceMaintenance4Features</a>, <a href=\"#VkPhysicalDeviceMaintenance5FeaturesKHR\">VkPhysicalDeviceMaintenance5FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceMaintenance6FeaturesKHR\">VkPhysicalDeviceMaintenance6FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceMaintenance7FeaturesKHR\">VkPhysicalDeviceMaintenance7FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceMapMemoryPlacedFeaturesEXT\">VkPhysicalDeviceMapMemoryPlacedFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMemoryDecompressionFeaturesNV\">VkPhysicalDeviceMemoryDecompressionFeaturesNV</a>, <a href=\"#VkPhysicalDeviceMemoryPriorityFeaturesEXT\">VkPhysicalDeviceMemoryPriorityFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMeshShaderFeaturesEXT\">VkPhysicalDeviceMeshShaderFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMeshShaderFeaturesNV\">VkPhysicalDeviceMeshShaderFeaturesNV</a>, <a href=\"#VkPhysicalDeviceMultiDrawFeaturesEXT\">VkPhysicalDeviceMultiDrawFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT\">VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMultiviewFeatures\">VkPhysicalDeviceMultiviewFeatures</a>, <a href=\"#VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM\">VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM\">VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT\">VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceNestedCommandBufferFeaturesEXT\">VkPhysicalDeviceNestedCommandBufferFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT\">VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceOpacityMicromapFeaturesEXT\">VkPhysicalDeviceOpacityMicromapFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceOpticalFlowFeaturesNV\">VkPhysicalDeviceOpticalFlowFeaturesNV</a>, <a href=\"#VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT\">VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePerStageDescriptorSetFeaturesNV\">VkPhysicalDevicePerStageDescriptorSetFeaturesNV</a>, <a href=\"#VkPhysicalDevicePerformanceQueryFeaturesKHR\">VkPhysicalDevicePerformanceQueryFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePipelineBinaryFeaturesKHR\">VkPhysicalDevicePipelineBinaryFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePipelineCreationCacheControlFeatures\">VkPhysicalDevicePipelineCreationCacheControlFeatures</a>, <a href=\"#VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR\">VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT\">VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePipelinePropertiesFeaturesEXT\">VkPhysicalDevicePipelinePropertiesFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePipelineProtectedAccessFeaturesEXT\">VkPhysicalDevicePipelineProtectedAccessFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePipelineRobustnessFeaturesEXT\">VkPhysicalDevicePipelineRobustnessFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePresentBarrierFeaturesNV\">VkPhysicalDevicePresentBarrierFeaturesNV</a>, <a href=\"#VkPhysicalDevicePresentIdFeaturesKHR\">VkPhysicalDevicePresentIdFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePresentWaitFeaturesKHR\">VkPhysicalDevicePresentWaitFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT\">VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT\">VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePrivateDataFeatures\">VkPhysicalDevicePrivateDataFeatures</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryFeatures\">VkPhysicalDeviceProtectedMemoryFeatures</a>, <a href=\"#VkPhysicalDeviceProvokingVertexFeaturesEXT\">VkPhysicalDeviceProvokingVertexFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT\">VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT\">VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceRawAccessChainsFeaturesNV\">VkPhysicalDeviceRawAccessChainsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceRayQueryFeaturesKHR\">VkPhysicalDeviceRayQueryFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV\">VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV</a>, <a href=\"#VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR\">VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingMotionBlurFeaturesNV\">VkPhysicalDeviceRayTracingMotionBlurFeaturesNV</a>, <a href=\"#VkPhysicalDeviceRayTracingPipelineFeaturesKHR\">VkPhysicalDeviceRayTracingPipelineFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR\">VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingValidationFeaturesNV\">VkPhysicalDeviceRayTracingValidationFeaturesNV</a>, <a href=\"#VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG\">VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG</a>, <a href=\"#VkPhysicalDeviceRenderPassStripedFeaturesARM\">VkPhysicalDeviceRenderPassStripedFeaturesARM</a>, <a href=\"#VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV\">VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV</a>, <a href=\"#VkPhysicalDeviceRobustness2FeaturesEXT\">VkPhysicalDeviceRobustness2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceSamplerYcbcrConversionFeatures\">VkPhysicalDeviceSamplerYcbcrConversionFeatures</a>, <a href=\"#VkPhysicalDeviceScalarBlockLayoutFeatures\">VkPhysicalDeviceScalarBlockLayoutFeatures</a>, <a href=\"#VkPhysicalDeviceSchedulingControlsFeaturesARM\">VkPhysicalDeviceSchedulingControlsFeaturesARM</a>, <a href=\"#VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures\">VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures</a>, <a href=\"#VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV\">VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT\">VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderAtomicFloatFeaturesEXT\">VkPhysicalDeviceShaderAtomicFloatFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderAtomicInt64Features\">VkPhysicalDeviceShaderAtomicInt64Features</a>, <a href=\"#VkPhysicalDeviceShaderClockFeaturesKHR\">VkPhysicalDeviceShaderClockFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM\">VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM</a>, <a href=\"#VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures\">VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures</a>, <a href=\"#VkPhysicalDeviceShaderDrawParametersFeatures\">VkPhysicalDeviceShaderDrawParametersFeatures</a>, <a href=\"#VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD\">VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD</a>, <a href=\"#VkPhysicalDeviceShaderEnqueueFeaturesAMDX\">VkPhysicalDeviceShaderEnqueueFeaturesAMDX</a>, <a href=\"#VkPhysicalDeviceShaderExpectAssumeFeaturesKHR\">VkPhysicalDeviceShaderExpectAssumeFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderFloat16Int8Features\">VkPhysicalDeviceShaderFloat16Int8Features</a>, <a href=\"#VkPhysicalDeviceShaderFloatControls2FeaturesKHR\">VkPhysicalDeviceShaderFloatControls2FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT\">VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderImageFootprintFeaturesNV\">VkPhysicalDeviceShaderImageFootprintFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShaderIntegerDotProductFeatures\">VkPhysicalDeviceShaderIntegerDotProductFeatures</a>, <a href=\"#VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL\">VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL</a>, <a href=\"#VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR\">VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT\">VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderObjectFeaturesEXT\">VkPhysicalDeviceShaderObjectFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderQuadControlFeaturesKHR\">VkPhysicalDeviceShaderQuadControlFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR\">VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT\">VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderSMBuiltinsFeaturesNV\">VkPhysicalDeviceShaderSMBuiltinsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures\">VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures</a>, <a href=\"#VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR\">VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR\">VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderTerminateInvocationFeatures\">VkPhysicalDeviceShaderTerminateInvocationFeatures</a>, <a href=\"#VkPhysicalDeviceShaderTileImageFeaturesEXT\">VkPhysicalDeviceShaderTileImageFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShadingRateImageFeaturesNV\">VkPhysicalDeviceShadingRateImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceSubgroupSizeControlFeatures\">VkPhysicalDeviceSubgroupSizeControlFeatures</a>, <a href=\"#VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT\">VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceSubpassShadingFeaturesHUAWEI\">VkPhysicalDeviceSubpassShadingFeaturesHUAWEI</a>, <a href=\"#VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT\">VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceSynchronization2Features\">VkPhysicalDeviceSynchronization2Features</a>, <a href=\"#VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT\">VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceTextureCompressionASTCHDRFeatures\">VkPhysicalDeviceTextureCompressionASTCHDRFeatures</a>, <a href=\"#VkPhysicalDeviceTilePropertiesFeaturesQCOM\">VkPhysicalDeviceTilePropertiesFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceTimelineSemaphoreFeatures\">VkPhysicalDeviceTimelineSemaphoreFeatures</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackFeaturesEXT\">VkPhysicalDeviceTransformFeedbackFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceUniformBufferStandardLayoutFeatures\">VkPhysicalDeviceUniformBufferStandardLayoutFeatures</a>, <a href=\"#VkPhysicalDeviceVariablePointersFeatures\">VkPhysicalDeviceVariablePointersFeatures</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR\">VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT\">VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceVideoMaintenance1FeaturesKHR\">VkPhysicalDeviceVideoMaintenance1FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceVulkan11Features\">VkPhysicalDeviceVulkan11Features</a>, <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a>, <a href=\"#VkPhysicalDeviceVulkan13Features\">VkPhysicalDeviceVulkan13Features</a>, <a href=\"#VkPhysicalDeviceVulkanMemoryModelFeatures\">VkPhysicalDeviceVulkanMemoryModelFeatures</a>, <a href=\"#VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR\">VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT\">VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceYcbcrDegammaFeaturesQCOM\">VkPhysicalDeviceYcbcrDegammaFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceYcbcrImageArraysFeaturesEXT\">VkPhysicalDeviceYcbcrImageArraysFeaturesEXT</a>, or <a href=\"#VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures\">VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures</a>", "page": "vkspec" }, { @@ -13350,6 +13350,16 @@ "page": "vkspec" }, { + "vuid": "VUID-VkShaderCreateInfoEXT-flags-11005", + "text": "If <code>flags</code> includes <code>VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT</code>, then the <a href=\"#features-deviceGeneratedCommandsEXT\"><code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled", + "page": "vkspec" + }, + { + "vuid": "VUID-VkShaderCreateInfoEXT-flags-11006", + "text": "If <code>flags</code> includes <code>VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT</code>, then the identified entry point <strong class=\"purple\">must</strong> not specify <code>Xfb</code> execution mode", + "page": "vkspec" + }, + { "vuid": "VUID-VkShaderCreateInfoEXT-flags-08992", "text": "If <code>flags</code> includes <code>VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT</code>, <code>stage</code> <strong class=\"purple\">must</strong> be one of <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>, <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>, or <code>VK_SHADER_STAGE_COMPUTE_BIT</code>", "page": "vkspec" @@ -14681,6 +14691,11 @@ "page": "vkspec" }, { + "vuid": "VUID-VkComputePipelineCreateInfo-flags-11007", + "text": "If <code>flags</code> includes <code>VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT</code>, then the <a href=\"#features-deviceGeneratedCommandsEXT\"><code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled", + "page": "vkspec" + }, + { "vuid": "VUID-VkComputePipelineCreateInfo-pipelineCreationCacheControl-02875", "text": "If the <a href=\"#features-pipelineCreationCacheControl\"><code>pipelineCreationCacheControl</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT</code> or <code>VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT</code>", "page": "vkspec" @@ -15916,6 +15931,16 @@ "page": "vkspec" }, { + "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-11000", + "text": "If <code>flags</code> includes <code>VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT</code>, then the <a href=\"#features-deviceGeneratedCommandsEXT\"><code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-11001", + "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> and <code>flags</code> includes <code>VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT</code>, then all stages <strong class=\"purple\">must</strong> not specify <code>Xfb</code> execution mode", + "page": "vkspec" + }, + { "vuid": "VUID-VkGraphicsPipelineCreateInfo-pipelineCreationCacheControl-02878", "text": "If the <a href=\"#features-pipelineCreationCacheControl\"><code>pipelineCreationCacheControl</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT</code> or <code>VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT</code>", "page": "vkspec" @@ -17471,6 +17496,11 @@ "page": "vkspec" }, { + "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-11008", + "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT</code>", + "page": "vkspec" + }, + { "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pipelineCreationCacheControl-02905", "text": "If the <a href=\"#features-pipelineCreationCacheControl\"><code>pipelineCreationCacheControl</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT</code> or <code>VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT</code>", "page": "vkspec" @@ -17665,6 +17695,11 @@ "page": "vkspec" }, { + "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-11008", + "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT</code>", + "page": "vkspec" + }, + { "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pipelineCreationCacheControl-02905", "text": "If the <a href=\"#features-pipelineCreationCacheControl\"><code>pipelineCreationCacheControl</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT</code> or <code>VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT</code>", "page": "vkspec" @@ -20257,7 +20292,7 @@ }, { "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-01746", - "text": "The memory represented by <code>fd</code> <strong class=\"purple\">must</strong> have been created from a physical device and driver that is compatible with <code>device</code> and <code>handleType</code>, as described in <a href=\"#external-memory-handle-types-compatibility\">External memory handle types compatibility</a>", + "text": "The memory represented by <code>fd</code> <strong class=\"purple\">must</strong> have been created from a physical device and driver that is compatible with <code>device</code> and <code>handleType</code>, as described in <a href=\"#external-memory-handle-types-compatibility\">External Memory Handle Types Compatibility</a>", "page": "vkspec" }, { @@ -31493,7 +31528,7 @@ "core": [ { "vuid": "VUID-vkGetBufferOpaqueCaptureDescriptorDataEXT-None-08072", - "text": "The <a href=\"#features-descriptorBuffer\"><code>descriptorBufferCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled", + "text": "The <a href=\"#features-descriptorBufferCaptureReplay\"><code>descriptorBufferCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled", "page": "vkspec" }, { @@ -31551,7 +31586,7 @@ "core": [ { "vuid": "VUID-vkGetImageOpaqueCaptureDescriptorDataEXT-None-08076", - "text": "The <a href=\"#features-descriptorBuffer\"><code>descriptorBufferCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled", + "text": "The <a href=\"#features-descriptorBufferCaptureReplay\"><code>descriptorBufferCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled", "page": "vkspec" }, { @@ -31609,7 +31644,7 @@ "core": [ { "vuid": "VUID-vkGetImageViewOpaqueCaptureDescriptorDataEXT-None-08080", - "text": "The <a href=\"#features-descriptorBuffer\"><code>descriptorBufferCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled", + "text": "The <a href=\"#features-descriptorBufferCaptureReplay\"><code>descriptorBufferCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled", "page": "vkspec" }, { @@ -31667,7 +31702,7 @@ "core": [ { "vuid": "VUID-vkGetSamplerOpaqueCaptureDescriptorDataEXT-None-08084", - "text": "The <a href=\"#features-descriptorBuffer\"><code>descriptorBufferCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled", + "text": "The <a href=\"#features-descriptorBufferCaptureReplay\"><code>descriptorBufferCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled", "page": "vkspec" }, { @@ -31725,7 +31760,7 @@ "core": [ { "vuid": "VUID-vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT-None-08088", - "text": "The <a href=\"#features-descriptorBuffer\"><code>descriptorBufferCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled", + "text": "The <a href=\"#features-descriptorBufferCaptureReplay\"><code>descriptorBufferCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled", "page": "vkspec" }, { @@ -42944,17 +42979,12 @@ }, { "vuid": "VUID-vkCmdDraw-viewportCount-04138", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDraw-None-09232", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDraw-None-08636", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -42963,23 +42993,18 @@ "page": "vkspec" }, { - "vuid": "VUID-vkCmdDraw-viewportCount-04140", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { "vuid": "VUID-vkCmdDraw-shadingRateImage-09233", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDraw-shadingRateImage-09234", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDraw-None-08637", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -43493,6 +43518,11 @@ "page": "vkspec" }, { + "vuid": "VUID-vkCmdDraw-None-09650", + "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { "vuid": "VUID-vkCmdDraw-None-07640", "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" @@ -43624,12 +43654,12 @@ }, { "vuid": "VUID-vkCmdDraw-sampleLocationsPerPixel-07482", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", "page": "vkspec" }, { "vuid": "VUID-vkCmdDraw-sampleLocationsPerPixel-07483", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -43654,17 +43684,17 @@ }, { "vuid": "VUID-vkCmdDraw-sampleLocationsEnable-07936", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDraw-sampleLocationsEnable-07937", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDraw-sampleLocationsEnable-07938", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -43914,7 +43944,7 @@ }, { "vuid": "VUID-vkCmdDraw-pStrides-04913", - "text": "If the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT</code> dynamic state enabled, but without the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdBindVertexBuffers2EXT\">vkCmdBindVertexBuffers2EXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this draw command, and the <code>pStrides</code> parameter of <a href=\"#vkCmdBindVertexBuffers2EXT\">vkCmdBindVertexBuffers2EXT</a> <strong class=\"purple\">must</strong> not be <code>NULL</code>", + "text": "If the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE</code> dynamic state enabled, but without the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this draw command, and the <code>pStrides</code> parameter of <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> not be <code>NULL</code>", "page": "vkspec" }, { @@ -43949,7 +43979,7 @@ }, { "vuid": "VUID-vkCmdDraw-None-04875", - "text": "If there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage and the most recent call to <code>vkCmdSetPrimitiveTopology</code> in the current command buffer set <code>primitiveTopology</code> to <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPatchControlPointsEXT\">vkCmdSetPatchControlPointsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> stage or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>primitiveTopology</code> is <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, then <a href=\"#vkCmdSetPatchControlPointsEXT\">vkCmdSetPatchControlPointsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -44583,17 +44613,12 @@ }, { "vuid": "VUID-vkCmdDrawIndexed-viewportCount-04138", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawIndexed-None-09232", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexed-None-08636", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -44602,23 +44627,18 @@ "page": "vkspec" }, { - "vuid": "VUID-vkCmdDrawIndexed-viewportCount-04140", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { "vuid": "VUID-vkCmdDrawIndexed-shadingRateImage-09233", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexed-shadingRateImage-09234", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexed-None-08637", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -45132,6 +45152,11 @@ "page": "vkspec" }, { + "vuid": "VUID-vkCmdDrawIndexed-None-09650", + "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { "vuid": "VUID-vkCmdDrawIndexed-None-07640", "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" @@ -45263,12 +45288,12 @@ }, { "vuid": "VUID-vkCmdDrawIndexed-sampleLocationsPerPixel-07482", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexed-sampleLocationsPerPixel-07483", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -45293,17 +45318,17 @@ }, { "vuid": "VUID-vkCmdDrawIndexed-sampleLocationsEnable-07936", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexed-sampleLocationsEnable-07937", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexed-sampleLocationsEnable-07938", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -45553,7 +45578,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexed-pStrides-04913", - "text": "If the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT</code> dynamic state enabled, but without the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdBindVertexBuffers2EXT\">vkCmdBindVertexBuffers2EXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this draw command, and the <code>pStrides</code> parameter of <a href=\"#vkCmdBindVertexBuffers2EXT\">vkCmdBindVertexBuffers2EXT</a> <strong class=\"purple\">must</strong> not be <code>NULL</code>", + "text": "If the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE</code> dynamic state enabled, but without the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this draw command, and the <code>pStrides</code> parameter of <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> not be <code>NULL</code>", "page": "vkspec" }, { @@ -45588,7 +45613,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexed-None-04875", - "text": "If there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage and the most recent call to <code>vkCmdSetPrimitiveTopology</code> in the current command buffer set <code>primitiveTopology</code> to <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPatchControlPointsEXT\">vkCmdSetPatchControlPointsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> stage or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>primitiveTopology</code> is <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, then <a href=\"#vkCmdSetPatchControlPointsEXT\">vkCmdSetPatchControlPointsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -46232,17 +46257,12 @@ }, { "vuid": "VUID-vkCmdDrawMultiEXT-viewportCount-04138", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawMultiEXT-None-09232", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-08636", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -46251,23 +46271,18 @@ "page": "vkspec" }, { - "vuid": "VUID-vkCmdDrawMultiEXT-viewportCount-04140", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { "vuid": "VUID-vkCmdDrawMultiEXT-shadingRateImage-09233", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiEXT-shadingRateImage-09234", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-08637", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -46781,6 +46796,11 @@ "page": "vkspec" }, { + "vuid": "VUID-vkCmdDrawMultiEXT-None-09650", + "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { "vuid": "VUID-vkCmdDrawMultiEXT-None-07640", "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" @@ -46912,12 +46932,12 @@ }, { "vuid": "VUID-vkCmdDrawMultiEXT-sampleLocationsPerPixel-07482", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiEXT-sampleLocationsPerPixel-07483", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -46942,17 +46962,17 @@ }, { "vuid": "VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07936", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07937", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07938", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -47202,7 +47222,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiEXT-pStrides-04913", - "text": "If the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT</code> dynamic state enabled, but without the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdBindVertexBuffers2EXT\">vkCmdBindVertexBuffers2EXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this draw command, and the <code>pStrides</code> parameter of <a href=\"#vkCmdBindVertexBuffers2EXT\">vkCmdBindVertexBuffers2EXT</a> <strong class=\"purple\">must</strong> not be <code>NULL</code>", + "text": "If the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE</code> dynamic state enabled, but without the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this draw command, and the <code>pStrides</code> parameter of <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> not be <code>NULL</code>", "page": "vkspec" }, { @@ -47237,7 +47257,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-04875", - "text": "If there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage and the most recent call to <code>vkCmdSetPrimitiveTopology</code> in the current command buffer set <code>primitiveTopology</code> to <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPatchControlPointsEXT\">vkCmdSetPatchControlPointsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> stage or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>primitiveTopology</code> is <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, then <a href=\"#vkCmdSetPatchControlPointsEXT\">vkCmdSetPatchControlPointsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -47891,17 +47911,12 @@ }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-viewportCount-04138", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-09232", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08636", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -47910,23 +47925,18 @@ "page": "vkspec" }, { - "vuid": "VUID-vkCmdDrawMultiIndexedEXT-viewportCount-04140", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-shadingRateImage-09233", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-shadingRateImage-09234", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08637", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -48440,6 +48450,11 @@ "page": "vkspec" }, { + "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-09650", + "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07640", "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" @@ -48571,12 +48586,12 @@ }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsPerPixel-07482", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsPerPixel-07483", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -48601,17 +48616,17 @@ }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07936", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07937", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07938", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -48861,7 +48876,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-pStrides-04913", - "text": "If the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT</code> dynamic state enabled, but without the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdBindVertexBuffers2EXT\">vkCmdBindVertexBuffers2EXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this draw command, and the <code>pStrides</code> parameter of <a href=\"#vkCmdBindVertexBuffers2EXT\">vkCmdBindVertexBuffers2EXT</a> <strong class=\"purple\">must</strong> not be <code>NULL</code>", + "text": "If the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE</code> dynamic state enabled, but without the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this draw command, and the <code>pStrides</code> parameter of <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> not be <code>NULL</code>", "page": "vkspec" }, { @@ -48896,7 +48911,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-04875", - "text": "If there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage and the most recent call to <code>vkCmdSetPrimitiveTopology</code> in the current command buffer set <code>primitiveTopology</code> to <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPatchControlPointsEXT\">vkCmdSetPatchControlPointsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> stage or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>primitiveTopology</code> is <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, then <a href=\"#vkCmdSetPatchControlPointsEXT\">vkCmdSetPatchControlPointsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -49565,17 +49580,12 @@ }, { "vuid": "VUID-vkCmdDrawIndirect-viewportCount-04138", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawIndirect-None-09232", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirect-None-08636", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -49584,23 +49594,18 @@ "page": "vkspec" }, { - "vuid": "VUID-vkCmdDrawIndirect-viewportCount-04140", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { "vuid": "VUID-vkCmdDrawIndirect-shadingRateImage-09233", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirect-shadingRateImage-09234", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirect-None-08637", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -50114,6 +50119,11 @@ "page": "vkspec" }, { + "vuid": "VUID-vkCmdDrawIndirect-None-09650", + "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { "vuid": "VUID-vkCmdDrawIndirect-None-07640", "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" @@ -50245,12 +50255,12 @@ }, { "vuid": "VUID-vkCmdDrawIndirect-sampleLocationsPerPixel-07482", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirect-sampleLocationsPerPixel-07483", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -50275,17 +50285,17 @@ }, { "vuid": "VUID-vkCmdDrawIndirect-sampleLocationsEnable-07936", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirect-sampleLocationsEnable-07937", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirect-sampleLocationsEnable-07938", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -50520,7 +50530,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirect-pStrides-04913", - "text": "If the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT</code> dynamic state enabled, but without the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdBindVertexBuffers2EXT\">vkCmdBindVertexBuffers2EXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this draw command, and the <code>pStrides</code> parameter of <a href=\"#vkCmdBindVertexBuffers2EXT\">vkCmdBindVertexBuffers2EXT</a> <strong class=\"purple\">must</strong> not be <code>NULL</code>", + "text": "If the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE</code> dynamic state enabled, but without the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this draw command, and the <code>pStrides</code> parameter of <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> not be <code>NULL</code>", "page": "vkspec" }, { @@ -50555,7 +50565,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirect-None-04875", - "text": "If there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage and the most recent call to <code>vkCmdSetPrimitiveTopology</code> in the current command buffer set <code>primitiveTopology</code> to <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPatchControlPointsEXT\">vkCmdSetPatchControlPointsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> stage or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>primitiveTopology</code> is <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, then <a href=\"#vkCmdSetPatchControlPointsEXT\">vkCmdSetPatchControlPointsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -50673,11 +50683,6 @@ "page": "vkspec" }, { - "vuid": "VUID-VkDrawIndirectCommand-None-00500", - "text": "For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in <a href=\"#fxvertex-input\">Vertex Input Description</a>", - "page": "vkspec" - }, - { "vuid": "VUID-VkDrawIndirectCommand-firstInstance-00501", "text": "If the <a href=\"#features-drawIndirectFirstInstance\"><code>drawIndirectFirstInstance</code></a> feature is not enabled, <code>firstInstance</code> <strong class=\"purple\">must</strong> be <code>0</code>", "page": "vkspec" @@ -51258,17 +51263,12 @@ }, { "vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-04138", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawIndirectCount-None-09232", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-08636", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -51277,23 +51277,18 @@ "page": "vkspec" }, { - "vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-04140", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { "vuid": "VUID-vkCmdDrawIndirectCount-shadingRateImage-09233", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectCount-shadingRateImage-09234", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-08637", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -51807,6 +51802,11 @@ "page": "vkspec" }, { + "vuid": "VUID-vkCmdDrawIndirectCount-None-09650", + "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { "vuid": "VUID-vkCmdDrawIndirectCount-None-07640", "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" @@ -51938,12 +51938,12 @@ }, { "vuid": "VUID-vkCmdDrawIndirectCount-sampleLocationsPerPixel-07482", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectCount-sampleLocationsPerPixel-07483", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -51968,17 +51968,17 @@ }, { "vuid": "VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07936", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07937", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07938", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -52213,7 +52213,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectCount-pStrides-04913", - "text": "If the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT</code> dynamic state enabled, but without the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdBindVertexBuffers2EXT\">vkCmdBindVertexBuffers2EXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this draw command, and the <code>pStrides</code> parameter of <a href=\"#vkCmdBindVertexBuffers2EXT\">vkCmdBindVertexBuffers2EXT</a> <strong class=\"purple\">must</strong> not be <code>NULL</code>", + "text": "If the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE</code> dynamic state enabled, but without the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this draw command, and the <code>pStrides</code> parameter of <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> not be <code>NULL</code>", "page": "vkspec" }, { @@ -52248,7 +52248,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-04875", - "text": "If there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage and the most recent call to <code>vkCmdSetPrimitiveTopology</code> in the current command buffer set <code>primitiveTopology</code> to <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPatchControlPointsEXT\">vkCmdSetPatchControlPointsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> stage or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>primitiveTopology</code> is <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, then <a href=\"#vkCmdSetPatchControlPointsEXT\">vkCmdSetPatchControlPointsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -52957,17 +52957,12 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-04138", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawIndexedIndirect-None-09232", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08636", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -52976,23 +52971,18 @@ "page": "vkspec" }, { - "vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-04140", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { "vuid": "VUID-vkCmdDrawIndexedIndirect-shadingRateImage-09233", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-shadingRateImage-09234", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08637", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -53506,6 +53496,11 @@ "page": "vkspec" }, { + "vuid": "VUID-vkCmdDrawIndexedIndirect-None-09650", + "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07640", "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" @@ -53637,12 +53632,12 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsPerPixel-07482", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsPerPixel-07483", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -53667,17 +53662,17 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07936", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07937", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07938", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -53912,7 +53907,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-pStrides-04913", - "text": "If the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT</code> dynamic state enabled, but without the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdBindVertexBuffers2EXT\">vkCmdBindVertexBuffers2EXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this draw command, and the <code>pStrides</code> parameter of <a href=\"#vkCmdBindVertexBuffers2EXT\">vkCmdBindVertexBuffers2EXT</a> <strong class=\"purple\">must</strong> not be <code>NULL</code>", + "text": "If the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE</code> dynamic state enabled, but without the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this draw command, and the <code>pStrides</code> parameter of <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> not be <code>NULL</code>", "page": "vkspec" }, { @@ -53947,7 +53942,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-04875", - "text": "If there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage and the most recent call to <code>vkCmdSetPrimitiveTopology</code> in the current command buffer set <code>primitiveTopology</code> to <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPatchControlPointsEXT\">vkCmdSetPatchControlPointsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> stage or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>primitiveTopology</code> is <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, then <a href=\"#vkCmdSetPatchControlPointsEXT\">vkCmdSetPatchControlPointsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -54075,11 +54070,6 @@ "page": "vkspec" }, { - "vuid": "VUID-VkDrawIndexedIndirectCommand-None-00552", - "text": "For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in <a href=\"#fxvertex-input\">Vertex Input Description</a>", - "page": "vkspec" - }, - { "vuid": "VUID-VkDrawIndexedIndirectCommand-firstInstance-00554", "text": "If the <a href=\"#features-drawIndirectFirstInstance\"><code>drawIndirectFirstInstance</code></a> feature is not enabled, <code>firstInstance</code> <strong class=\"purple\">must</strong> be <code>0</code>", "page": "vkspec" @@ -54660,17 +54650,12 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04138", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-09232", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08636", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -54679,23 +54664,18 @@ "page": "vkspec" }, { - "vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04140", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-shadingRateImage-09233", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-shadingRateImage-09234", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08637", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -55209,6 +55189,11 @@ "page": "vkspec" }, { + "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-09650", + "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07640", "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" @@ -55340,12 +55325,12 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsPerPixel-07482", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsPerPixel-07483", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -55370,17 +55355,17 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07936", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07937", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07938", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -55615,7 +55600,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-pStrides-04913", - "text": "If the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT</code> dynamic state enabled, but without the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdBindVertexBuffers2EXT\">vkCmdBindVertexBuffers2EXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this draw command, and the <code>pStrides</code> parameter of <a href=\"#vkCmdBindVertexBuffers2EXT\">vkCmdBindVertexBuffers2EXT</a> <strong class=\"purple\">must</strong> not be <code>NULL</code>", + "text": "If the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE</code> dynamic state enabled, but without the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this draw command, and the <code>pStrides</code> parameter of <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> not be <code>NULL</code>", "page": "vkspec" }, { @@ -55650,7 +55635,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04875", - "text": "If there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage and the most recent call to <code>vkCmdSetPrimitiveTopology</code> in the current command buffer set <code>primitiveTopology</code> to <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPatchControlPointsEXT\">vkCmdSetPatchControlPointsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> stage or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>primitiveTopology</code> is <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, then <a href=\"#vkCmdSetPatchControlPointsEXT\">vkCmdSetPatchControlPointsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -56364,17 +56349,12 @@ }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04138", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-09232", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08636", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -56383,23 +56363,18 @@ "page": "vkspec" }, { - "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04140", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-shadingRateImage-09233", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-shadingRateImage-09234", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08637", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -56913,6 +56888,11 @@ "page": "vkspec" }, { + "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-09650", + "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07640", "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" @@ -57044,12 +57024,12 @@ }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsPerPixel-07482", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsPerPixel-07483", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -57074,17 +57054,17 @@ }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07936", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07937", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07938", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -57319,7 +57299,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-pStrides-04913", - "text": "If the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT</code> dynamic state enabled, but without the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdBindVertexBuffers2EXT\">vkCmdBindVertexBuffers2EXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this draw command, and the <code>pStrides</code> parameter of <a href=\"#vkCmdBindVertexBuffers2EXT\">vkCmdBindVertexBuffers2EXT</a> <strong class=\"purple\">must</strong> not be <code>NULL</code>", + "text": "If the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE</code> dynamic state enabled, but without the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this draw command, and the <code>pStrides</code> parameter of <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> not be <code>NULL</code>", "page": "vkspec" }, { @@ -57354,7 +57334,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-04875", - "text": "If there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage and the most recent call to <code>vkCmdSetPrimitiveTopology</code> in the current command buffer set <code>primitiveTopology</code> to <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPatchControlPointsEXT\">vkCmdSetPatchControlPointsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> stage or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>primitiveTopology</code> is <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, then <a href=\"#vkCmdSetPatchControlPointsEXT\">vkCmdSetPatchControlPointsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -58160,17 +58140,12 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-04138", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawMeshTasksNV-None-09232", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08636", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -58179,23 +58154,18 @@ "page": "vkspec" }, { - "vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-04140", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { "vuid": "VUID-vkCmdDrawMeshTasksNV-shadingRateImage-09233", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-shadingRateImage-09234", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08637", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -58709,6 +58679,11 @@ "page": "vkspec" }, { + "vuid": "VUID-vkCmdDrawMeshTasksNV-None-09650", + "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07640", "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" @@ -58840,12 +58815,12 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsPerPixel-07482", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsPerPixel-07483", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -58870,17 +58845,17 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07936", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07937", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07938", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -59719,17 +59694,12 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04138", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-09232", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08636", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -59738,23 +59708,18 @@ "page": "vkspec" }, { - "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04140", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-shadingRateImage-09233", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-shadingRateImage-09234", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08637", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -60268,6 +60233,11 @@ "page": "vkspec" }, { + "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-09650", + "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07640", "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" @@ -60399,12 +60369,12 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsPerPixel-07482", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsPerPixel-07483", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -60429,17 +60399,17 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07936", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07937", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07938", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -61337,17 +61307,12 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04138", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09232", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08636", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -61356,23 +61321,18 @@ "page": "vkspec" }, { - "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04140", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-shadingRateImage-09233", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-shadingRateImage-09234", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08637", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -61886,6 +61846,11 @@ "page": "vkspec" }, { + "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09650", + "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07640", "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" @@ -62017,12 +61982,12 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsPerPixel-07482", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsPerPixel-07483", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -62047,17 +62012,17 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07936", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07937", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07938", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -62976,17 +62941,12 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-viewportCount-04138", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-09232", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08636", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -62995,23 +62955,18 @@ "page": "vkspec" }, { - "vuid": "VUID-vkCmdDrawMeshTasksEXT-viewportCount-04140", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { "vuid": "VUID-vkCmdDrawMeshTasksEXT-shadingRateImage-09233", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-shadingRateImage-09234", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08637", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -63525,6 +63480,11 @@ "page": "vkspec" }, { + "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-09650", + "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07640", "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" @@ -63656,12 +63616,12 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-sampleLocationsPerPixel-07482", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-sampleLocationsPerPixel-07483", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -63686,17 +63646,17 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07936", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07937", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07938", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -64570,17 +64530,12 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-04138", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-09232", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08636", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -64589,23 +64544,18 @@ "page": "vkspec" }, { - "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-04140", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-shadingRateImage-09233", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-shadingRateImage-09234", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08637", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -65119,6 +65069,11 @@ "page": "vkspec" }, { + "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-09650", + "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07640", "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" @@ -65250,12 +65205,12 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsPerPixel-07482", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsPerPixel-07483", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -65280,17 +65235,17 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07936", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07937", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07938", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -66223,17 +66178,12 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-04138", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09232", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08636", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -66242,23 +66192,18 @@ "page": "vkspec" }, { - "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-04140", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-shadingRateImage-09233", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-shadingRateImage-09234", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08637", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -66772,6 +66717,11 @@ "page": "vkspec" }, { + "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09650", + "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07640", "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" @@ -66903,12 +66853,12 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsPerPixel-07482", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsPerPixel-07483", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -66933,17 +66883,17 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07936", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07937", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07938", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -67862,17 +67812,12 @@ }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-viewportCount-04138", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-09232", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08636", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -67881,23 +67826,18 @@ "page": "vkspec" }, { - "vuid": "VUID-vkCmdDrawClusterHUAWEI-viewportCount-04140", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { "vuid": "VUID-vkCmdDrawClusterHUAWEI-shadingRateImage-09233", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-shadingRateImage-09234", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08637", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -68411,6 +68351,11 @@ "page": "vkspec" }, { + "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-09650", + "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07640", "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" @@ -68542,12 +68487,12 @@ }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-sampleLocationsPerPixel-07482", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-sampleLocationsPerPixel-07483", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -68572,17 +68517,17 @@ }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07936", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07937", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07938", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -69436,17 +69381,12 @@ }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-04138", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-09232", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08636", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -69455,23 +69395,18 @@ "page": "vkspec" }, { - "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-04140", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-shadingRateImage-09233", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-shadingRateImage-09234", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08637", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -69985,6 +69920,11 @@ "page": "vkspec" }, { + "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-09650", + "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07640", "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" @@ -70116,12 +70056,12 @@ }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsPerPixel-07482", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsPerPixel-07483", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -70146,17 +70086,17 @@ }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07936", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07937", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07938", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -71702,7 +71642,7 @@ }, { "vuid": "VUID-VkPipelineViewportStateCreateInfo-pNext-pNext", - "text": "Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineViewportCoarseSampleOrderStateCreateInfoNV\">VkPipelineViewportCoarseSampleOrderStateCreateInfoNV</a>, <a href=\"#VkPipelineViewportDepthClipControlCreateInfoEXT\">VkPipelineViewportDepthClipControlCreateInfoEXT</a>, <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>, <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>, <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>, or <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>", + "text": "Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineViewportCoarseSampleOrderStateCreateInfoNV\">VkPipelineViewportCoarseSampleOrderStateCreateInfoNV</a>, <a href=\"#VkPipelineViewportDepthClampControlCreateInfoEXT\">VkPipelineViewportDepthClampControlCreateInfoEXT</a>, <a href=\"#VkPipelineViewportDepthClipControlCreateInfoEXT\">VkPipelineViewportDepthClipControlCreateInfoEXT</a>, <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>, <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>, <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>, or <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>", "page": "vkspec" }, { @@ -74200,6 +74140,88 @@ } ] }, + "VkPipelineViewportDepthClampControlCreateInfoEXT": { + "core": [ + { + "vuid": "VUID-VkPipelineViewportDepthClampControlCreateInfoEXT-pDepthClampRange-09646", + "text": "If <code>depthClampMode</code> is set to <code>VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT</code>, and the pipeline is not created with <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code>, then <code>pDepthClampRange</code> must be a valid pointer to a valid <code>VkDepthClampRangeEXT</code> structure.", + "page": "vkspec" + }, + { + "vuid": "VUID-VkPipelineViewportDepthClampControlCreateInfoEXT-sType-sType", + "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkPipelineViewportDepthClampControlCreateInfoEXT-depthClampMode-parameter", + "text": "<code>depthClampMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDepthClampModeEXT\">VkDepthClampModeEXT</a> value", + "page": "vkspec" + }, + { + "vuid": "VUID-VkPipelineViewportDepthClampControlCreateInfoEXT-pDepthClampRange-parameter", + "text": "If <code>pDepthClampRange</code> is not <code>NULL</code>, <code>pDepthClampRange</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDepthClampRangeEXT\">VkDepthClampRangeEXT</a> structure", + "page": "vkspec" + } + ] + }, + "vkCmdSetDepthClampRangeEXT": { + "core": [ + { + "vuid": "VUID-vkCmdSetDepthClampRangeEXT-pDepthClampRange-09647", + "text": "If <code>depthClampMode</code> is set to <code>VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT</code>, then <code>pDepthClampRange</code> must be a valid pointer to a valid <code>VkDepthClampRangeEXT</code> structure.", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdSetDepthClampRangeEXT-commandBuffer-parameter", + "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdSetDepthClampRangeEXT-depthClampMode-parameter", + "text": "<code>depthClampMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDepthClampModeEXT\">VkDepthClampModeEXT</a> value", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdSetDepthClampRangeEXT-pDepthClampRange-parameter", + "text": "If <code>pDepthClampRange</code> is not <code>NULL</code>, <code>pDepthClampRange</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDepthClampRangeEXT\">VkDepthClampRangeEXT</a> structure", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdSetDepthClampRangeEXT-commandBuffer-recording", + "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdSetDepthClampRangeEXT-commandBuffer-cmdpool", + "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdSetDepthClampRangeEXT-videocoding", + "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope", + "page": "vkspec" + } + ] + }, + "VkDepthClampRangeEXT": { + "core": [ + { + "vuid": "VUID-VkDepthClampRangeEXT-pDepthClampRange-00999", + "text": "<code>minDepthClamp</code> <strong class=\"purple\">must</strong> be less than or equal to <code>maxDepthClamp</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkDepthClampRangeEXT-pDepthClampRange-09648", + "text": "If the <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is not enabled, <code>minDepthClamp</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>0.0</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkDepthClampRangeEXT-pDepthClampRange-09649", + "text": "If the <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is not enabled, <code>maxDepthClamp</code> <strong class=\"purple\">must</strong> be less than or equal to <code>1.0</code>", + "page": "vkspec" + } + ] + }, "vkCmdSetDepthTestEnable": { "core": [ { @@ -76962,6 +76984,248 @@ } ] }, + "vkCreateIndirectCommandsLayoutEXT": { + "core": [ + { + "vuid": "VUID-vkCreateIndirectCommandsLayoutEXT-deviceGeneratedCommands-11089", + "text": "The <a href=\"#features-deviceGeneratedCommandsEXT\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCreateIndirectCommandsLayoutEXT-device-parameter", + "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCreateIndirectCommandsLayoutEXT-pCreateInfo-parameter", + "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkIndirectCommandsLayoutCreateInfoEXT\">VkIndirectCommandsLayoutCreateInfoEXT</a> structure", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCreateIndirectCommandsLayoutEXT-pAllocator-parameter", + "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCreateIndirectCommandsLayoutEXT-pIndirectCommandsLayout-parameter", + "text": "<code>pIndirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkIndirectCommandsLayoutEXT\">VkIndirectCommandsLayoutEXT</a> handle", + "page": "vkspec" + } + ] + }, + "VkIndirectCommandsLayoutCreateInfoEXT": { + "core": [ + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-indirectStride-11090", + "text": "<code>indirectStride</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>maxIndirectCommandsIndirectStride</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-11091", + "text": "<code>shaderStages</code> <strong class=\"purple\">must</strong> only contain stages supported by <a href=\"#limits-supportedIndirectCommandsShaderStages\"><a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>supportedIndirectCommandsShaderStages</code></a>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-tokenCount-11092", + "text": "<code>tokenCount</code> <strong class=\"purple\">must</strong> less than or equal to <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>maxIndirectCommandsTokenCount</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11093", + "text": "The number of tokens in the <code>pTokens</code> array with <code>type</code> equal to <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code> <strong class=\"purple\">must</strong> be less than or equal to <code>1</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11145", + "text": "The number of tokens in the <code>pTokens</code> array with <code>type</code> equal to <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT</code> <strong class=\"purple\">must</strong> be less than or equal to <code>1</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11094", + "text": "The number of tokens in the <code>pTokens</code> array with <code>type</code> equal to <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT</code> <strong class=\"purple\">must</strong> be less than or equal to <code>1</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11095", + "text": "If the action command token in the <code>pTokens</code> array is not an indexed draw token, then <code>pTokens</code> <strong class=\"purple\">must</strong> not contain a member with <code>type</code> set to <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11096", + "text": "If the action command token in the <code>pTokens</code> array is not a non-mesh draw token, then <code>pTokens</code> <strong class=\"purple\">must</strong> not contain a member with <code>type</code> set to <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11097", + "text": "If the <code>pTokens</code> array contains multiple tokens with <code>type</code> equal to <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT</code>, then there <strong class=\"purple\">must</strong> be no duplicate <a href=\"#VkIndirectCommandsVertexBufferTokenEXT\">VkIndirectCommandsVertexBufferTokenEXT</a>::<code>vertexBindingUnit</code> values", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11099", + "text": "For all <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT</code> and <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT</code> type tokens in <code>pTokens</code>, there <strong class=\"purple\">must</strong> be no overlapping ranges between any specified push constant ranges", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11100", + "text": "The action command token <strong class=\"purple\">must</strong> be the last token in the <code>pTokens</code> array", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11139", + "text": "If the <code>pTokens</code> array contains a <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code> token, then this token <strong class=\"purple\">must</strong> be the first token in the array", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11101", + "text": "For any element of <code>pTokens</code>, if <code>type</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT</code> or <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT</code> and the <a href=\"#features-dynamicGeneratedPipelineLayout\"><code>dynamicGeneratedPipelineLayout</code></a> is not enabled, then the <code>pipelineLayout</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11102", + "text": "For any element of <code>pTokens</code>, if <code>type</code> is either <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT</code> or <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT</code> and <code>pipelineLayout</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a> struct", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11103", + "text": "For any element of <code>pTokens</code>, the <code>offset</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>offset</code> member of the previous tokens", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11104", + "text": "For any element of <code>pTokens</code>, if <code>type</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT</code>, or <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT</code>, then <code>shaderStages</code> <strong class=\"purple\">must</strong> contain graphics stages", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11105", + "text": "For any element of <code>pTokens</code>, if <code>type</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT</code>, then <code>shaderStages</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_COMPUTE_BIT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11106", + "text": "For any element of <code>pTokens</code>, if <code>type</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT</code> or <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT</code>, then <code>shaderStages</code> <strong class=\"purple\">must</strong> contain <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11107", + "text": "For any element of <code>pTokens</code>, if <code>type</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT</code> or <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT</code>, then the <code>shaderStages</code> <strong class=\"purple\">must</strong> contain <code>VK_SHADER_STAGE_MESH_BIT_NV</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11108", + "text": "For any element of <code>pTokens</code>, if <code>type</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT</code>, then <code>shaderStages</code> <strong class=\"purple\">must</strong> contain ray tracing stages", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-11109", + "text": "If <code>shaderStages</code> contains graphics stages then the state tokens in <code>pTokens</code> <strong class=\"purple\">must</strong> not include <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-11110", + "text": "If <code>shaderStages</code> is <code>VK_SHADER_STAGE_COMPUTE_BIT</code> then the state tokens in <code>pTokens</code> <strong class=\"purple\">must</strong> only include <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT</code>, or <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-11111", + "text": "If <code>shaderStages</code> contains ray tracing stages then the state tokens in <code>pTokens</code> <strong class=\"purple\">must</strong> only include <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT</code>, or <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-11112", + "text": "The <code>shaderStages</code> <strong class=\"purple\">must</strong> only contain stages from one of the following:<div class=\"ulist\">\n<ul>\n<li>\n<p>graphics stages</p>\n</li>\n<li>\n<p><code>VK_SHADER_STAGE_COMPUTE_BIT</code></p>\n</li>\n<li>\n<p>mesh stages and <code>VK_SHADER_STAGE_FRAGMENT_BIT</code></p>\n</li>\n<li>\n<p>ray tracing stages</p>\n</li>\n</ul>\n</div>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-11113", + "text": "If <code>shaderStages</code> contains <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>, then <code>shaderStages</code> <strong class=\"purple\">must</strong> also contain <code>VK_SHADER_STAGE_VERTEX_BIT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-sType-sType", + "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pNext-pNext", + "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-sType-unique", + "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-flags-parameter", + "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkIndirectCommandsLayoutUsageFlagBitsEXT\">VkIndirectCommandsLayoutUsageFlagBitsEXT</a> values", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-parameter", + "text": "<code>shaderStages</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-requiredbitmask", + "text": "<code>shaderStages</code> <strong class=\"purple\">must</strong> not be <code>0</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pipelineLayout-parameter", + "text": "If <code>pipelineLayout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-parameter", + "text": "<code>pTokens</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tokenCount</code> valid <a href=\"#VkIndirectCommandsLayoutTokenEXT\">VkIndirectCommandsLayoutTokenEXT</a> structures", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-tokenCount-arraylength", + "text": "<code>tokenCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>", + "page": "vkspec" + } + ] + }, + "vkDestroyIndirectCommandsLayoutEXT": { + "core": [ + { + "vuid": "VUID-vkDestroyIndirectCommandsLayoutEXT-indirectCommandsLayout-11114", + "text": "All submitted commands that refer to <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> have completed execution", + "page": "vkspec" + }, + { + "vuid": "VUID-vkDestroyIndirectCommandsLayoutEXT-indirectCommandsLayout-11115", + "text": "If <code>VkAllocationCallbacks</code> were provided when <code>indirectCommandsLayout</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here", + "page": "vkspec" + }, + { + "vuid": "VUID-vkDestroyIndirectCommandsLayoutEXT-indirectCommandsLayout-11116", + "text": "If no <code>VkAllocationCallbacks</code> were provided when <code>indirectCommandsLayout</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkDestroyIndirectCommandsLayoutEXT-device-parameter", + "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle", + "page": "vkspec" + }, + { + "vuid": "VUID-vkDestroyIndirectCommandsLayoutEXT-indirectCommandsLayout-parameter", + "text": "If <code>indirectCommandsLayout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsLayoutEXT\">VkIndirectCommandsLayoutEXT</a> handle", + "page": "vkspec" + }, + { + "vuid": "VUID-vkDestroyIndirectCommandsLayoutEXT-pAllocator-parameter", + "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure", + "page": "vkspec" + }, + { + "vuid": "VUID-vkDestroyIndirectCommandsLayoutEXT-indirectCommandsLayout-parent", + "text": "If <code>indirectCommandsLayout</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>", + "page": "vkspec" + } + ] + }, "vkCreateIndirectCommandsLayoutNV": { "core": [ { @@ -77139,6 +77403,58 @@ } ] }, + "VkBindIndexBufferIndirectCommandEXT": { + "core": [ + { + "vuid": "VUID-VkBindIndexBufferIndirectCommandEXT-None-11117", + "text": "The buffer’s usage flags from which the address was acquired <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_INDEX_BUFFER_BIT</code> bit set", + "page": "vkspec" + }, + { + "vuid": "VUID-VkBindIndexBufferIndirectCommandEXT-bufferAddress-11118", + "text": "The <code>bufferAddress</code> <strong class=\"purple\">must</strong> be aligned to the <a href=\"#VkIndexType\">VkIndexType</a> of the <code>indexType</code> used", + "page": "vkspec" + }, + { + "vuid": "VUID-VkBindIndexBufferIndirectCommandEXT-None-11119", + "text": "Each element of the buffer from which the address was acquired and that is non-sparse <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object", + "page": "vkspec" + }, + { + "vuid": "VUID-VkBindIndexBufferIndirectCommandEXT-indexType-parameter", + "text": "<code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value", + "page": "vkspec" + } + ] + }, + "VkBindVertexBufferIndirectCommandEXT": { + "core": [ + { + "vuid": "VUID-VkBindVertexBufferIndirectCommandEXT-None-11120", + "text": "The buffer’s usage flag from which the address was acquired <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_VERTEX_BUFFER_BIT</code> bit set", + "page": "vkspec" + }, + { + "vuid": "VUID-VkBindVertexBufferIndirectCommandEXT-None-11121", + "text": "Each element of the buffer from which the address was acquired and that is non-sparse <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object", + "page": "vkspec" + } + ] + }, + "VkDrawIndirectCountIndirectCommandEXT": { + "core": [ + { + "vuid": "VUID-VkDrawIndirectCountIndirectCommandEXT-None-11122", + "text": "The buffer’s usage flag from which the address was acquired <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set", + "page": "vkspec" + }, + { + "vuid": "VUID-VkDrawIndirectCountIndirectCommandEXT-None-11123", + "text": "Each element of the buffer from which the address was acquired and that is non-sparse <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object", + "page": "vkspec" + } + ] + }, "VkIndirectCommandsStreamNV": { "core": [ { @@ -77239,6 +77555,146 @@ } ] }, + "VkIndirectCommandsLayoutTokenEXT": { + "core": [ + { + "vuid": "VUID-VkIndirectCommandsLayoutTokenEXT-offset-11124", + "text": "<code>offset</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>maxIndirectCommandsTokenOffset</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutTokenEXT-offset-11125", + "text": "<code>offset</code> <strong class=\"purple\">must</strong> be aligned to <code>4</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutTokenEXT-meshShader-11126", + "text": "If <a href=\"#features-meshShader\"><code>meshShader</code></a> or <a href=\"#features-taskShader\"><code>taskShader</code></a> are not enabled, <code>type</code> <strong class=\"purple\">must</strong> not be <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT</code> <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT</code> or <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutTokenEXT-rayTracingMaintenance1-11128", + "text": "If <a href=\"#features-rayTracingMaintenance1\"><code>rayTracingMaintenance1</code></a> is not enabled, <code>type</code> <strong class=\"purple\">must</strong> not be <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutTokenEXT-deviceGeneratedCommandsMultiDrawIndirectCount-11129", + "text": "If <a href=\"#limits-deviceGeneratedCommandsMultiDrawIndirectCount\"><a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>deviceGeneratedCommandsMultiDrawIndirectCount</code></a> is not supported, <code>type</code> <strong class=\"purple\">must</strong> not be <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT</code> or <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutTokenEXT-deviceGeneratedCommandsMultiDrawIndirectCount-11130", + "text": "If <a href=\"#limits-deviceGeneratedCommandsMultiDrawIndirectCount\"><a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>deviceGeneratedCommandsMultiDrawIndirectCount</code></a> is not supported, <code>type</code> <strong class=\"purple\">must</strong> not be <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutTokenEXT-deviceGeneratedCommandsMultiDrawIndirectCount-11131", + "text": "If <a href=\"#limits-deviceGeneratedCommandsMultiDrawIndirectCount\"><a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>deviceGeneratedCommandsMultiDrawIndirectCount</code></a> is not supported, <code>type</code> <strong class=\"purple\">must</strong> not be <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutTokenEXT-sType-sType", + "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutTokenEXT-type-parameter", + "text": "<code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsTokenTypeEXT\">VkIndirectCommandsTokenTypeEXT</a> value", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutTokenEXT-pPushConstant-parameter", + "text": "If <code>type</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT</code>, the <code>pPushConstant</code> member of <code>data</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkIndirectCommandsPushConstantTokenEXT\">VkIndirectCommandsPushConstantTokenEXT</a> structure", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutTokenEXT-pVertexBuffer-parameter", + "text": "If <code>type</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT</code>, the <code>pVertexBuffer</code> member of <code>data</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkIndirectCommandsVertexBufferTokenEXT\">VkIndirectCommandsVertexBufferTokenEXT</a> structure", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutTokenEXT-pIndexBuffer-parameter", + "text": "If <code>type</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT</code>, the <code>pIndexBuffer</code> member of <code>data</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkIndirectCommandsIndexBufferTokenEXT\">VkIndirectCommandsIndexBufferTokenEXT</a> structure", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsLayoutTokenEXT-pExecutionSet-parameter", + "text": "If <code>type</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code>, the <code>pExecutionSet</code> member of <code>data</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkIndirectCommandsExecutionSetTokenEXT\">VkIndirectCommandsExecutionSetTokenEXT</a> structure", + "page": "vkspec" + } + ] + }, + "VkIndirectCommandsPushConstantTokenEXT": { + "core": [ + { + "vuid": "VUID-VkIndirectCommandsPushConstantTokenEXT-updateRange-11132", + "text": "<code>updateRange</code> <strong class=\"purple\">must</strong> be contained within the push constant info used by <a href=\"#VkIndirectCommandsLayoutCreateInfoEXT\">VkIndirectCommandsLayoutCreateInfoEXT</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsPushConstantTokenEXT-size-11133", + "text": "If the token type is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT</code>, the <code>size</code> member of <code>updateRange</code> <strong class=\"purple\">must</strong> be 4", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsPushConstantTokenEXT-updateRange-parameter", + "text": "<code>updateRange</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> structure", + "page": "vkspec" + } + ] + }, + "VkIndirectCommandsVertexBufferTokenEXT": { + "core": [ + { + "vuid": "VUID-VkIndirectCommandsVertexBufferTokenEXT-vertexBindingUnit-11134", + "text": "<code>vertexBindingUnit</code> <strong class=\"purple\">must</strong> be less than the total number of vertex input bindings in use by the current graphics state.", + "page": "vkspec" + } + ] + }, + "VkIndirectCommandsIndexBufferTokenEXT": { + "core": [ + { + "vuid": "VUID-VkIndirectCommandsIndexBufferTokenEXT-mode-11135", + "text": "<code>mode</code> <strong class=\"purple\">must</strong> be non-zero", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsIndexBufferTokenEXT-mode-11136", + "text": "<code>mode</code> <strong class=\"purple\">must</strong> be one of the bits supported in <a href=\"#limits-supportedIndirectCommandsInputModes\"><a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>supportedIndirectCommandsInputModes</code></a>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsIndexBufferTokenEXT-mode-parameter", + "text": "<code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsInputModeFlagBitsEXT\">VkIndirectCommandsInputModeFlagBitsEXT</a> value", + "page": "vkspec" + } + ] + }, + "VkIndirectCommandsExecutionSetTokenEXT": { + "core": [ + { + "vuid": "VUID-VkIndirectCommandsExecutionSetTokenEXT-shaderStages-11137", + "text": "Each bit in <code>shaderStages</code> <strong class=\"purple\">must</strong> be supported by <a href=\"#limits-supportedIndirectCommandsShaderStagesPipelineBinding\"><a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>supportedIndirectCommandsShaderStagesPipelineBinding</code></a> or <a href=\"#limits-supportedIndirectCommandsShaderStagesShaderBinding\"><a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>supportedIndirectCommandsShaderStagesShaderBinding</code></a>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsExecutionSetTokenEXT-type-parameter", + "text": "<code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectExecutionSetInfoTypeEXT\">VkIndirectExecutionSetInfoTypeEXT</a> value", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsExecutionSetTokenEXT-shaderStages-parameter", + "text": "<code>shaderStages</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectCommandsExecutionSetTokenEXT-shaderStages-requiredbitmask", + "text": "<code>shaderStages</code> <strong class=\"purple\">must</strong> not be <code>0</code>", + "page": "vkspec" + } + ] + }, "VkIndirectCommandsLayoutTokenNV": { "core": [ { @@ -77343,6 +77799,127 @@ } ] }, + "vkGetGeneratedCommandsMemoryRequirementsEXT": { + "core": [ + { + "vuid": "VUID-vkGetGeneratedCommandsMemoryRequirementsEXT-device-parameter", + "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle", + "page": "vkspec" + }, + { + "vuid": "VUID-vkGetGeneratedCommandsMemoryRequirementsEXT-pInfo-parameter", + "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkGeneratedCommandsMemoryRequirementsInfoEXT\">VkGeneratedCommandsMemoryRequirementsInfoEXT</a> structure", + "page": "vkspec" + }, + { + "vuid": "VUID-vkGetGeneratedCommandsMemoryRequirementsEXT-pMemoryRequirements-parameter", + "text": "<code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements2\">VkMemoryRequirements2</a> structure", + "page": "vkspec" + } + ] + }, + "VkGeneratedCommandsMemoryRequirementsInfoEXT": { + "core": [ + { + "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-maxSequencesCount-11009", + "text": "<code>maxSequencesCount</code> <strong class=\"purple\">must</strong> be less or equal to <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>maxIndirectSequenceCount</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-indirectCommandsLayout-11010", + "text": "If <code>indirectCommandsLayout</code> was created with a token sequence that contained the <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code> token, <code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-indirectCommandsLayout-11151", + "text": "If <code>indirectCommandsLayout</code> was created with a token sequence that contained the <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code> token, the shader stages used to create the initial shader state of <code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> equal the <a href=\"#VkIndirectCommandsExecutionSetTokenEXT\">VkIndirectCommandsExecutionSetTokenEXT</a>::<code>shaderStages</code> used to create <code>indirectCommandsLayout</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-indirectCommandsLayout-11011", + "text": "If <code>indirectCommandsLayout</code> was not created with a token sequence that contained the <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code> token, <code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-maxDrawCount-11146", + "text": "When not ignored, <span class=\"eq\"><code>maxDrawCount</code> × <code>maxSequenceCount</code></span> <strong class=\"purple\">must</strong> be less than <span class=\"eq\">2^24</span>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-indirectExecutionSet-11012", + "text": "If <code>indirectExecutionSet</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, either a <a href=\"#VkGeneratedCommandsPipelineInfoEXT\">VkGeneratedCommandsPipelineInfoEXT</a> or a <a href=\"#VkGeneratedCommandsShaderInfoEXT\">VkGeneratedCommandsShaderInfoEXT</a> <strong class=\"purple\">must</strong> be included in the <code>pNext</code> chain", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-sType-sType", + "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-pNext-pNext", + "text": "Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkGeneratedCommandsPipelineInfoEXT\">VkGeneratedCommandsPipelineInfoEXT</a> or <a href=\"#VkGeneratedCommandsShaderInfoEXT\">VkGeneratedCommandsShaderInfoEXT</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-sType-unique", + "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-indirectExecutionSet-parameter", + "text": "If <code>indirectExecutionSet</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectExecutionSetEXT\">VkIndirectExecutionSetEXT</a> handle", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-indirectCommandsLayout-parameter", + "text": "<code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsLayoutEXT\">VkIndirectCommandsLayoutEXT</a> handle", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-commonparent", + "text": "Both of <code>indirectCommandsLayout</code>, and <code>indirectExecutionSet</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>", + "page": "vkspec" + } + ] + }, + "VkGeneratedCommandsPipelineInfoEXT": { + "core": [ + { + "vuid": "VUID-VkGeneratedCommandsPipelineInfoEXT-sType-sType", + "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsPipelineInfoEXT-pipeline-parameter", + "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle", + "page": "vkspec" + } + ] + }, + "VkGeneratedCommandsShaderInfoEXT": { + "core": [ + { + "vuid": "VUID-VkGeneratedCommandsShaderInfoEXT-pShaders-11127", + "text": "<code>pShaders</code> <strong class=\"purple\">must</strong> not contain more than one shader object for a given <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> stage", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsShaderInfoEXT-sType-sType", + "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsShaderInfoEXT-pShaders-parameter", + "text": "<code>pShaders</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>shaderCount</code> valid <a href=\"#VkShaderEXT\">VkShaderEXT</a> handles", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsShaderInfoEXT-shaderCount-arraylength", + "text": "<code>shaderCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>", + "page": "vkspec" + } + ] + }, "vkGetGeneratedCommandsMemoryRequirementsNV": { "core": [ { @@ -77513,6 +78090,441 @@ } ] }, + "vkCreateIndirectExecutionSetEXT": { + "core": [ + { + "vuid": "VUID-vkCreateIndirectExecutionSetEXT-deviceGeneratedCommands-11013", + "text": "The <a href=\"#features-deviceGeneratedCommandsEXT\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCreateIndirectExecutionSetEXT-device-parameter", + "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCreateIndirectExecutionSetEXT-pCreateInfo-parameter", + "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkIndirectExecutionSetCreateInfoEXT\">VkIndirectExecutionSetCreateInfoEXT</a> structure", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCreateIndirectExecutionSetEXT-pAllocator-parameter", + "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCreateIndirectExecutionSetEXT-pIndirectExecutionSet-parameter", + "text": "<code>pIndirectExecutionSet</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkIndirectExecutionSetEXT\">VkIndirectExecutionSetEXT</a> handle", + "page": "vkspec" + } + ] + }, + "VkIndirectExecutionSetCreateInfoEXT": { + "core": [ + { + "vuid": "VUID-VkIndirectExecutionSetCreateInfoEXT-maxIndirectShaderObjectCount-11014", + "text": "If <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</code>::<code>maxIndirectShaderObjectCount</code> is zero or <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is not enabled <code>type</code> <strong class=\"purple\">must</strong> not be <code>VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectExecutionSetCreateInfoEXT-sType-sType", + "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectExecutionSetCreateInfoEXT-type-parameter", + "text": "<code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectExecutionSetInfoTypeEXT\">VkIndirectExecutionSetInfoTypeEXT</a> value", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectExecutionSetCreateInfoEXT-pPipelineInfo-parameter", + "text": "If <code>type</code> is <code>VK_INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT</code>, the <code>pPipelineInfo</code> member of <code>info</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkIndirectExecutionSetPipelineInfoEXT\">VkIndirectExecutionSetPipelineInfoEXT</a> structure", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectExecutionSetCreateInfoEXT-pShaderInfo-parameter", + "text": "If <code>type</code> is <code>VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT</code>, the <code>pShaderInfo</code> member of <code>info</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkIndirectExecutionSetShaderInfoEXT\">VkIndirectExecutionSetShaderInfoEXT</a> structure", + "page": "vkspec" + } + ] + }, + "VkIndirectExecutionSetPipelineInfoEXT": { + "core": [ + { + "vuid": "VUID-VkIndirectExecutionSetPipelineInfoEXT-supportedIndirectCommandsShaderStagesPipelineBinding-11015", + "text": "If <a href=\"#limits-supportedIndirectCommandsShaderStagesPipelineBinding\"><a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>supportedIndirectCommandsShaderStagesPipelineBinding</code></a> does not contain <code>VK_SHADER_STAGE_COMPUTE_BIT</code>, the <code>VkPipelineBindPoint</code> of <code>initialPipeline</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectExecutionSetPipelineInfoEXT-supportedIndirectCommandsShaderStagesPipelineBinding-11016", + "text": "If <a href=\"#limits-supportedIndirectCommandsShaderStagesPipelineBinding\"><a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>supportedIndirectCommandsShaderStagesPipelineBinding</code></a> does not contain <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>, the <code>VkPipelineBindPoint</code> of <code>initialPipeline</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectExecutionSetPipelineInfoEXT-supportedIndirectCommandsShaderStagesPipelineBinding-11017", + "text": "If <a href=\"#limits-supportedIndirectCommandsShaderStagesPipelineBinding\"><a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>supportedIndirectCommandsShaderStagesPipelineBinding</code></a> does not contain ray tracing stages, the <code>VkPipelineBindPoint</code> of <code>initialPipeline</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectExecutionSetPipelineInfoEXT-maxPipelineCount-11018", + "text": "<code>maxPipelineCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</code>::<code>maxIndirectPipelineCount</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectExecutionSetPipelineInfoEXT-initialPipeline-11019", + "text": "<code>initialPipeline</code> <strong class=\"purple\">must</strong> not use descriptors of type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectExecutionSetPipelineInfoEXT-initialPipeline-11153", + "text": "<code>initialPipeline</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectExecutionSetPipelineInfoEXT-sType-sType", + "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectExecutionSetPipelineInfoEXT-initialPipeline-parameter", + "text": "<code>initialPipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle", + "page": "vkspec" + } + ] + }, + "VkIndirectExecutionSetShaderInfoEXT": { + "core": [ + { + "vuid": "VUID-VkIndirectExecutionSetShaderInfoEXT-pInitialShaders-11020", + "text": "All members of <code>pInitialShaders</code> <strong class=\"purple\">must</strong> have a <code>stage</code> supported by <a href=\"#limits-supportedIndirectCommandsShaderStagesShaderBinding\"><a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>supportedIndirectCommandsShaderStagesShaderBinding</code></a>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectExecutionSetShaderInfoEXT-maxShaderCount-11021", + "text": "<code>maxShaderCount</code> <strong class=\"purple\">must</strong> not be zero", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectExecutionSetShaderInfoEXT-maxShaderCount-11022", + "text": "<code>maxShaderCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</code>::<code>maxIndirectShaderObjectCount</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectExecutionSetShaderInfoEXT-maxShaderCount-11036", + "text": "<code>maxShaderCount</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>shaderCount</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectExecutionSetShaderInfoEXT-stage-11023", + "text": "The <code>stage</code> of each element in the <code>pInitialShaders</code> array <strong class=\"purple\">must</strong> be unique", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectExecutionSetShaderInfoEXT-pInitialShaders-11154", + "text": "Each member of <code>pInitialShaders</code> <strong class=\"purple\">must</strong> have been created with <code>VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectExecutionSetShaderInfoEXT-sType-sType", + "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectExecutionSetShaderInfoEXT-pInitialShaders-parameter", + "text": "<code>pInitialShaders</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>shaderCount</code> valid <a href=\"#VkShaderEXT\">VkShaderEXT</a> handles", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectExecutionSetShaderInfoEXT-pSetLayoutInfos-parameter", + "text": "If <code>pSetLayoutInfos</code> is not <code>NULL</code>, <code>pSetLayoutInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>shaderCount</code> valid <a href=\"#VkIndirectExecutionSetShaderLayoutInfoEXT\">VkIndirectExecutionSetShaderLayoutInfoEXT</a> structures", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectExecutionSetShaderInfoEXT-pPushConstantRanges-parameter", + "text": "If <code>pushConstantRangeCount</code> is not <code>0</code>, <code>pPushConstantRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pushConstantRangeCount</code> valid <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> structures", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectExecutionSetShaderInfoEXT-shaderCount-arraylength", + "text": "<code>shaderCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>", + "page": "vkspec" + } + ] + }, + "VkIndirectExecutionSetShaderLayoutInfoEXT": { + "core": [ + { + "vuid": "VUID-VkIndirectExecutionSetShaderLayoutInfoEXT-pSetLayouts-11024", + "text": "All members of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> not contain descriptors of type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectExecutionSetShaderLayoutInfoEXT-sType-sType", + "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkIndirectExecutionSetShaderLayoutInfoEXT-pSetLayouts-parameter", + "text": "If <code>setLayoutCount</code> is not <code>0</code>, <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>setLayoutCount</code> valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> handles", + "page": "vkspec" + } + ] + }, + "vkDestroyIndirectExecutionSetEXT": { + "core": [ + { + "vuid": "VUID-vkDestroyIndirectExecutionSetEXT-indirectExecutionSet-11025", + "text": "All submitted commands that refer to <code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> have completed execution", + "page": "vkspec" + }, + { + "vuid": "VUID-vkDestroyIndirectExecutionSetEXT-device-parameter", + "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle", + "page": "vkspec" + }, + { + "vuid": "VUID-vkDestroyIndirectExecutionSetEXT-indirectExecutionSet-parameter", + "text": "If <code>indirectExecutionSet</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectExecutionSetEXT\">VkIndirectExecutionSetEXT</a> handle", + "page": "vkspec" + }, + { + "vuid": "VUID-vkDestroyIndirectExecutionSetEXT-pAllocator-parameter", + "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure", + "page": "vkspec" + }, + { + "vuid": "VUID-vkDestroyIndirectExecutionSetEXT-indirectExecutionSet-parent", + "text": "If <code>indirectExecutionSet</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>", + "page": "vkspec" + } + ] + }, + "VkWriteIndirectExecutionSetPipelineEXT": { + "core": [ + { + "vuid": "VUID-VkWriteIndirectExecutionSetPipelineEXT-index-11026", + "text": "<code>index</code> <strong class=\"purple\">must</strong> be less than the value of <code>VkIndirectExecutionSetPipelineInfoEXT</code>::<code>maxPipelineCount</code> used to create the set", + "page": "vkspec" + }, + { + "vuid": "VUID-VkWriteIndirectExecutionSetPipelineEXT-pipeline-11027", + "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkWriteIndirectExecutionSetPipelineEXT-pipeline-11028", + "text": "The descriptor layout info used to create <code>pipeline</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-compatibility\">compatible</a> with the descriptor layout info used to create the indirect execution set", + "page": "vkspec" + }, + { + "vuid": "VUID-VkWriteIndirectExecutionSetPipelineEXT-index-11029", + "text": "<code>index</code> <strong class=\"purple\">must</strong> not be referenced by submitted command buffers", + "page": "vkspec" + }, + { + "vuid": "VUID-VkWriteIndirectExecutionSetPipelineEXT-pipeline-11030", + "text": "The shader stages contained in <code>pipeline</code> <strong class=\"purple\">must</strong> be supported by <a href=\"#limits-supportedIndirectCommandsShaderStagesPipelineBinding\"><a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>supportedIndirectCommandsShaderStagesPipelineBinding</code></a>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkWriteIndirectExecutionSetPipelineEXT-sType-sType", + "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkWriteIndirectExecutionSetPipelineEXT-pipeline-parameter", + "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle", + "page": "vkspec" + } + ] + }, + "VkWriteIndirectExecutionSetShaderEXT": { + "core": [ + { + "vuid": "VUID-VkWriteIndirectExecutionSetShaderEXT-index-11031", + "text": "<code>index</code> <strong class=\"purple\">must</strong> be less than <code>VkIndirectExecutionSetShaderInfoEXT</code>::<code>maxShaderCount</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkWriteIndirectExecutionSetShaderEXT-shader-11032", + "text": "<code>shader</code> <strong class=\"purple\">must</strong> have been created with <code>VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkWriteIndirectExecutionSetShaderEXT-pInitialShaders-11033", + "text": "A shader created with the same <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> <strong class=\"purple\">must</strong> have been passed in the <code>VkIndirectExecutionSetShaderInfoEXT</code>::<code>pInitialShaders</code> array", + "page": "vkspec" + }, + { + "vuid": "VUID-VkWriteIndirectExecutionSetShaderEXT-index-11034", + "text": "<code>index</code> <strong class=\"purple\">must</strong> not be in use by submitted command buffers", + "page": "vkspec" + }, + { + "vuid": "VUID-VkWriteIndirectExecutionSetShaderEXT-sType-sType", + "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkWriteIndirectExecutionSetShaderEXT-shader-parameter", + "text": "<code>shader</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderEXT\">VkShaderEXT</a> handle", + "page": "vkspec" + } + ] + }, + "vkUpdateIndirectExecutionSetPipelineEXT": { + "core": [ + { + "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-indirectExecutionSet-11035", + "text": "<code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> have been created with type <code>VK_INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-executionSetWriteCount-11037", + "text": "<code>executionSetWriteCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkIndirectExecutionSetPipelineInfoEXT</code>::<code>maxPipelineCount</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-pExecutionSetWrites-11042", + "text": "Each element in the <code>pExecutionSetWrites</code> array must have a unique <code>VkWriteIndirectExecutionSetPipelineEXT</code>::<code>index</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-None-11038", + "text": "Each member of the Indirect Execution Set referenced by the update command <strong class=\"purple\">must</strong> not be in use by the device", + "page": "vkspec" + }, + { + "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-None-11039", + "text": "The layout of each pipeline in <code>pExecutionSetWrites</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-compatibility\">compatible</a> with the <code>initialPipeline</code> used to create the Indirect Execution Set", + "page": "vkspec" + }, + { + "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-None-11040", + "text": "Each pipeline in the Indirect Execution Set <strong class=\"purple\">must</strong> have identically defined static and dynamic state values to the <code>initialPipeline</code> used to create the Indirect Execution Set", + "page": "vkspec" + }, + { + "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-initialPipeline-11147", + "text": "Each pipeline in the Indirect Execution Set <strong class=\"purple\">must</strong> have identically defined <a href=\"#interfaces-fragmentoutput\">fragment outputs interface</a> to the <code>initialPipeline</code> used to create the Indirect Execution Set", + "page": "vkspec" + }, + { + "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-initialPipeline-11152", + "text": "Each pipeline in the Indirect Execution Set <strong class=\"purple\">must</strong> match the <code>initialPipeline</code> used to create the Indirect Execution Set in its included shader stages", + "page": "vkspec" + }, + { + "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-initialPipeline-11098", + "text": "Each pipeline in the Indirect Execution Set <strong class=\"purple\">must</strong> match the <code>initialPipeline</code> used to create the Indirect Execution Set in its use of <code>FragDepth</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-initialPipeline-11086", + "text": "Each pipeline in the Indirect Execution Set <strong class=\"purple\">must</strong> match the <code>initialPipeline</code> used to create the Indirect Execution Set in its use of <code>SampleMask</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-initialPipeline-11085", + "text": "Each pipeline in the Indirect Execution Set <strong class=\"purple\">must</strong> match the <code>initialPipeline</code> used to create the Indirect Execution Set in its use of <code>StencilExportEXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-device-parameter", + "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle", + "page": "vkspec" + }, + { + "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-indirectExecutionSet-parameter", + "text": "<code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectExecutionSetEXT\">VkIndirectExecutionSetEXT</a> handle", + "page": "vkspec" + }, + { + "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-pExecutionSetWrites-parameter", + "text": "<code>pExecutionSetWrites</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>executionSetWriteCount</code> valid <a href=\"#VkWriteIndirectExecutionSetPipelineEXT\">VkWriteIndirectExecutionSetPipelineEXT</a> structures", + "page": "vkspec" + }, + { + "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-executionSetWriteCount-arraylength", + "text": "<code>executionSetWriteCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-indirectExecutionSet-parent", + "text": "<code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>", + "page": "vkspec" + } + ] + }, + "vkUpdateIndirectExecutionSetShaderEXT": { + "core": [ + { + "vuid": "VUID-vkUpdateIndirectExecutionSetShaderEXT-indirectExecutionSet-11041", + "text": "<code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> have been created with type <code>VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkUpdateIndirectExecutionSetShaderEXT-pExecutionSetWrites-11043", + "text": "Each element in the <code>pExecutionSetWrites</code> array must have a unique <code>VkWriteIndirectExecutionSetShaderEXT</code>::<code>index</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkUpdateIndirectExecutionSetShaderEXT-None-11044", + "text": "Each member of the Indirect Execution Set referenced by the update command <strong class=\"purple\">must</strong> not be in use by the device", + "page": "vkspec" + }, + { + "vuid": "VUID-vkUpdateIndirectExecutionSetShaderEXT-pExecutionSetWrites-11140", + "text": "The descriptor layout of each shader in <code>pExecutionSetWrites</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-compatibility\">compatible</a> with the initial layout info used to create the Indirect Execution Set", + "page": "vkspec" + }, + { + "vuid": "VUID-vkUpdateIndirectExecutionSetShaderEXT-None-11148", + "text": "Each fragment shader element in the Indirect Execution Set <strong class=\"purple\">must</strong> have identically defined <a href=\"#interfaces-fragmentoutput\">fragment outputs interface</a> to the initial shader state used to create the Indirect Execution Set", + "page": "vkspec" + }, + { + "vuid": "VUID-vkUpdateIndirectExecutionSetShaderEXT-FragDepth-11054", + "text": "Each fragment shader element in the Indirect Execution Set <strong class=\"purple\">must</strong> match the initial shader state used to create the Indirect Execution Set in its use of <code>FragDepth</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkUpdateIndirectExecutionSetShaderEXT-SampleMask-11050", + "text": "Each fragment shader element in the Indirect Execution Set <strong class=\"purple\">must</strong> match the initial shader state used to create the Indirect Execution Set in its use of <code>SampleMask</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkUpdateIndirectExecutionSetShaderEXT-StencilExportEXT-11003", + "text": "Each fragment shader element in the Indirect Execution Set <strong class=\"purple\">must</strong> match the initial shader state used to create the Indirect Execution Set in its use of <code>StencilExportEXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkUpdateIndirectExecutionSetShaderEXT-device-parameter", + "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle", + "page": "vkspec" + }, + { + "vuid": "VUID-vkUpdateIndirectExecutionSetShaderEXT-indirectExecutionSet-parameter", + "text": "<code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectExecutionSetEXT\">VkIndirectExecutionSetEXT</a> handle", + "page": "vkspec" + }, + { + "vuid": "VUID-vkUpdateIndirectExecutionSetShaderEXT-pExecutionSetWrites-parameter", + "text": "<code>pExecutionSetWrites</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>executionSetWriteCount</code> valid <a href=\"#VkWriteIndirectExecutionSetShaderEXT\">VkWriteIndirectExecutionSetShaderEXT</a> structures", + "page": "vkspec" + }, + { + "vuid": "VUID-vkUpdateIndirectExecutionSetShaderEXT-executionSetWriteCount-arraylength", + "text": "<code>executionSetWriteCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkUpdateIndirectExecutionSetShaderEXT-indirectExecutionSet-parent", + "text": "<code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>", + "page": "vkspec" + } + ] + }, "vkCmdExecuteGeneratedCommandsNV": { "core": [ { @@ -78087,17 +79099,12 @@ }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-04138", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-09232", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08636", - "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> in the current command buffer set <code>viewportWScalingEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -78106,23 +79113,18 @@ "page": "vkspec" }, { - "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-04140", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", - "page": "vkspec" - }, - { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-shadingRateImage-09233", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-shadingRateImage-09234", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08637", - "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> in the current command buffer set <code>shadingRateImageEnable</code> to <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", "page": "vkspec" }, { @@ -78636,6 +79638,11 @@ "page": "vkspec" }, { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-09650", + "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07640", "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" @@ -78767,12 +79774,12 @@ }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsPerPixel-07482", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", "page": "vkspec" }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsPerPixel-07483", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -78797,17 +79804,17 @@ }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07936", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07937", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07938", - "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> in the bound graphics pipeline is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, then, <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", "page": "vkspec" }, { @@ -79042,7 +80049,7 @@ }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pStrides-04913", - "text": "If the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT</code> dynamic state enabled, but without the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdBindVertexBuffers2EXT\">vkCmdBindVertexBuffers2EXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this draw command, and the <code>pStrides</code> parameter of <a href=\"#vkCmdBindVertexBuffers2EXT\">vkCmdBindVertexBuffers2EXT</a> <strong class=\"purple\">must</strong> not be <code>NULL</code>", + "text": "If the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE</code> dynamic state enabled, but without the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this draw command, and the <code>pStrides</code> parameter of <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> not be <code>NULL</code>", "page": "vkspec" }, { @@ -79077,7 +80084,7 @@ }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-04875", - "text": "If there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage and the most recent call to <code>vkCmdSetPrimitiveTopology</code> in the current command buffer set <code>primitiveTopology</code> to <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPatchControlPointsEXT\">vkCmdSetPatchControlPointsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> stage or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>primitiveTopology</code> is <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, then <a href=\"#vkCmdSetPatchControlPointsEXT\">vkCmdSetPatchControlPointsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -79385,6 +80392,1863 @@ } ] }, + "vkCmdExecuteGeneratedCommandsEXT": { + "core": [ + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-magFilter-04553", + "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-magFilter-09598", + "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-mipmapMode-04770", + "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-mipmapMode-09599", + "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-unnormalizedCoordinates-09635", + "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view’s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-unnormalizedCoordinates-09636", + "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view’s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-06479", + "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-02691", + "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07888", + "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer’s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-02692", + "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-02693", + "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-filterCubic-02694", + "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-filterCubicMinmax-02695", + "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-cubicRangeClamp-09212", + "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-reductionMode-09213", + "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-selectableCubicWeights-09214", + "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have <a href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-flags-02696", + "text": "Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpTypeImage-07027", + "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpTypeImage-07028", + "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpTypeImage-07029", + "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view’s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpTypeImage-07030", + "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view’s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08600", + "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08601", + "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-10068", + "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-maintenance4-08602", + "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08114", + "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08115", + "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08116", + "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08604", + "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08117", + "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08119", + "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08605", + "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08606", + "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08608", + "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08609", + "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08610", + "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08611", + "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08607", + "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-uniformBuffers-06935", + "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08612", + "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-storageBuffers-06936", + "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08613", + "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-commandBuffer-02707", + "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-06550", + "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-ConstOffset-06551", + "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-viewType-07752", + "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view’s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-format-07753", + "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view’s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageWrite-08795", + "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageWrite-08796", + "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageWrite-04469", + "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view’s format", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-SampledType-04470", + "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-SampledType-04471", + "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-SampledType-04472", + "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-SampledType-04473", + "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-sparseImageInt64Atomics-04474", + "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-sparseImageInt64Atomics-04475", + "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageWeightedSampleQCOM-06971", + "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageWeightedSampleQCOM-06972", + "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageBoxFilterQCOM-06973", + "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageBlockMatchSSDQCOM-06974", + "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageBlockMatchSADQCOM-06975", + "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageBlockMatchSADQCOM-06976", + "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageWeightedSampleQCOM-06977", + "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageWeightedSampleQCOM-06978", + "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageBlockMatchWindow-09215", + "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageBlockMatchWindow-09216", + "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view’s format <strong class=\"purple\">must</strong> be a single-component format", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageBlockMatchWindow-09217", + "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07288", + "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09600", + "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-renderPass-02684", + "text": "The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-subpass-02685", + "text": "The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07748", + "text": "If any shader statically accesses an input attachment, a valid descriptor <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpTypeImage-07468", + "text": "If any shader executed by this pipeline accesses an <code>OpTypeImage</code> variable with a <code>Dim</code> operand of <code>SubpassData</code>, it <strong class=\"purple\">must</strong> be decorated with an <code>InputAttachmentIndex</code> that corresponds to a valid input attachment in the current subpass", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07469", + "text": "Input attachment views accessed in a subpass <strong class=\"purple\">must</strong> be created with the same <a href=\"#VkFormat\">VkFormat</a> as the corresponding subpass definition, and be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the attachment referenced by the subpass' <code>pInputAttachments</code>[<code>InputAttachmentIndex</code>] in the currently bound <a href=\"#VkFramebuffer\">VkFramebuffer</a> as specified by <a href=\"#compatibility-inputattachment\">Fragment Input Attachment Compatibility</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-pDepthInputAttachmentIndex-09595", + "text": "Input attachment views accessed in a dynamic render pass with a <code>InputAttachmentIndex</code> referenced by <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>, or no <code>InputAttachmentIndex</code> if <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> or <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are <code>NULL</code>, <strong class=\"purple\">must</strong> be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the corresponding color, depth, or stencil attachment in <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-pDepthInputAttachmentIndex-09596", + "text": "Input attachment views accessed in a dynamic render pass via a shader object <strong class=\"purple\">must</strong> have an <code>InputAttachmentIndex</code> if both <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> and <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are non-<code>NULL</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-InputAttachmentIndex-09597", + "text": "If an input attachment view accessed in a dynamic render pass via a shader object has an <code>InputAttachmentIndex</code>, the <code>InputAttachmentIndex</code> <strong class=\"purple\">must</strong> match an index in <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-06537", + "text": "Memory backing image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be written in any way other than as an attachment by this command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09000", + "text": "If a color attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe <code>VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code> is\nset on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_COLOR_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09001", + "text": "If a depth attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09002", + "text": "If a stencil attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_STENCIL_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09003", + "text": "If an attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment, storage image, or sampled image by this command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-06539", + "text": "If any previously recorded command in the current subpass accessed an image subresource used as an attachment in this subpass in any way other than as an attachment, this command <strong class=\"purple\">must</strong> not write to that image subresource as an attachment", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-06886", + "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, <a href=\"#fragops-depth-write\">depth writes</a> <strong class=\"purple\">must</strong> be disabled", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-06887", + "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back <code>writeMask</code> are not zero, and stencil test is enabled, <a href=\"#fragops-stencil\">all stencil ops</a> <strong class=\"purple\">must</strong> be <code>VK_STENCIL_OP_KEEP</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07831", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT</code> dynamic state enabled then <a href=\"#vkCmdSetViewport\">vkCmdSetViewport</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07832", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR</code> dynamic state enabled then <a href=\"#vkCmdSetScissor\">vkCmdSetScissor</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07833", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_WIDTH</code> dynamic state enabled then <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08617", + "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08618", + "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08619", + "text": "If a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07834", + "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBiasEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> or <a href=\"#vkCmdSetDepthBias2EXT\">vkCmdSetDepthBias2EXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07835", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_BLEND_CONSTANTS</code> dynamic state enabled then <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08621", + "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> in the current command buffer set any element of <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> in the current command buffer set the same element of <code>pColorBlendEquations</code> to a <code>VkColorBlendEquationEXT</code> structure with any <a href=\"#VkBlendFactor\">VkBlendFactor</a> member with a value of <code>VK_BLEND_FACTOR_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_CONSTANT_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA</code>, <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07836", + "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBoundsTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07837", + "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilCompareMask\">vkCmdSetStencilCompareMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07838", + "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07839", + "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_REFERENCE</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of and <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilReference\">vkCmdSetStencilReference</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-maxMultiviewInstanceIndex-02688", + "text": "If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-02689", + "text": "If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-06666", + "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07840", + "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07841", + "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRONT_FACE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFrontFace\">vkCmdSetFrontFace</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07843", + "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, <a href=\"#vkCmdSetDepthTestEnable\">vkCmdSetDepthTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07844", + "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07845", + "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_COMPARE_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthCompareOp\">vkCmdSetDepthCompareOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07846", + "text": "If the <a href=\"#features-depthBounds\"><code>depthBounds</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBoundsTestEnable\">vkCmdSetDepthBoundsTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07847", + "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetStencilTestEnable\">vkCmdSetStencilTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07848", + "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilOp\">vkCmdSetStencilOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-viewportCount-03417", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-scissorCount-03418", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-viewportCount-03419", + "text": "If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08635", + "text": "If a shader object is bound to any graphics stage, then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-viewportCount-04137", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-viewportCount-04138", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08636", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-viewportCount-04139", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-shadingRateImage-09233", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-shadingRateImage-09234", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08637", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-VkPipelineVieportCreateInfo-04141", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-VkPipelineVieportCreateInfo-04142", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07878", + "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07879", + "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code> dynamic state enabled, and the most recent call to <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> in the current command buffer set any element of <code>pExclusiveScissorEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetExclusiveScissorNV\">vkCmdSetExclusiveScissorNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-04876", + "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-04877", + "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBiasEnable\">vkCmdSetDepthBiasEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-logicOp-04878", + "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>logicOpEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLogicOpEXT\">vkCmdSetLogicOpEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-primitiveFragmentShadingRateWithMultipleViewports-04552", + "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-primitiveFragmentShadingRateWithMultipleViewports-08642", + "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, and any shader object bound to a graphics stage writes to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-blendEnable-04727", + "text": "If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view’s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the <code>blendEnable</code> member of the corresponding element of the <code>pAttachments</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08643", + "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then for each color attachment in the render pass, if the corresponding image view’s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the corresponding member of <code>pColorBlendEnables</code> in the most recent call to <code>vkCmdSetColorBlendEnableEXT</code> in the current command buffer that affected that attachment index <strong class=\"purple\">must</strong> have been <code>VK_FALSE</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-multisampledRenderToSingleSampled-07284", + "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08644", + "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08876", + "text": "If a shader object is bound to any graphics stage, the current render pass instance <strong class=\"purple\">must</strong> have been begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-imageView-06172", + "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-imageView-06173", + "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-imageView-06174", + "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-imageView-06175", + "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-imageView-06176", + "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-imageView-06177", + "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-viewMask-06178", + "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>viewMask</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>viewMask</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-colorAttachmentCount-06179", + "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>colorAttachmentCount</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08910", + "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08912", + "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08911", + "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-colorAttachmentCount-09362", + "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>resolveImageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09363", + "text": "If there is no shader object bound to any graphics stage, the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09364", + "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set the blend enable to <code>VK_FALSE</code> prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09365", + "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09366", + "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set blend enable to <code>VK_FALSE</code> prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizationSamples-09367", + "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09368", + "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize->width</code> to <code>1</code> prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09369", + "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize->height</code> to <code>1</code> prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-pFragmentSize-09370", + "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize->width</code> to <code>1</code> prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-pFragmentSize-09371", + "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize->height</code> to <code>1</code> prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07749", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08646", + "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-attachmentCount-07750", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then the <code>attachmentCount</code> parameter of <code>vkCmdSetColorWriteEnableEXT</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>VkPipelineColorBlendStateCreateInfo</code>::<code>attachmentCount</code> of the currently bound graphics pipeline", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08647", + "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then the <code>attachmentCount</code> parameter of most recent call to <code>vkCmdSetColorWriteEnableEXT</code> in the current command buffer <strong class=\"purple\">must</strong> be greater than or equal to the number of color attachments in the current render pass instance", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07751", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command for each discard rectangle in <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a>::<code>discardRectangleCount</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07880", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizerDiscardEnable-09236", + "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08648", + "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07881", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08649", + "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08913", + "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment->imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08914", + "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment->imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment->imageView</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08915", + "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment->imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment->imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08916", + "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment->imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08917", + "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment->imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment->imageView</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08918", + "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment->imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment->imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-imageView-06183", + "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-imageView-06184", + "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-colorAttachmentCount-06185", + "text": "If the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the corresponding element of the <code>pColorAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-pDepthAttachment-06186", + "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment->imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment->imageView</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-pStencilAttachment-06187", + "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment->imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment->imageView</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-multisampledRenderToSingleSampled-07285", + "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-multisampledRenderToSingleSampled-07286", + "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment->imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment->imageView</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-multisampledRenderToSingleSampled-07287", + "text": "If the currently bound pipeline was created without a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment->imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment->imageView</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-pNext-07935", + "text": "If this command has been called inside a render pass instance started with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and the <code>pNext</code> chain of <a href=\"#VkRenderingInfo\">VkRenderingInfo</a> includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a>::<code>rasterizationSamples</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-renderPass-06198", + "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>renderPass</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-pColorAttachments-08963", + "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound with a fragment shader that statically writes to a color attachment, the color write mask is not zero, color writes are enabled, and the corresponding element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments->imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-pDepthAttachment-08964", + "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment->imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-pStencilAttachment-08965", + "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, stencil test is enabled and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment->imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708", + "text": "If the <a href=\"#features-primitivesGeneratedQueryWithRasterizerDiscard\"><code>primitivesGeneratedQueryWithRasterizerDiscard</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, <a href=\"#primsrast-discard\">rasterization discard</a> <strong class=\"purple\">must</strong> not be enabled", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-primitivesGeneratedQueryWithNonZeroStreams-06709", + "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, the bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with a non-zero value in <code>VkPipelineRasterizationStateStreamCreateInfoEXT</code>::<code>rasterizationStream</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07619", + "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetTessellationDomainOriginEXT\">vkCmdSetTessellationDomainOriginEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07620", + "text": "If the <a href=\"#features-depthClamp\"><code>depthClamp</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthClampEnableEXT\">vkCmdSetDepthClampEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07621", + "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_POLYGON_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07622", + "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07623", + "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-alphaToCoverageEnable-08919", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and <code>alphaToCoverageEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-alphaToCoverageEnable-08920", + "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> in the current command buffer set <code>alphaToCoverageEnable</code> to <code>VK_TRUE</code>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07624", + "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07625", + "text": "If the <a href=\"#features-alphaToOne\"><code>alphaToOne</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToOneEnableEXT\">vkCmdSetAlphaToOneEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07626", + "text": "If the <a href=\"#features-logicOp\"><code>logicOp</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLogicOpEnableEXT\">vkCmdSetLogicOpEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07627", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08657", + "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07628", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08658", + "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> for any attachment set that attachment’s value in <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07629", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08659", + "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07630", + "text": "If the <a href=\"#features-geometryStreams\"><code>geometryStreams</code></a> feature is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07631", + "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07632", + "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>conservativeRasterizationMode</code> is <code>VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT</code>, then <a href=\"#vkCmdSetExtraPrimitiveOverestimationSizeEXT\">vkCmdSetExtraPrimitiveOverestimationSizeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07633", + "text": "If the <a href=\"#features-depthClipEnable\"><code>depthClipEnable</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT</code> dynamic state, then <a href=\"#vkCmdSetDepthClipEnableEXT\">vkCmdSetDepthClipEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07634", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08664", + "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07635", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizerDiscardEnable-09416", + "text": "If the <code><a href=\"#VK_EXT_blend_operation_advanced\">VK_EXT_blend_operation_advanced</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then at least one of <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07636", + "text": "If the <code><a href=\"#VK_EXT_provoking_vertex\">VK_EXT_provoking_vertex</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetProvokingVertexModeEXT\">vkCmdSetProvokingVertexModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07637", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08666", + "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08667", + "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08668", + "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07638", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08669", + "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08670", + "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08671", + "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07849", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_KHR</code> dynamic state enabled then <a href=\"#vkCmdSetLineStippleKHR\">vkCmdSetLineStippleKHR</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08672", + "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> in the current command buffer set <code>stippledLineEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLineStippleEXT\">vkCmdSetLineStippleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07639", + "text": "If the <a href=\"#features-depthClipControl\"><code>depthClipControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetDepthClipNegativeOneToOneEXT\">vkCmdSetDepthClipNegativeOneToOneEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09650", + "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07640", + "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07641", + "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07642", + "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07643", + "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageToColorEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07644", + "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageModulationModeNV\">vkCmdSetCoverageModulationModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07645", + "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationMode</code> is any value other than <code>VK_COVERAGE_MODULATION_MODE_NONE_NV</code>, then <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07646", + "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationTableEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07647", + "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-pipelineFragmentShadingRate-09238", + "text": "If the <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07648", + "text": "If the <a href=\"#features-representativeFragmentTest\"><code>representativeFragmentTest</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRepresentativeFragmentTestEnableNV\">vkCmdSetRepresentativeFragmentTestEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07649", + "text": "If the <a href=\"#features-coverageReductionMode\"><code>coverageReductionMode</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageReductionModeNV\">vkCmdSetCoverageReductionModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-pColorBlendEnables-07470", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> state enabled and the last call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> set <code>pColorBlendEnables</code> for any attachment to <code>VK_TRUE</code>, then for those attachments in the subpass the corresponding image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizationSamples-07471", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> follow the rules for a <a href=\"#renderpass-noattachments\">zero-attachment subpass</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-samples-07472", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a>::<code>rasterizationSamples</code> parameter used to create the bound graphics pipeline", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-samples-07473", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <code>rasterizationSamples</code> parameter in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizationSamples-07474", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and neither the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> nor the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extensions are enabled, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09211", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the <code>rasterizationSamples</code> member of that structure", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-firstAttachment-07476", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizerDiscardEnable-09417", + "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-firstAttachment-07477", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizerDiscardEnable-09418", + "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-firstAttachment-07478", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizerDiscardEnable-09419", + "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-firstAttachment-07479", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendAdvancedEXT</code> calls <strong class=\"purple\">must</strong> specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-advancedBlendMaxColorAttachments-07480", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> and <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic states enabled and the last calls to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> have enabled advanced blending, then the number of active color attachments in the current subpass <strong class=\"purple\">must</strong> not exceed <a href=\"#limits-advancedBlendMaxColorAttachments\"><code>advancedBlendMaxColorAttachments</code></a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-primitivesGeneratedQueryWithNonZeroStreams-07481", + "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, and the bound graphics pipeline was created with <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> state enabled, the last call to <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have set the <code>rasterizationStream</code> to zero", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsPerPixel-07482", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsPerPixel-07483", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-07484", + "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-07485", + "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.width</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling <code>rasterizationSamples</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-07486", + "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.height</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling <code>rasterizationSamples</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-07487", + "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, the fragment shader code <strong class=\"purple\">must</strong> not statically use the extended instruction <code>InterpolateAtSample</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-07936", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-07937", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-07938", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-coverageModulationTableEnable-07488", + "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> state enabled, and the last call to <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> set <code>coverageModulationTableEnable</code> to <code>VK_TRUE</code>, then the <code>coverageModulationTableCount</code> parameter in the last call to <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> equal the current <code>rasterizationSamples</code> divided by the number of color samples in the current subpass", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizationSamples-07489", + "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> 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 <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be the same as the sample count of the depth/stencil attachment", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-coverageToColorEnable-07490", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> state enabled and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <code>coverageToColorLocation</code>, with a <a href=\"#VkFormat\">VkFormat</a> of <code>VK_FORMAT_R8_UINT</code>, <code>VK_FORMAT_R8_SINT</code>, <code>VK_FORMAT_R16_UINT</code>, <code>VK_FORMAT_R16_SINT</code>, <code>VK_FORMAT_R32_UINT</code>, or <code>VK_FORMAT_R32_SINT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizerDiscardEnable-09420", + "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <code>coverageToColorLocation</code>, with a <a href=\"#VkFormat\">VkFormat</a> of <code>VK_FORMAT_R8_UINT</code>, <code>VK_FORMAT_R8_SINT</code>, <code>VK_FORMAT_R16_UINT</code>, <code>VK_FORMAT_R16_SINT</code>, <code>VK_FORMAT_R32_UINT</code>, or <code>VK_FORMAT_R32_SINT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-coverageReductionMode-07491", + "text": "If this <code><a href=\"#VK_NV_coverage_reduction_mode\">VK_NV_coverage_reduction_mode</a></code> extension is enabled, the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, the current coverage reduction mode <code>coverageReductionMode</code>, then the current <code>rasterizationSamples</code>, and the sample counts for the color and depth/stencil attachments (if the subpass has them) <strong class=\"purple\">must</strong> be a valid combination returned by <a href=\"#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV\">vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-viewportCount-07492", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-viewportCount-07493", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-viewportCount-09421", + "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizationSamples-07494", + "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if the current subpass has any color attachments and <code>rasterizationSamples</code> of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> is greater than the number of color samples, then the pipeline <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-stippledLineEnable-07495", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-stippledLineEnable-07496", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR</code>, then the <a href=\"#features-stippledBresenhamLines\"><code>stippledBresenhamLines</code></a> feature <strong class=\"purple\">must</strong> be enabled", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-stippledLineEnable-07497", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR</code>, then the <a href=\"#features-stippledSmoothLines\"><code>stippledSmoothLines</code></a> feature <strong class=\"purple\">must</strong> be enabled", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-stippledLineEnable-07498", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_DEFAULT_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled and <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>strictLines</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-conservativePointAndLineRasterization-07499", + "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, <a href=\"#limits-conservativePointAndLineRasterization\"><code>conservativePointAndLineRasterization</code></a> is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the <code>conservativeRasterizationMode</code> set by the last call to <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> be <code>VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-stage-07073", + "text": "If the currently bound pipeline was created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <code>VK_SHADER_STAGE_VERTEX_BIT</code>, <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>, <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>, then <a href=\"#queries-mesh-shader\">Mesh Shader Queries</a> <strong class=\"purple\">must</strong> not be active", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08877", + "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07850", + "text": "If dynamic state was inherited from <a href=\"#VkCommandBufferInheritanceViewportScissorInfoNV\">VkCommandBufferInheritanceViewportScissorInfoNV</a>, it <strong class=\"purple\">must</strong> be set in the current command buffer prior to this drawing command", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08684", + "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_VERTEX_BIT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08685", + "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08686", + "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08687", + "text": "If there is no bound graphics pipeline, and the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08688", + "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08689", + "text": "If there is no bound graphics pipeline, and the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08690", + "text": "If there is no bound graphics pipeline, and the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08693", + "text": "If there is no bound graphics pipeline, and at least one of the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features is enabled, one of the <code>VK_SHADER_STAGE_VERTEX_BIT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stages <strong class=\"purple\">must</strong> have a valid <code>VkShaderEXT</code> bound, and the other <strong class=\"purple\">must</strong> have no <code>VkShaderEXT</code> bound", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08694", + "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created without the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, a valid <code>VkShaderEXT</code> <strong class=\"purple\">must</strong> be bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08695", + "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created with the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08696", + "text": "If there is no bound graphics pipeline, and a valid <code>VkShaderEXT</code> is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to either the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage or the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08698", + "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, then all shaders created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag in the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> also be bound", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08699", + "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, any stages in between stages whose shaders which did not create a shader with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag as part of the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> not have any <code>VkShaderEXT</code> bound", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08878", + "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined push constant ranges", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08879", + "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined arrays of descriptor set layouts", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-colorAttachmentCount-09372", + "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, and a fragment shader is bound, it <strong class=\"purple\">must</strong> not declare the <code>DepthReplacing</code> or <code>StencilRefReplacingEXT</code> execution modes", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-pDynamicStates-08715", + "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpDepthAttachmentReadEXT</code>, the <code>depthWriteEnable</code> parameter in the last call to <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-pDynamicStates-08716", + "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpStencilAttachmentReadEXT</code>, the <code>writeMask</code> parameter in the last call to <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> be <code>0</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09116", + "text": "If a shader object is bound to any graphics stage or the currently bound graphics pipeline was created with <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code>, and the format of any color attachment is <code>VK_FORMAT_E5B9G9R9_UFLOAT_PACK32</code>, the corresponding element of the <code>pColorWriteMasks</code> parameter of <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> either include all of <code>VK_COLOR_COMPONENT_R_BIT</code>, <code>VK_COLOR_COMPONENT_G_BIT</code>, and <code>VK_COLOR_COMPONENT_B_BIT</code>, or none of them", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-maxFragmentDualSrcAttachments-09239", + "text": "If <a href=\"#framebuffer-blending\">blending</a> is enabled for any attachment where either the source or destination blend factors for that attachment <a href=\"#framebuffer-dsb\">use the secondary color input</a>, the maximum value of <code>Location</code> for any output attachment <a href=\"#shaders-staticuse\">statically used</a> in the <code>Fragment</code> <code>Execution</code> <code>Model</code> executed by this command <strong class=\"purple\">must</strong> be less than <a href=\"#limits-maxFragmentDualSrcAttachments\"><code>maxFragmentDualSrcAttachments</code></a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09548", + "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, the value of each element of <a href=\"#VkRenderingAttachmentLocationInfoKHR\">VkRenderingAttachmentLocationInfoKHR</a>::<code>pColorAttachmentLocations</code> set by <a href=\"#vkCmdSetRenderingAttachmentLocationsKHR\">vkCmdSetRenderingAttachmentLocationsKHR</a> <strong class=\"purple\">must</strong> match the value set for the corresponding element in the currently bound pipeline", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09549", + "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, input attachment index mappings in the currently bound pipeline <strong class=\"purple\">must</strong> match those set for the current render pass instance via <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09642", + "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag, the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09643", + "text": "If the bound graphics pipeline was created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>, the current render pass <strong class=\"purple\">must</strong> have begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-commandBuffer-11045", + "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11046", + "text": "If <code>isPreprocessed</code> is <code>VK_TRUE</code> and <a href=\"#vkGetGeneratedCommandsMemoryRequirementsEXT\">vkGetGeneratedCommandsMemoryRequirementsEXT</a> did not return a required size of zero then <a href=\"#vkCmdPreprocessGeneratedCommandsEXT\">vkCmdPreprocessGeneratedCommandsEXT</a> <strong class=\"purple\">must</strong> have already been executed on the device before this command executes, and the preprocessing command <strong class=\"purple\">must</strong> have used the same <code>pGeneratedCommandsInfo</code> content as well as the content of the input buffers it references (all except <a href=\"#VkGeneratedCommandsInfoEXT\">VkGeneratedCommandsInfoEXT</a>::<code>preprocessBuffer</code>).", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11047", + "text": "If <code>isPreprocessed</code> is <code>VK_TRUE</code> then the <code>indirectCommandsLayout</code> member of <code>pGeneratedCommandsInfo</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT</code> bit set", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-indirectCommandsLayout-11141", + "text": "If the <code>indirectCommandsLayout</code> member of <code>pGeneratedCommandsInfo</code> was created with the <code>VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT</code> bit set, then <code>isPreprocessed</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-preprocessAddress-11142", + "text": "The contents of the <code>preprocessAddress</code> member of <code>pGeneratedCommandsInfo</code> <strong class=\"purple\">must</strong> not have been previously used to record another <a href=\"#vkCmdExecuteGeneratedCommandsEXT\">vkCmdExecuteGeneratedCommandsEXT</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11048", + "text": "If <code>isPreprocessed</code> is <code>VK_TRUE</code> then the bound descriptor sets and push constants <strong class=\"purple\">must</strong> match identically with those bound during recording of the corresponding call to <a href=\"#vkCmdPreprocessGeneratedCommandsEXT\">vkCmdPreprocessGeneratedCommandsEXT</a>.", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11049", + "text": "If <code>isPreprocessed</code> is <code>VK_TRUE</code> and the <code>indirectCommandsLayout</code> member of <code>pGeneratedCommandsInfo</code> contains a draw token, then the graphics state bound on <code>commandBuffer</code> <strong class=\"purple\">must</strong> match identically with the graphics state bound on the <code>stateCommandBuffer</code> passed to <a href=\"#vkCmdPreprocessGeneratedCommandsEXT\">vkCmdPreprocessGeneratedCommandsEXT</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11149", + "text": "If <code>isPreprocessed</code> is <code>VK_TRUE</code>, then the queue family index of <code>commandBuffer</code> <strong class=\"purple\">must</strong> be the same as the queue family index used to allocate the <code>stateCommandBuffer</code> passed to <a href=\"#vkCmdPreprocessGeneratedCommandsEXT\">vkCmdPreprocessGeneratedCommandsEXT</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11051", + "text": "If <code>isPreprocessed</code> is <code>VK_TRUE</code> and the <code>indirectCommandsLayout</code> member of <code>pGeneratedCommandsInfo</code> contains a dispatch token, then the compute state bound on <code>commandBuffer</code> <strong class=\"purple\">must</strong> match identically with the compute state bound on the <code>stateCommandBuffer</code> passed to <a href=\"#vkCmdPreprocessGeneratedCommandsEXT\">vkCmdPreprocessGeneratedCommandsEXT</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11052", + "text": "If <code>isPreprocessed</code> is <code>VK_TRUE</code> and the <code>indirectCommandsLayout</code> member of <code>pGeneratedCommandsInfo</code> contains a ray tracing token, then the ray tracing state bound on <code>commandBuffer</code> <strong class=\"purple\">must</strong> match identically with the ray tracing state bound on the <code>stateCommandBuffer</code> passed to <a href=\"#vkCmdPreprocessGeneratedCommandsEXT\">vkCmdPreprocessGeneratedCommandsEXT</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11150", + "text": "If <code>isPreprocessed</code> is <code>VK_TRUE</code> and the <code>indirectCommandsLayout</code> member of <code>pGeneratedCommandsInfo</code> contains a ray tracing token, the queue family index <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> be the same queue family index used to allocate the <code>stateCommandBuffer</code> passed to <a href=\"#vkCmdPreprocessGeneratedCommandsEXT\">vkCmdPreprocessGeneratedCommandsEXT</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-indirectCommandsLayout-11053", + "text": "If the token sequence of the passed <a href=\"#VkGeneratedCommandsInfoEXT\">VkGeneratedCommandsInfoEXT</a>::<code>indirectCommandsLayout</code> contains a <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code> token, the initial shader state of <a href=\"#VkGeneratedCommandsInfoEXT\">VkGeneratedCommandsInfoEXT</a>::<code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> be bound on <code>commandBuffer</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-indirectCommandsLayout-11004", + "text": "If <code>indirectCommandsLayout</code> was created with a token sequence that contained the <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code> token and <code>indirectExecutionSet</code> was created using <code>VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT</code>, every executed <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code> token <strong class=\"purple\">must</strong> bind all the shader stages set in the <a href=\"#VkIndirectCommandsExecutionSetTokenEXT\">VkIndirectCommandsExecutionSetTokenEXT</a>::<code>shaderStages</code> used to create <code>indirectCommandsLayout</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11055", + "text": "If <code>isPreprocessed</code> is <code>VK_TRUE</code> and the token sequence of the passed <a href=\"#VkGeneratedCommandsInfoEXT\">VkGeneratedCommandsInfoEXT</a>::<code>indirectCommandsLayout</code> contains a <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code> token, the members of <a href=\"#VkGeneratedCommandsInfoEXT\">VkGeneratedCommandsInfoEXT</a>::<code>indirectExecutionSet</code> accessed by this command <strong class=\"purple\">must</strong> not have been modified since the preprocess buffer was generated", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-indirectCommandsLayout-11056", + "text": "If the <code>indirectCommandsLayout</code> member of <code>pGeneratedCommandsInfo</code> contains a draw token, then the active render pass <strong class=\"purple\">must</strong> not have a specified fragment density map", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-deviceGeneratedCommandsTransformFeedback-11057", + "text": "If <a href=\"#limits-deviceGeneratedCommandsTransformFeedback\"><code>deviceGeneratedCommandsTransformFeedback</code></a> is not supported on device, transform feedback <strong class=\"purple\">must</strong> not be active", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-indirectExecutionSet-11058", + "text": "If transform feedback is active, <a href=\"#VkGeneratedCommandsInfoEXT\">VkGeneratedCommandsInfoEXT</a>::<code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-deviceGeneratedCommands-11059", + "text": "The <a href=\"#features-deviceGeneratedCommandsEXT\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-supportedIndirectCommandsShaderStages-11060", + "text": "The currently bound shader stages <strong class=\"purple\">must</strong> be supported by <a href=\"#limits-supportedIndirectCommandsShaderStages\"><a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>supportedIndirectCommandsShaderStages</code></a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-supportedIndirectCommandsShaderStages-11061", + "text": "Only stages specified in <a href=\"#limits-supportedIndirectCommandsShaderStages\"><a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>supportedIndirectCommandsShaderStages</code></a> <strong class=\"purple\">can</strong> be set in <code>pGeneratedCommandsInfo->shaderStages</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-11062", + "text": "If a rendering pass is currently active, the view mask <strong class=\"purple\">must</strong> be <code>0</code>.", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-commandBuffer-11143", + "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not have been created with <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-commandBuffer-parameter", + "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-pGeneratedCommandsInfo-parameter", + "text": "<code>pGeneratedCommandsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkGeneratedCommandsInfoEXT\">VkGeneratedCommandsInfoEXT</a> structure", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-commandBuffer-recording", + "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-commandBuffer-cmdpool", + "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-videocoding", + "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-bufferlevel", + "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>", + "page": "vkspec" + } + ] + }, + "VkGeneratedCommandsInfoEXT": { + "core": [ + { + "vuid": "VUID-VkGeneratedCommandsInfoEXT-preprocessAddress-11063", + "text": "If <a href=\"#vkGetGeneratedCommandsMemoryRequirementsEXT\">vkGetGeneratedCommandsMemoryRequirementsEXT</a> returns a non-zero size, <code>preprocessAddress</code> <strong class=\"purple\">must</strong> not be <code>NULL</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsInfoEXT-preprocessAddress-11064", + "text": "<code>VkDeviceMemory</code> objects bound to the underlying buffer for <code>preprocessAddress</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned by <a href=\"#vkGetGeneratedCommandsMemoryRequirementsEXT\">vkGetGeneratedCommandsMemoryRequirementsEXT</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-11065", + "text": "If the <code>indirectCommandsLayout</code> uses a token of <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT</code>, then the <code>indirectExecutionSet</code>’s push constant layout <strong class=\"purple\">must</strong> contain the <code>updateRange</code> specified in <a href=\"#VkIndirectCommandsPushConstantTokenEXT\">VkIndirectCommandsPushConstantTokenEXT</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-11066", + "text": "If the <code>indirectCommandsLayout</code> uses a token of <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT</code>, then the <code>indirectExecutionSet</code>’s push constant layout <strong class=\"purple\">must</strong> contain the <code>updateRange</code> specified in <a href=\"#VkIndirectCommandsPushConstantTokenEXT\">VkIndirectCommandsPushConstantTokenEXT</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsInfoEXT-maxSequenceCount-11067", + "text": "<code>maxSequenceCount</code> <strong class=\"purple\">must</strong> be less or equal to <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>maxIndirectSequenceCount</code> and <a href=\"#VkGeneratedCommandsMemoryRequirementsInfoEXT\">VkGeneratedCommandsMemoryRequirementsInfoEXT</a>::<code>maxSequencesCount</code> that was used to determine the <code>preprocessSize</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsInfoEXT-sequenceCountAddress-11068", + "text": "If <code>sequenceCountAddress</code> is not <code>NULL</code>, the value contained in the address <strong class=\"purple\">must</strong> be less or equal to <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>maxIndirectSequenceCount</code> and <a href=\"#VkGeneratedCommandsMemoryRequirementsInfoEXT\">VkGeneratedCommandsMemoryRequirementsInfoEXT</a>::<code>maxSequencesCount</code> that was used to determine the <code>preprocessSize</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsInfoEXT-preprocessAddress-11069", + "text": "The underlying buffer for <code>preprocessAddress</code> <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT</code> bit set in its usage flag", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsInfoEXT-preprocessAddress-11070", + "text": "If the underlying buffer for <code>preprocessAddress</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-11144", + "text": "If the <code>indirectCommandsLayout</code> contains a <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code> token, then the descriptor and push constant layout info provided either by <code>pipelineLayout</code> or through a <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a> in <code>pNext</code> of the <a href=\"#VkIndirectCommandsLayoutCreateInfoEXT\">VkIndirectCommandsLayoutCreateInfoEXT</a> used to create <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-compatibility\">compatible</a> with the descriptor and push constant layout info used by <code>indirectExecutionSet</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-11002", + "text": "If <code>indirectCommandsLayout</code> was created with a token sequence that contained the <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code> token, the shader stages used to create the initial shader state of <code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> equal the <a href=\"#VkIndirectCommandsExecutionSetTokenEXT\">VkIndirectCommandsExecutionSetTokenEXT</a>::<code>shaderStages</code> used to create <code>indirectCommandsLayout</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsInfoEXT-preprocessSize-11071", + "text": "<code>preprocessSize</code> <strong class=\"purple\">must</strong> be greater than or equal to the memory requirement’s size returned by <a href=\"#vkGetGeneratedCommandsMemoryRequirementsEXT\">vkGetGeneratedCommandsMemoryRequirementsEXT</a> using the matching inputs (<code>indirectCommandsLayout</code>, …​) as within this structure", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsInfoEXT-sequenceCountAddress-11072", + "text": "The underlying buffer for <code>sequenceCountAddress</code> <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT</code> bit set in its usage flag", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsInfoEXT-sequenceCountAddress-11073", + "text": "If <code>sequenceCountAddress</code> is not <code>NULL</code>, <code>sequenceCountAddress</code> <strong class=\"purple\">must</strong> be aligned to <code>4</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsInfoEXT-indirectAddress-11074", + "text": "<code>indirectAddress</code> <strong class=\"purple\">must</strong> be aligned to <code>4</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsInfoEXT-sequenceCountAddress-11075", + "text": "If the underlying buffer for <code>sequenceCountAddress</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsInfoEXT-indirectAddress-11076", + "text": "<code>indirectAddress</code> <strong class=\"purple\">must</strong> not be <code>NULL</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsInfoEXT-indirectAddressSize-11077", + "text": "<code>indirectAddressSize</code> <strong class=\"purple\">must</strong> be greater than zero", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsInfoEXT-maxDrawCount-11078", + "text": "When not ignored, <span class=\"eq\"><code>maxDrawCount</code> × <code>maxSequenceCount</code></span> <strong class=\"purple\">must</strong> be less than <span class=\"eq\">2^24</span>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-11079", + "text": "If <code>indirectCommandsLayout</code> was created using a <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT</code> token and shader objects are not bound then the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE</code> in <code>pDynamicStates</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-11083", + "text": "If the token sequence of the passed <code>indirectCommandsLayout</code> contains a <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code> token, the <code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsInfoEXT-indirectExecutionSet-11080", + "text": "If <code>indirectExecutionSet</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, a <a href=\"#VkGeneratedCommandsPipelineInfoEXT\">VkGeneratedCommandsPipelineInfoEXT</a> or <a href=\"#VkGeneratedCommandsShaderInfoEXT\">VkGeneratedCommandsShaderInfoEXT</a> <strong class=\"purple\">must</strong> be included in the <code>pNext</code> chain", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsInfoEXT-sType-sType", + "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsInfoEXT-shaderStages-parameter", + "text": "<code>shaderStages</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsInfoEXT-shaderStages-requiredbitmask", + "text": "<code>shaderStages</code> <strong class=\"purple\">must</strong> not be <code>0</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsInfoEXT-indirectExecutionSet-parameter", + "text": "If <code>indirectExecutionSet</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectExecutionSetEXT\">VkIndirectExecutionSetEXT</a> handle", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-parameter", + "text": "<code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsLayoutEXT\">VkIndirectCommandsLayoutEXT</a> handle", + "page": "vkspec" + }, + { + "vuid": "VUID-VkGeneratedCommandsInfoEXT-commonparent", + "text": "Both of <code>indirectCommandsLayout</code>, and <code>indirectExecutionSet</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>", + "page": "vkspec" + } + ] + }, + "vkCmdPreprocessGeneratedCommandsEXT": { + "core": [ + { + "vuid": "VUID-vkCmdPreprocessGeneratedCommandsEXT-commandBuffer-11081", + "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdPreprocessGeneratedCommandsEXT-pGeneratedCommandsInfo-11082", + "text": "<code>pGeneratedCommandsInfo</code>’s <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT</code> bit set", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdPreprocessGeneratedCommandsEXT-indirectCommandsLayout-11084", + "text": "If the token sequence of the passed <a href=\"#VkGeneratedCommandsInfoEXT\">VkGeneratedCommandsInfoEXT</a>::<code>indirectCommandsLayout</code> contains a <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code> token, the initial shader state of <a href=\"#VkGeneratedCommandsInfoEXT\">VkGeneratedCommandsInfoEXT</a>::<code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> be bound on <code>stateCommandBuffer</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdPreprocessGeneratedCommandsEXT-stateCommandBuffer-11138", + "text": "<code>stateCommandBuffer</code> <strong class=\"purple\">must</strong> be in the recording state", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdPreprocessGeneratedCommandsEXT-deviceGeneratedCommands-11087", + "text": "The <a href=\"#features-deviceGeneratedCommandsEXT\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdPreprocessGeneratedCommandsEXT-supportedIndirectCommandsShaderStages-11088", + "text": "Only stages specified in <a href=\"#limits-supportedIndirectCommandsShaderStages\"><a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>supportedIndirectCommandsShaderStages</code></a> <strong class=\"purple\">can</strong> be set in <code>pGeneratedCommandsInfo->shaderStages</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdPreprocessGeneratedCommandsEXT-commandBuffer-parameter", + "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdPreprocessGeneratedCommandsEXT-pGeneratedCommandsInfo-parameter", + "text": "<code>pGeneratedCommandsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkGeneratedCommandsInfoEXT\">VkGeneratedCommandsInfoEXT</a> structure", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdPreprocessGeneratedCommandsEXT-stateCommandBuffer-parameter", + "text": "<code>stateCommandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdPreprocessGeneratedCommandsEXT-commandBuffer-recording", + "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdPreprocessGeneratedCommandsEXT-commandBuffer-cmdpool", + "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdPreprocessGeneratedCommandsEXT-renderpass", + "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdPreprocessGeneratedCommandsEXT-videocoding", + "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdPreprocessGeneratedCommandsEXT-bufferlevel", + "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdPreprocessGeneratedCommandsEXT-commonparent", + "text": "Both of <code>commandBuffer</code>, and <code>stateCommandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>", + "page": "vkspec" + } + ] + }, "vkGetPhysicalDeviceSparseImageFormatProperties": { "core": [ { @@ -82281,7 +85145,17 @@ }, { "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-02839", - "text": "If <code>presentMode</code> is not <code>VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR</code> nor <code>VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR</code>, then <code>minImageCount</code> <strong class=\"purple\">must</strong> be greater than or equal to the value returned in the <code>minImageCount</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <a href=\"#vkGetPhysicalDeviceSurfaceCapabilitiesKHR\">vkGetPhysicalDeviceSurfaceCapabilitiesKHR</a> for the surface", + "text": "", + "page": "vkspec" + }, + { + "vuid": "VUID-VkSwapchainCreateInfoKHR-swapchainMaintenance1-10155", + "text": "If the <a href=\"#features-swapchainMaintenance1\"><code>swapchainMaintenance1</code></a> feature is not enabled, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> not include a <a href=\"#VkSwapchainPresentModesCreateInfoEXT\">VkSwapchainPresentModesCreateInfoEXT</a> structure", + "page": "vkspec" + }, + { + "vuid": "VUID-VkSwapchainCreateInfoKHR-swapchainMaintenance1-10156", + "text": "If the <a href=\"#features-swapchainMaintenance1\"><code>swapchainMaintenance1</code></a> feature is not enabled, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> not include a <a href=\"#VkSwapchainPresentScalingCreateInfoEXT\">VkSwapchainPresentScalingCreateInfoEXT</a> structure If <code>presentMode</code> is not <code>VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR</code> nor <code>VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR</code>, then <code>minImageCount</code> <strong class=\"purple\">must</strong> be greater than or equal to the value returned in the <code>minImageCount</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <a href=\"#vkGetPhysicalDeviceSurfaceCapabilitiesKHR\">vkGetPhysicalDeviceSurfaceCapabilitiesKHR</a> for the surface", "page": "vkspec" }, { @@ -82305,6 +85179,11 @@ "page": "vkspec" }, { + "vuid": "VUID-VkSwapchainCreateInfoKHR-swapchainMaintenance1-10157", + "text": "If the <a href=\"#features-swapchainMaintenance1\"><code>swapchainMaintenance1</code></a> feature is not enabled, then <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT</code>", + "page": "vkspec" + }, + { "vuid": "VUID-VkSwapchainCreateInfoKHR-imageExtent-01689", "text": "<code>imageExtent</code> members <code>width</code> and <code>height</code> <strong class=\"purple\">must</strong> both be non-zero", "page": "vkspec" @@ -82649,32 +85528,37 @@ }, { "vuid": "VUID-VkSwapchainPresentScalingCreateInfoEXT-scalingBehavior-07770", - "text": "<code>scalingBehavior</code> <strong class=\"purple\">must</strong> be a valid scaling method for the surface as returned in <a href=\"#VkSurfacePresentScalingCapabilitiesEXT\">VkSurfacePresentScalingCapabilitiesEXT</a>::<code>supportedPresentScaling</code>, given <a href=\"#VkSwapchainCreateInfoKHR\">VkSwapchainCreateInfoKHR</a>::<code>presentMode</code> in <a href=\"#VkSurfacePresentModeEXT\">VkSurfacePresentModeEXT</a>", + "text": "<code>scalingBehavior</code> <strong class=\"purple\">must</strong> be <code>0</code> or a valid scaling method for the surface as returned in <a href=\"#VkSurfacePresentScalingCapabilitiesEXT\">VkSurfacePresentScalingCapabilitiesEXT</a>::<code>supportedPresentScaling</code>, given <a href=\"#VkSwapchainCreateInfoKHR\">VkSwapchainCreateInfoKHR</a>::<code>presentMode</code> in <a href=\"#VkSurfacePresentModeEXT\">VkSurfacePresentModeEXT</a>", "page": "vkspec" }, { "vuid": "VUID-VkSwapchainPresentScalingCreateInfoEXT-scalingBehavior-07771", - "text": "If the swapchain is created with <a href=\"#VkSwapchainPresentModesCreateInfoEXT\">VkSwapchainPresentModesCreateInfoEXT</a>, <code>scalingBehavior</code> <strong class=\"purple\">must</strong> be a valid scaling method for the surface as returned in <a href=\"#VkSurfacePresentScalingCapabilitiesEXT\">VkSurfacePresentScalingCapabilitiesEXT</a>::<code>supportedPresentScaling</code>, given each present mode in <a href=\"#VkSwapchainPresentModesCreateInfoEXT\">VkSwapchainPresentModesCreateInfoEXT</a>::<code>pPresentModes</code> in <a href=\"#VkSurfacePresentModeEXT\">VkSurfacePresentModeEXT</a>", + "text": "If the swapchain is created with <a href=\"#VkSwapchainPresentModesCreateInfoEXT\">VkSwapchainPresentModesCreateInfoEXT</a>, <code>scalingBehavior</code> <strong class=\"purple\">must</strong> be <code>0</code> or a valid scaling method for the surface as returned in <a href=\"#VkSurfacePresentScalingCapabilitiesEXT\">VkSurfacePresentScalingCapabilitiesEXT</a>::<code>supportedPresentScaling</code>, given each present mode in <a href=\"#VkSwapchainPresentModesCreateInfoEXT\">VkSwapchainPresentModesCreateInfoEXT</a>::<code>pPresentModes</code> in <a href=\"#VkSurfacePresentModeEXT\">VkSurfacePresentModeEXT</a>", "page": "vkspec" }, { "vuid": "VUID-VkSwapchainPresentScalingCreateInfoEXT-presentGravityX-07772", - "text": "<code>presentGravityX</code> <strong class=\"purple\">must</strong> be a valid x-axis present gravity for the surface as returned in <a href=\"#VkSurfacePresentScalingCapabilitiesEXT\">VkSurfacePresentScalingCapabilitiesEXT</a>::<code>supportedPresentGravityX</code>, given <a href=\"#VkSwapchainCreateInfoKHR\">VkSwapchainCreateInfoKHR</a>::<code>presentMode</code> in <a href=\"#VkSurfacePresentModeEXT\">VkSurfacePresentModeEXT</a>", + "text": "<code>presentGravityX</code> <strong class=\"purple\">must</strong> be <code>0</code> or a valid x-axis present gravity for the surface as returned in <a href=\"#VkSurfacePresentScalingCapabilitiesEXT\">VkSurfacePresentScalingCapabilitiesEXT</a>::<code>supportedPresentGravityX</code>, given <a href=\"#VkSwapchainCreateInfoKHR\">VkSwapchainCreateInfoKHR</a>::<code>presentMode</code> in <a href=\"#VkSurfacePresentModeEXT\">VkSurfacePresentModeEXT</a>", "page": "vkspec" }, { "vuid": "VUID-VkSwapchainPresentScalingCreateInfoEXT-presentGravityX-07773", - "text": "If the swapchain is created with <a href=\"#VkSwapchainPresentModesCreateInfoEXT\">VkSwapchainPresentModesCreateInfoEXT</a>, <code>presentGravityX</code> <strong class=\"purple\">must</strong> be a valid x-axis present gravity for the surface as returned in <a href=\"#VkSurfacePresentScalingCapabilitiesEXT\">VkSurfacePresentScalingCapabilitiesEXT</a>::<code>supportedPresentGravityX</code>, given each present mode in <a href=\"#VkSwapchainPresentModesCreateInfoEXT\">VkSwapchainPresentModesCreateInfoEXT</a>::<code>pPresentModes</code> in <a href=\"#VkSurfacePresentModeEXT\">VkSurfacePresentModeEXT</a>", + "text": "If the swapchain is created with <a href=\"#VkSwapchainPresentModesCreateInfoEXT\">VkSwapchainPresentModesCreateInfoEXT</a>, <code>presentGravityX</code> <strong class=\"purple\">must</strong> be <code>0</code> or a valid x-axis present gravity for the surface as returned in <a href=\"#VkSurfacePresentScalingCapabilitiesEXT\">VkSurfacePresentScalingCapabilitiesEXT</a>::<code>supportedPresentGravityX</code>, given each present mode in <a href=\"#VkSwapchainPresentModesCreateInfoEXT\">VkSwapchainPresentModesCreateInfoEXT</a>::<code>pPresentModes</code> in <a href=\"#VkSurfacePresentModeEXT\">VkSurfacePresentModeEXT</a>", "page": "vkspec" }, { "vuid": "VUID-VkSwapchainPresentScalingCreateInfoEXT-presentGravityY-07774", - "text": "<code>presentGravityY</code> <strong class=\"purple\">must</strong> be a valid y-axis present gravity for the surface as returned in <a href=\"#VkSurfacePresentScalingCapabilitiesEXT\">VkSurfacePresentScalingCapabilitiesEXT</a>::<code>supportedPresentGravityY</code>, given <a href=\"#VkSwapchainCreateInfoKHR\">VkSwapchainCreateInfoKHR</a>::<code>presentMode</code> in <a href=\"#VkSurfacePresentModeEXT\">VkSurfacePresentModeEXT</a>", + "text": "<code>presentGravityY</code> <strong class=\"purple\">must</strong> be <code>0</code> or a valid y-axis present gravity for the surface as returned in <a href=\"#VkSurfacePresentScalingCapabilitiesEXT\">VkSurfacePresentScalingCapabilitiesEXT</a>::<code>supportedPresentGravityY</code>, given <a href=\"#VkSwapchainCreateInfoKHR\">VkSwapchainCreateInfoKHR</a>::<code>presentMode</code> in <a href=\"#VkSurfacePresentModeEXT\">VkSurfacePresentModeEXT</a>", "page": "vkspec" }, { "vuid": "VUID-VkSwapchainPresentScalingCreateInfoEXT-presentGravityY-07775", - "text": "If the swapchain is created with <a href=\"#VkSwapchainPresentModesCreateInfoEXT\">VkSwapchainPresentModesCreateInfoEXT</a>, <code>presentGravityY</code> <strong class=\"purple\">must</strong> be a valid y-axis present gravity for the surface as returned in <a href=\"#VkSurfacePresentScalingCapabilitiesEXT\">VkSurfacePresentScalingCapabilitiesEXT</a>::<code>supportedPresentGravityY</code>, given each present mode in <a href=\"#VkSwapchainPresentModesCreateInfoEXT\">VkSwapchainPresentModesCreateInfoEXT</a>::<code>pPresentModes</code> in <a href=\"#VkSurfacePresentModeEXT\">VkSurfacePresentModeEXT</a>", + "text": "If the swapchain is created with <a href=\"#VkSwapchainPresentModesCreateInfoEXT\">VkSwapchainPresentModesCreateInfoEXT</a>, <code>presentGravityY</code> <strong class=\"purple\">must</strong> be <code>0</code> or a valid y-axis present gravity for the surface as returned in <a href=\"#VkSurfacePresentScalingCapabilitiesEXT\">VkSurfacePresentScalingCapabilitiesEXT</a>::<code>supportedPresentGravityY</code>, given each present mode in <a href=\"#VkSwapchainPresentModesCreateInfoEXT\">VkSwapchainPresentModesCreateInfoEXT</a>::<code>pPresentModes</code> in <a href=\"#VkSurfacePresentModeEXT\">VkSurfacePresentModeEXT</a>", + "page": "vkspec" + }, + { + "vuid": "VUID-VkSwapchainPresentScalingCreateInfoEXT-swapchainMaintenance1-10154", + "text": "If the <a href=\"#features-swapchainMaintenance1\"><code>swapchainMaintenance1</code></a> feature is not enabled, then <code>presentScaling</code>, <code>presentGravityX</code>, and <code>presentGravityY</code> <strong class=\"purple\">must</strong> be <code>0</code>", "page": "vkspec" }, { @@ -82830,7 +85714,7 @@ }, { "vuid": "VUID-vkAcquireNextImageKHR-surface-07783", - "text": "If <a href=\"#swapchain-acquire-forward-progress\">forward progress</a> cannot be guaranteed for the <code>surface</code> used to create the <code>swapchain</code> member of <code>pAcquireInfo</code>, the <code>timeout</code> member of <code>pAcquireInfo</code> <strong class=\"purple\">must</strong> not be <code>UINT64_MAX</code>", + "text": "If <a href=\"#swapchain-acquire-forward-progress\">forward progress</a> cannot be guaranteed for the <code>surface</code> used to create the <code>swapchain</code> member of <code>pAcquireInfo</code>, <code>timeout</code> <strong class=\"purple\">must</strong> not be <code>UINT64_MAX</code>", "page": "vkspec" }, { @@ -83040,6 +85924,11 @@ "page": "vkspec" }, { + "vuid": "VUID-VkPresentInfoKHR-swapchainMaintenance1-10158", + "text": "If the <a href=\"#features-swapchainMaintenance1\"><code>swapchainMaintenance1</code></a> feature is not enabled, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> not include a <a href=\"#VkSwapchainPresentFenceInfoEXT\">VkSwapchainPresentFenceInfoEXT</a> structure", + "page": "vkspec" + }, + { "vuid": "VUID-VkPresentInfoKHR-pSwapchains-09199", "text": "If any element of the <code>pSwapchains</code> array has been created with <a href=\"#VkSwapchainPresentModesCreateInfoEXT\">VkSwapchainPresentModesCreateInfoEXT</a>, all of the elements of this array <strong class=\"purple\">must</strong> be created with <a href=\"#VkSwapchainPresentModesCreateInfoEXT\">VkSwapchainPresentModesCreateInfoEXT</a>", "page": "vkspec" @@ -83350,12 +86239,12 @@ }, { "vuid": "VUID-VkSwapchainPresentFenceInfoEXT-pFences-07758", - "text": "Each element of <code>pFences</code> <strong class=\"purple\">must</strong> be unsignaled", + "text": "Each element of <code>pFences</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> be unsignaled", "page": "vkspec" }, { "vuid": "VUID-VkSwapchainPresentFenceInfoEXT-pFences-07759", - "text": "Each element of <code>pFences</code> <strong class=\"purple\">must</strong> not be associated with any other queue command that has not yet completed execution on that queue", + "text": "Each element of <code>pFences</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> not be associated with any other queue command that has not yet completed execution on that queue", "page": "vkspec" }, { @@ -83378,6 +86267,11 @@ "vkReleaseSwapchainImagesEXT": { "core": [ { + "vuid": "VUID-vkReleaseSwapchainImagesEXT-swapchainMaintenance1-10159", + "text": "Feature <a href=\"#features-swapchainMaintenance1\"><code>swapchainMaintenance1</code></a> <strong class=\"purple\">must</strong> be enabled", + "page": "vkspec" + }, + { "vuid": "VUID-vkReleaseSwapchainImagesEXT-device-parameter", "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle", "page": "vkspec" @@ -94163,6 +97057,11 @@ "page": "vkspec" }, { + "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-11007", + "text": "If <code>flags</code> includes <code>VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT</code>, then the <a href=\"#features-deviceGeneratedCommandsEXT\"><code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled", + "page": "vkspec" + }, + { "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-pipelineCreationCacheControl-02875", "text": "If the <a href=\"#features-pipelineCreationCacheControl\"><code>pipelineCreationCacheControl</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT</code> or <code>VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT</code>", "page": "vkspec" @@ -96668,6 +99567,15 @@ } ] }, + "VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT": { + "core": [ + { + "vuid": "VUID-VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT-sType-sType", + "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT</code>", + "page": "vkspec" + } + ] + }, "VkPhysicalDeviceDiagnosticsConfigFeaturesNV": { "core": [ { @@ -96826,6 +99734,15 @@ } ] }, + "VkPhysicalDeviceDepthClampControlFeaturesEXT": { + "core": [ + { + "vuid": "VUID-VkPhysicalDeviceDepthClampControlFeaturesEXT-sType-sType", + "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT</code>", + "page": "vkspec" + } + ] + }, "VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR": { "core": [ { @@ -98178,6 +101095,15 @@ } ] }, + "VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT": { + "core": [ + { + "vuid": "VUID-VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT-sType-sType", + "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT</code>", + "page": "vkspec" + } + ] + }, "VkPhysicalDevicePortabilitySubsetPropertiesKHR": { "core": [ { diff --git a/registry/video.xml b/registry/video.xml index 7e52a1b..2ac5831 100644 --- a/registry/video.xml +++ b/registry/video.xml @@ -77,7 +77,7 @@ The current public version of video.xml is maintained in the default branch <member><type>uint32_t</type> <name>overscan_appropriate_flag</name> : 1</member> <member><type>uint32_t</type> <name>video_signal_type_present_flag</name> : 1</member> <member><type>uint32_t</type> <name>video_full_range_flag</name> : 1</member> - <member><type>uint32_t</type> <name>color_description_present_flag</name> : 1</member> + <member><type>uint32_t</type> <name>color_description_present_flag</name> : 1</member><comment>colour_description_present_flag</comment> <member><type>uint32_t</type> <name>chroma_loc_info_present_flag</name> : 1</member> <member><type>uint32_t</type> <name>timing_info_present_flag</name> : 1</member> <member><type>uint32_t</type> <name>fixed_frame_rate_flag</name> : 1</member> diff --git a/registry/vk.xml b/registry/vk.xml index 2e0b9b7..00d97f1 100644 --- a/registry/vk.xml +++ b/registry/vk.xml @@ -67,7 +67,7 @@ branch of the member gitlab server. <tag name="KHR" author="Khronos" contact="Tom Olson @tomolson"/> <tag name="KHX" author="Khronos" contact="Tom Olson @tomolson"/> <tag name="EXT" author="Multivendor" contact="Jon Leech @oddhack"/> - <tag name="MESA" author="Mesa open source project" contact="Lina Versace @versalinyaa, Daniel Stone @fooishbar, David Airlie @airlied, Faith Ekstrand @gfxstrand, Hans-Kristian Arntzen @HansKristian-Work"/> + <tag name="MESA" author="Mesa open source project" contact="Lina Versace @linyaa-kiwi, Daniel Stone @fooishbar, David Airlie @airlied, Faith Ekstrand @gfxstrand, Hans-Kristian Arntzen @HansKristian-Work"/> <tag name="INTEL" author="Intel Corporation" contact="Slawek Grajewski @sgrajewski"/> <tag name="HUAWEI" author="Huawei Technologies Co. Ltd." contact="Pan Gao @PanGao-h, Juntao Li @Lawrenceleehw"/> <tag name="VALVE" author="Valve Corporation" contact="Pierre-Loup Griffais @plagman, Joshua Ashton @Joshua-Ashton, Hans-Kristian Arntzen @HansKristian-Work"/> @@ -175,7 +175,7 @@ branch of the member gitlab server. #define <name>VKSC_API_VERSION_1_0</name> <type>VK_MAKE_API_VERSION</type>(VKSC_API_VARIANT, 1, 0, 0)// Patch version should always be set to 0</type> <type api="vulkan" category="define">// Version of this file -#define <name>VK_HEADER_VERSION</name> 295</type> +#define <name>VK_HEADER_VERSION</name> 296</type> <type api="vulkan" category="define" requires="VK_HEADER_VERSION">// Complete version of this file #define <name>VK_HEADER_VERSION_COMPLETE</name> <type>VK_MAKE_API_VERSION</type>(0, 1, 3, VK_HEADER_VERSION)</type> <type api="vulkansc" category="define">// Version of this file @@ -389,6 +389,8 @@ typedef void* <name>MTLSharedEvent_id</name>; <type category="bitmask" name="VkRenderingFlagsKHR" alias="VkRenderingFlags"/> <type requires="VkBuildMicromapFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkBuildMicromapFlagsEXT</name>;</type> <type requires="VkMicromapCreateFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkMicromapCreateFlagsEXT</name>;</type> + <type requires="VkIndirectCommandsLayoutUsageFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkIndirectCommandsLayoutUsageFlagsEXT</name>;</type> + <type requires="VkIndirectCommandsInputModeFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkIndirectCommandsInputModeFlagsEXT</name>;</type> <type category="bitmask">typedef <type>VkFlags</type> <name>VkDirectDriverLoadingFlagsLUNARG</name>;</type> <type bitvalues="VkPipelineCreateFlagBits2KHR" category="bitmask">typedef <type>VkFlags64</type> <name>VkPipelineCreateFlags2KHR</name>;</type> <type bitvalues="VkBufferUsageFlagBits2KHR" category="bitmask">typedef <type>VkFlags64</type> <name>VkBufferUsageFlags2KHR</name>;</type> @@ -552,6 +554,8 @@ typedef void* <name>MTLSharedEvent_id</name>; <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_PIPELINE_CACHE"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkPipelineCache</name>)</type> <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_PIPELINE_BINARY_KHR"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkPipelineBinaryKHR</name>)</type> <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkIndirectCommandsLayoutNV</name>)</type> + <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkIndirectCommandsLayoutEXT</name>)</type> + <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkIndirectExecutionSetEXT</name>)</type> <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkDescriptorUpdateTemplate</name>)</type> <type category="handle" name="VkDescriptorUpdateTemplateKHR" alias="VkDescriptorUpdateTemplate"/> <type category="handle" parent="VkDevice" objtypeenum="VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION"><type>VK_DEFINE_NON_DISPATCHABLE_HANDLE</type>(<name>VkSamplerYcbcrConversion</name>)</type> @@ -629,6 +633,7 @@ typedef void* <name>MTLSharedEvent_id</name>; <type name="VkImageUsageFlagBits" category="enum"/> <type name="VkImageViewCreateFlagBits" category="enum"/> <type name="VkImageViewType" category="enum"/> + <type name="VkIndirectCommandsTokenTypeEXT" category="enum"/> <type name="VkSharingMode" category="enum"/> <type name="VkIndexType" category="enum"/> <type name="VkLogicOp" category="enum"/> @@ -781,6 +786,9 @@ typedef void* <name>MTLSharedEvent_id</name>; <type name="VkOpacityMicromapFormatEXT" category="enum"/> <type name="VkOpacityMicromapSpecialIndexEXT" category="enum"/> <type name="VkDeviceFaultVendorBinaryHeaderVersionEXT" category="enum"/> + <type name="VkIndirectCommandsLayoutUsageFlagBitsEXT" category="enum"/> + <type name="VkIndirectExecutionSetInfoTypeEXT" category="enum"/> + <type name="VkIndirectCommandsInputModeFlagBitsEXT" category="enum"/> <type name="VkFrameBoundaryFlagBitsEXT" category="enum"/> <type name="VkMemoryDecompressionMethodFlagBitsNV" category="enum"/> <type name="VkDepthBiasRepresentationEXT" category="enum"/> @@ -800,6 +808,7 @@ typedef void* <name>MTLSharedEvent_id</name>; <type name="VkBlockMatchWindowCompareModeQCOM" category="enum"/> <type name="VkLayeredDriverUnderlyingApiMSFT" category="enum"/> <type name="VkPhysicalDeviceLayeredApiKHR" category="enum"/> + <type name="VkDepthClampModeEXT" category="enum"/> <comment>WSI extensions</comment> <type name="VkColorSpaceKHR" category="enum"/> @@ -1717,7 +1726,7 @@ typedef void* <name>MTLSharedEvent_id</name>; <member values="VK_STRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> <member noautovalidity="true" optional="true"><type>void</type>* <name>pNext</name></member> </type> - <type category="struct" name="VkPipelineLayoutCreateInfo" structextends="VkBindDescriptorSetsInfoKHR,VkPushConstantsInfoKHR,VkPushDescriptorSetInfoKHR,VkPushDescriptorSetWithTemplateInfoKHR,VkSetDescriptorBufferOffsetsInfoEXT,VkBindDescriptorBufferEmbeddedSamplersInfoEXT"> + <type category="struct" name="VkPipelineLayoutCreateInfo" structextends="VkBindDescriptorSetsInfoKHR,VkPushConstantsInfoKHR,VkPushDescriptorSetInfoKHR,VkPushDescriptorSetWithTemplateInfoKHR,VkSetDescriptorBufferOffsetsInfoEXT,VkBindDescriptorBufferEmbeddedSamplersInfoEXT,VkIndirectCommandsLayoutCreateInfoEXT"> <member values="VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO"><type>VkStructureType</type> <name>sType</name></member> <member optional="true">const <type>void</type>* <name>pNext</name></member> <member optional="true"><type>VkPipelineLayoutCreateFlags</type> <name>flags</name></member> @@ -6386,11 +6395,172 @@ typedef void* <name>MTLSharedEvent_id</name>; <member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>depthClipControl</name></member> </type> + <type category="struct" name="VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>VkBool32</type> <name>deviceGeneratedCommands</name></member> + <member><type>VkBool32</type> <name>dynamicGeneratedPipelineLayout</name></member> + </type> + <type category="struct" name="VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member optional="true"><type>void</type>* <name>pNext</name></member> + <member limittype="max"><type>uint32_t</type> <name>maxIndirectPipelineCount</name></member> + <member limittype="max"><type>uint32_t</type> <name>maxIndirectShaderObjectCount</name></member> + <member limittype="max"><type>uint32_t</type> <name>maxIndirectSequenceCount</name></member> + <member limittype="max"><type>uint32_t</type> <name>maxIndirectCommandsTokenCount</name></member> + <member limittype="max"><type>uint32_t</type> <name>maxIndirectCommandsTokenOffset</name></member> + <member limittype="max"><type>uint32_t</type> <name>maxIndirectCommandsIndirectStride</name></member> + <member><type>VkIndirectCommandsInputModeFlagsEXT</type> <name>supportedIndirectCommandsInputModes</name></member> + <member><type>VkShaderStageFlags</type> <name>supportedIndirectCommandsShaderStages</name></member> + <member><type>VkShaderStageFlags</type> <name>supportedIndirectCommandsShaderStagesPipelineBinding</name></member> + <member><type>VkShaderStageFlags</type> <name>supportedIndirectCommandsShaderStagesShaderBinding</name></member> + <member><type>VkBool32</type> <name>deviceGeneratedCommandsTransformFeedback</name></member> + <member><type>VkBool32</type> <name>deviceGeneratedCommandsMultiDrawIndirectCount</name></member> + </type> + <type category="struct" name="VkGeneratedCommandsPipelineInfoEXT" structextends="VkGeneratedCommandsInfoEXT,VkGeneratedCommandsMemoryRequirementsInfoEXT"> + <member values="VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member optional="true"><type>void</type>* <name>pNext</name></member> + <member><type>VkPipeline</type> <name>pipeline</name></member> + </type> + <type category="struct" name="VkGeneratedCommandsShaderInfoEXT" structextends="VkGeneratedCommandsInfoEXT,VkGeneratedCommandsMemoryRequirementsInfoEXT"> + <member values="VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member optional="true"><type>void</type>* <name>pNext</name></member> + <member><type>uint32_t</type> <name>shaderCount</name></member> + <member len="shaderCount">const <type>VkShaderEXT</type>* <name>pShaders</name></member> + </type> + <type category="struct" name="VkGeneratedCommandsMemoryRequirementsInfoEXT"> + <member values="VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member optional="true"><type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkIndirectExecutionSetEXT</type> <name>indirectExecutionSet</name></member> + <member><type>VkIndirectCommandsLayoutEXT</type> <name>indirectCommandsLayout</name></member> + <member><type>uint32_t</type> <name>maxSequenceCount</name></member> + <member><type>uint32_t</type> <name>maxDrawCount</name></member> + </type> + <type category="struct" name="VkIndirectExecutionSetPipelineInfoEXT"> + <member values="VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member optional="true" noautovalidity="true">const <type>void</type>* <name>pNext</name></member> + <member><type>VkPipeline</type> <name>initialPipeline</name></member> + <member><type>uint32_t</type> <name>maxPipelineCount</name></member> + </type> + <type category="struct" name="VkIndirectExecutionSetShaderLayoutInfoEXT"> + <member values="VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member optional="true" noautovalidity="true">const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>uint32_t</type> <name>setLayoutCount</name></member> + <member len="setLayoutCount" optional="false,true">const <type>VkDescriptorSetLayout</type>* <name>pSetLayouts</name></member> + </type> + <type category="struct" name="VkIndirectExecutionSetShaderInfoEXT"> + <member values="VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member optional="true" noautovalidity="true">const <type>void</type>* <name>pNext</name></member> + <member><type>uint32_t</type> <name>shaderCount</name></member> + <member len="shaderCount">const <type>VkShaderEXT</type>* <name>pInitialShaders</name></member> + <member len="shaderCount" optional="true">const <type>VkIndirectExecutionSetShaderLayoutInfoEXT</type>* <name>pSetLayoutInfos</name></member> + <member><type>uint32_t</type> <name>maxShaderCount</name></member> + <member optional="true"><type>uint32_t</type> <name>pushConstantRangeCount</name></member> + <member len="pushConstantRangeCount">const <type>VkPushConstantRange</type>* <name>pPushConstantRanges</name></member> + </type> + <type category="union" name="VkIndirectExecutionSetInfoEXT"> + <member selection="VK_INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT">const <type>VkIndirectExecutionSetPipelineInfoEXT</type>* <name>pPipelineInfo</name></member> + <member selection="VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT">const <type>VkIndirectExecutionSetShaderInfoEXT</type>* <name>pShaderInfo</name></member> + </type> + <type category="struct" name="VkIndirectExecutionSetCreateInfoEXT"> + <member values="VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member optional="true" noautovalidity="true">const <type>void</type>* <name>pNext</name></member> + <member><type>VkIndirectExecutionSetInfoTypeEXT</type> <name>type</name></member> + <member selector="type" noautovalidity="true"><type>VkIndirectExecutionSetInfoEXT</type> <name>info</name></member> + </type> + <type category="struct" name="VkGeneratedCommandsInfoEXT"> + <member values="VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member optional="true" noautovalidity="true">const <type>void</type>* <name>pNext</name></member> + <member><type>VkShaderStageFlags</type> <name>shaderStages</name></member> + <member optional="true"><type>VkIndirectExecutionSetEXT</type> <name>indirectExecutionSet</name></member> + <member><type>VkIndirectCommandsLayoutEXT</type> <name>indirectCommandsLayout</name></member> + <member><type>VkDeviceAddress</type> <name>indirectAddress</name></member> + <member><type>VkDeviceSize</type> <name>indirectAddressSize</name></member> + <member optional="true"><type>VkDeviceAddress</type> <name>preprocessAddress</name></member> + <member><type>VkDeviceSize</type> <name>preprocessSize</name></member> + <member><type>uint32_t</type> <name>maxSequenceCount</name></member> + <member optional="true"><type>VkDeviceAddress</type> <name>sequenceCountAddress</name></member> + <member><type>uint32_t</type> <name>maxDrawCount</name></member> + </type> + <type category="struct" name="VkWriteIndirectExecutionSetPipelineEXT"> + <member values="VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member optional="true" noautovalidity="true">const <type>void</type>* <name>pNext</name></member> + <member><type>uint32_t</type> <name>index</name></member> + <member><type>VkPipeline</type> <name>pipeline</name></member> + </type> + <type category="struct" name="VkWriteIndirectExecutionSetShaderEXT"> + <member values="VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member optional="true" noautovalidity="true">const <type>void</type>* <name>pNext</name></member> + <member><type>uint32_t</type> <name>index</name></member> + <member><type>VkShaderEXT</type> <name>shader</name></member> + </type> + <type category="struct" name="VkIndirectCommandsLayoutCreateInfoEXT"> + <member values="VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member optional="true">const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkIndirectCommandsLayoutUsageFlagsEXT</type> <name>flags</name></member> + <member><type>VkShaderStageFlags</type> <name>shaderStages</name></member> + <member><type>uint32_t</type> <name>indirectStride</name></member> + <member optional="true"><type>VkPipelineLayout</type> <name>pipelineLayout</name></member> + <member><type>uint32_t</type> <name>tokenCount</name></member> + <member len="tokenCount">const <type>VkIndirectCommandsLayoutTokenEXT</type>* <name>pTokens</name></member> + </type> + <type category="struct" name="VkIndirectCommandsLayoutTokenEXT"> + <member values="VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member optional="true" noautovalidity="true">const <type>void</type>* <name>pNext</name></member> + <member><type>VkIndirectCommandsTokenTypeEXT</type> <name>type</name></member> + <member selector="type" noautovalidity="true"><type>VkIndirectCommandsTokenDataEXT</type> <name>data</name></member> + <member><type>uint32_t</type> <name>offset</name></member> + </type> + <type category="struct" name="VkDrawIndirectCountIndirectCommandEXT"> + <member><type>VkDeviceAddress</type> <name>bufferAddress</name></member> + <member><type>uint32_t</type> <name>stride</name></member> + <member><type>uint32_t</type> <name>commandCount</name></member> + </type> + <type category="struct" name="VkIndirectCommandsVertexBufferTokenEXT"> + <member><type>uint32_t</type> <name>vertexBindingUnit</name></member> + </type> + <type category="struct" name="VkBindVertexBufferIndirectCommandEXT"> + <member><type>VkDeviceAddress</type> <name>bufferAddress</name></member> + <member><type>uint32_t</type> <name>size</name></member> + <member><type>uint32_t</type> <name>stride</name></member> + </type> + <type category="struct" name="VkIndirectCommandsIndexBufferTokenEXT"> + <member><type>VkIndirectCommandsInputModeFlagBitsEXT</type> <name>mode</name></member> + </type> + <type category="struct" name="VkBindIndexBufferIndirectCommandEXT"> + <member><type>VkDeviceAddress</type> <name>bufferAddress</name></member> + <member><type>uint32_t</type> <name>size</name></member> + <member><type>VkIndexType</type> <name>indexType</name></member> + </type> + <type category="struct" name="VkIndirectCommandsPushConstantTokenEXT"> + <member><type>VkPushConstantRange</type> <name>updateRange</name></member> + </type> + <type category="struct" name="VkIndirectCommandsExecutionSetTokenEXT"> + <member><type>VkIndirectExecutionSetInfoTypeEXT</type> <name>type</name></member> + <member><type>VkShaderStageFlags</type> <name>shaderStages</name></member> + </type> + <type category="union" name="VkIndirectCommandsTokenDataEXT"> + <member selection="VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT">const <type>VkIndirectCommandsPushConstantTokenEXT</type>* <name>pPushConstant</name></member> + <member selection="VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT">const <type>VkIndirectCommandsVertexBufferTokenEXT</type>* <name>pVertexBuffer</name></member> + <member selection="VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT">const <type>VkIndirectCommandsIndexBufferTokenEXT</type>* <name>pIndexBuffer</name></member> + <member selection="VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT">const <type>VkIndirectCommandsExecutionSetTokenEXT</type>* <name>pExecutionSet</name></member> + </type> <type category="struct" name="VkPipelineViewportDepthClipControlCreateInfoEXT" structextends="VkPipelineViewportStateCreateInfo"> <member values="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> <member optional="true">const <type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>negativeOneToOne</name></member> </type> + <type category="struct" name="VkPhysicalDeviceDepthClampControlFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member> + <member><type>VkBool32</type> <name>depthClampControl</name></member> + </type> + <type category="struct" name="VkPipelineViewportDepthClampControlCreateInfoEXT" structextends="VkPipelineViewportStateCreateInfo"> + <member values="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member> + <member optional="true">const <type>void</type>* <name>pNext</name></member> + <member><type>VkDepthClampModeEXT</type> <name>depthClampMode</name></member> + <member optional="true">const <type>VkDepthClampRangeEXT</type>* <name>pDepthClampRange</name></member> + </type> <type category="struct" name="VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo"> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member> <member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member> @@ -9240,6 +9410,10 @@ typedef void* <name>MTLSharedEvent_id</name>; <member optional="true" noautovalidity="true"><type>void</type>* <name>pNext</name></member> <member><type>VkBool32</type> <name>shaderReplicatedComposites</name></member> </type> + <type category="struct" name="VkDepthClampRangeEXT"> + <member><type>float</type> <name>minDepthClamp</name></member> + <member><type>float</type> <name>maxDepthClamp</name></member> + </type> </types> @@ -11326,6 +11500,30 @@ typedef void* <name>MTLSharedEvent_id</name>; <enums name="VkDeviceFaultVendorBinaryHeaderVersionEXT" type="enum"> <enum value="1" name="VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT"/> </enums> + <enums name="VkIndirectCommandsLayoutUsageFlagBitsEXT" type="bitmask"> + <enum bitpos="0" name="VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT"/> + <enum bitpos="1" name="VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT"/> + </enums> + <enums name="VkIndirectExecutionSetInfoTypeEXT" type="enum"> + <enum value="0" name="VK_INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT"/> + <enum value="1" name="VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT"/> + </enums> + <enums name="VkIndirectCommandsInputModeFlagBitsEXT" type="bitmask"> + <enum bitpos="0" name="VK_INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT"/> + <enum bitpos="1" name="VK_INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT"/> + </enums> + <enums name="VkIndirectCommandsTokenTypeEXT" type="enum"> + <enum value="0" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT"/> + <enum value="1" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT"/> + <enum value="2" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT"/> + <enum value="3" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT"/> + <enum value="4" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT"/> + <enum value="5" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT"/> + <enum value="6" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT"/> + <enum value="7" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT"/> + <enum value="8" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT"/> + <enum value="9" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT"/> + </enums> <enums name="VkDisplacementMicromapFormatNV" type="enum"> <enum value="1" name="VK_DISPLACEMENT_MICROMAP_FORMAT_64_TRIANGLES_64_BYTES_NV"/> <enum value="2" name="VK_DISPLACEMENT_MICROMAP_FORMAT_256_TRIANGLES_128_BYTES_NV"/> @@ -11400,6 +11598,10 @@ typedef void* <name>MTLSharedEvent_id</name>; </enums> <enums name="VkWaylandSurfaceCreateFlagBitsKHR" type="bitmask"> </enums> + <enums name="VkDepthClampModeEXT" type="enum"> + <enum value="0" name="VK_DEPTH_CLAMP_MODE_VIEWPORT_RANGE_EXT"/> + <enum value="1" name="VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT"/> + </enums> <commands comment="Vulkan command definitions"> <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_LAYER_NOT_PRESENT,VK_ERROR_EXTENSION_NOT_PRESENT,VK_ERROR_INCOMPATIBLE_DRIVER"> @@ -12861,6 +13063,66 @@ typedef void* <name>MTLSharedEvent_id</name>; <param optional="true" externsync="true"><type>VkIndirectCommandsLayoutNV</type> <name>indirectCommandsLayout</name></param> <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> </command> + + <command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary" tasks="action,indirection"> + <proto><type>void</type> <name>vkCmdExecuteGeneratedCommandsEXT</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkBool32</type> <name>isPreprocessed</name></param> + <param>const <type>VkGeneratedCommandsInfoEXT</type>* <name>pGeneratedCommandsInfo</name></param> + </command> + <command queues="graphics,compute" renderpass="outside" cmdbufferlevel="primary" tasks="action"> + <proto><type>void</type> <name>vkCmdPreprocessGeneratedCommandsEXT</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param>const <type>VkGeneratedCommandsInfoEXT</type>* <name>pGeneratedCommandsInfo</name></param> + <param externsync="true"><type>VkCommandBuffer</type> <name>stateCommandBuffer</name></param> + </command> + <command> + <proto><type>void</type> <name>vkGetGeneratedCommandsMemoryRequirementsEXT</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkGeneratedCommandsMemoryRequirementsInfoEXT</type>* <name>pInfo</name></param> + <param><type>VkMemoryRequirements2</type>* <name>pMemoryRequirements</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkCreateIndirectCommandsLayoutEXT</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkIndirectCommandsLayoutCreateInfoEXT</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkIndirectCommandsLayoutEXT</type>* <name>pIndirectCommandsLayout</name></param> + </command> + <command> + <proto><type>void</type> <name>vkDestroyIndirectCommandsLayoutEXT</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param optional="true" externsync="true"><type>VkIndirectCommandsLayoutEXT</type> <name>indirectCommandsLayout</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> + <proto><type>VkResult</type> <name>vkCreateIndirectExecutionSetEXT</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkIndirectExecutionSetCreateInfoEXT</type>* <name>pCreateInfo</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + <param><type>VkIndirectExecutionSetEXT</type>* <name>pIndirectExecutionSet</name></param> + </command> + <command> + <proto><type>void</type> <name>vkDestroyIndirectExecutionSetEXT</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param optional="true" externsync="true"><type>VkIndirectExecutionSetEXT</type> <name>indirectExecutionSet</name></param> + <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> + </command> + <command> + <proto><type>void</type> <name>vkUpdateIndirectExecutionSetPipelineEXT</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="true"><type>VkIndirectExecutionSetEXT</type> <name>indirectExecutionSet</name></param> + <param><type>uint32_t</type> <name>executionSetWriteCount</name></param> + <param len="executionSetWriteCount">const <type>VkWriteIndirectExecutionSetPipelineEXT</type>* <name>pExecutionSetWrites</name></param> + </command> + <command> + <proto><type>void</type> <name>vkUpdateIndirectExecutionSetShaderEXT</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param externsync="true"><type>VkIndirectExecutionSetEXT</type> <name>indirectExecutionSet</name></param> + <param><type>uint32_t</type> <name>executionSetWriteCount</name></param> + <param len="executionSetWriteCount">const <type>VkWriteIndirectExecutionSetShaderEXT</type>* <name>pExecutionSetWrites</name></param> + </command> + <command> <proto><type>void</type> <name>vkGetPhysicalDeviceFeatures2</name></proto> <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> @@ -15561,6 +15823,12 @@ typedef void* <name>MTLSharedEvent_id</name>; <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> <param>const <type>VkRenderingInputAttachmentIndexInfoKHR</type>* <name>pInputAttachmentIndexInfo</name></param> </command> + <command queues="graphics" renderpass="both" cmdbufferlevel="primary,secondary" tasks="state"> + <proto><type>void</type> <name>vkCmdSetDepthClampRangeEXT</name></proto> + <param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param> + <param><type>VkDepthClampModeEXT</type> <name>depthClampMode</name></param> + <param optional="true">const <type>VkDepthClampRangeEXT</type>* <name>pDepthClampRange</name></param> + </command> </commands> <feature api="vulkan,vulkansc" name="VK_VERSION_1_0" number="1.0" comment="Vulkan core API interface definitions"> @@ -17883,6 +18151,7 @@ typedef void* <name>MTLSharedEvent_id</name>; <type name="VkRenderPassMultiviewCreateInfoKHR"/> <type name="VkPhysicalDeviceMultiviewFeaturesKHR"/> <type name="VkPhysicalDeviceMultiviewPropertiesKHR"/> + <feature name="multiview" struct="VkPhysicalDeviceMultiviewFeaturesKHR"/> </require> </extension> <extension name="VK_IMG_format_pvrtc" number="55" type="device" author="IMG" contact="Stuart Smith" supported="vulkan" deprecatedby=""> @@ -18872,14 +19141,14 @@ typedef void* <name>MTLSharedEvent_id</name>; <enum value=""VK_MVK_moltenvk"" name="VK_MVK_MOLTENVK_EXTENSION_NAME"/> </require> </extension> - <extension name="VK_EXT_external_memory_dma_buf" number="126" type="device" depends="VK_KHR_external_memory_fd" author="EXT" contact="Lina Versace @versalinyaa" supported="vulkan,vulkansc" ratified="vulkan,vulkansc"> + <extension name="VK_EXT_external_memory_dma_buf" number="126" type="device" depends="VK_KHR_external_memory_fd" author="EXT" contact="Lina Versace @linyaa-kiwi" supported="vulkan,vulkansc" ratified="vulkan,vulkansc"> <require> <enum value="1" name="VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION"/> <enum value=""VK_EXT_external_memory_dma_buf"" name="VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME"/> <enum bitpos="9" extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT"/> </require> </extension> - <extension name="VK_EXT_queue_family_foreign" number="127" type="device" author="EXT" depends="VK_KHR_external_memory,VK_VERSION_1_1" contact="Lina Versace @versalinyaa" supported="vulkan,vulkansc" ratified="vulkan,vulkansc"> + <extension name="VK_EXT_queue_family_foreign" number="127" type="device" author="EXT" depends="VK_KHR_external_memory,VK_VERSION_1_1" contact="Lina Versace @linyaa-kiwi" supported="vulkan,vulkansc" ratified="vulkan,vulkansc"> <require> <enum value="1" name="VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION"/> <enum value=""VK_EXT_queue_family_foreign"" name="VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME"/> @@ -19309,7 +19578,7 @@ typedef void* <name>MTLSharedEvent_id</name>; <command name="vkGetDeviceAccelerationStructureCompatibilityKHR"/> <command name="vkGetAccelerationStructureBuildSizesKHR"/> <feature name="accelerationStructure" struct="VkPhysicalDeviceAccelerationStructureFeaturesKHR"/> - <feature name="bufferDeviceAddress" struct="VkPhysicalDeviceDescriptorIndexingFeatures"/> + <feature name="bufferDeviceAddress" struct="VkPhysicalDeviceBufferDeviceAddressFeatures"/> <feature name="descriptorBindingAccelerationStructureUpdateAfterBind" struct="VkPhysicalDeviceAccelerationStructureFeaturesKHR"/> </require> <require depends="VK_KHR_format_feature_flags2,VK_VERSION_1_3"> @@ -19517,7 +19786,7 @@ typedef void* <name>MTLSharedEvent_id</name>; <type name="VkBindImageMemoryInfoKHR"/> </require> </extension> - <extension name="VK_EXT_image_drm_format_modifier" number="159" type="device" depends="(((VK_KHR_bind_memory2+VK_KHR_get_physical_device_properties2+VK_KHR_sampler_ycbcr_conversion),VK_VERSION_1_1)+VK_KHR_image_format_list),VK_VERSION_1_2" author="EXT" contact="Lina Versace @versalinyaa" supported="vulkan,vulkansc" ratified="vulkan"> + <extension name="VK_EXT_image_drm_format_modifier" number="159" type="device" depends="(((VK_KHR_bind_memory2+VK_KHR_get_physical_device_properties2+VK_KHR_sampler_ycbcr_conversion),VK_VERSION_1_1)+VK_KHR_image_format_list),VK_VERSION_1_2" author="EXT" contact="Lina Versace @linyaa-kiwi" supported="vulkan,vulkansc" ratified="vulkan"> <require> <enum value="2" name="VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION"/> <enum value=""VK_EXT_image_drm_format_modifier"" name="VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME"/> @@ -19593,8 +19862,8 @@ typedef void* <name>MTLSharedEvent_id</name>; <type name="VkDescriptorSetVariableDescriptorCountLayoutSupportEXT"/> <type name="VkDescriptorBindingFlagBitsEXT"/> <type name="VkDescriptorBindingFlagsEXT"/> - <feature name="shaderSampledImageArrayDynamicIndexing" struct="VkPhysicalDeviceDescriptorIndexingFeaturesEXT"/> - <feature name="shaderStorageBufferArrayDynamicIndexing" struct="VkPhysicalDeviceDescriptorIndexingFeaturesEXT"/> + <feature name="shaderSampledImageArrayDynamicIndexing" struct="VkPhysicalDeviceFeatures"/> + <feature name="shaderStorageBufferArrayDynamicIndexing" struct="VkPhysicalDeviceFeatures"/> <feature name="shaderUniformTexelBufferArrayDynamicIndexing" struct="VkPhysicalDeviceDescriptorIndexingFeaturesEXT"/> <feature name="shaderStorageTexelBufferArrayDynamicIndexing" struct="VkPhysicalDeviceDescriptorIndexingFeaturesEXT"/> <feature name="shaderSampledImageArrayNonUniformIndexing" struct="VkPhysicalDeviceDescriptorIndexingFeaturesEXT"/> @@ -20134,6 +20403,10 @@ typedef void* <name>MTLSharedEvent_id</name>; <type name="VkPhysicalDeviceMeshShaderPropertiesNV"/> <type name="VkDrawMeshTasksIndirectCommandNV"/> </require> + <require depends="VK_EXT_device_generated_commands"> + <enum offset="2" extends="VkIndirectCommandsTokenTypeEXT" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT"/> + <enum offset="3" extends="VkIndirectCommandsTokenTypeEXT" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT"/> + </require> </extension> <extension name="VK_NV_fragment_shader_barycentric" number="204" type="device" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" author="NV" contact="Pat Brown @nvpbrown" supported="vulkan" promotedto="VK_KHR_fragment_shader_barycentric"> <require> @@ -20459,6 +20732,7 @@ typedef void* <name>MTLSharedEvent_id</name>; <enum bitpos="7" extends="VkMemoryPropertyFlagBits" name="VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD"/> <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD"/> <type name="VkPhysicalDeviceCoherentMemoryFeaturesAMD"/> + <feature name="deviceCoherentMemory" struct="VkPhysicalDeviceCoherentMemoryFeaturesAMD"/> </require> </extension> <extension name="VK_AMD_extension_231" number="231" author="AMD" contact="Martin Dinkov @mdinkov" supported="disabled"> @@ -21114,6 +21388,7 @@ typedef void* <name>MTLSharedEvent_id</name>; <command name="vkCmdBindPipelineShaderGroupNV"/> <command name="vkCreateIndirectCommandsLayoutNV"/> <command name="vkDestroyIndirectCommandsLayoutNV"/> + <feature name="deviceGeneratedCommands" struct="VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV"/> </require> </extension> <extension name="VK_NV_inherited_viewport_scissor" number="279" type="device" author="NV" contact="David Zhao Akeley @akeley98" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" supported="vulkan"> @@ -21665,6 +21940,11 @@ typedef void* <name>MTLSharedEvent_id</name>; <enum bitpos="17" extends="VkAccessFlagBits2" name="VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV"/> <enum bitpos="18" extends="VkAccessFlagBits2" name="VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV"/> </require> + <require depends="VK_EXT_device_generated_commands"> + <enum extends="VkPipelineStageFlagBits2" name="VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_EXT" alias="VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV"/> + <enum extends="VkAccessFlagBits2" name="VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_EXT" alias="VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV"/> + <enum extends="VkAccessFlagBits2" name="VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_EXT" alias="VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV"/> + </require> <require depends="VK_KHR_fragment_shading_rate"> <enum bitpos="22" extends="VkPipelineStageFlagBits2" name="VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"/> <enum bitpos="23" extends="VkAccessFlagBits2" name="VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR"/> @@ -21923,6 +22203,10 @@ typedef void* <name>MTLSharedEvent_id</name>; <require depends="VK_NV_device_generated_commands"> <enum offset="0" extends="VkIndirectCommandsTokenTypeNV" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV"/> </require> + <require depends="VK_EXT_device_generated_commands"> + <enum offset="0" extends="VkIndirectCommandsTokenTypeEXT" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT"/> + <enum offset="1" extends="VkIndirectCommandsTokenTypeEXT" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT"/> + </require> </extension> <extension name="VK_NV_extension_330" number="330" author="NV" contact="Liam Middlebrook @liam-middlebrook" supported="disabled"> <require> @@ -21945,6 +22229,7 @@ typedef void* <name>MTLSharedEvent_id</name>; <enum extends="VkFormat" name="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT" alias="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16"/> <enum extends="VkFormat" name="VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT" alias="VK_FORMAT_G16_B16R16_2PLANE_444_UNORM"/> <type name="VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT"/> + <feature name="ycbcr2plane444Formats" struct="VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT"/> </require> </extension> <extension name="VK_NV_extension_332" number="332" author="NV" contact="Tony Zlatinski @tzlatinski" supported="disabled"> @@ -22606,6 +22891,9 @@ typedef void* <name>MTLSharedEvent_id</name>; <type name="VkTraceRaysIndirectCommand2KHR"/> <command name="vkCmdTraceRaysIndirect2KHR"/> </require> + <require depends="VK_EXT_device_generated_commands"> + <enum offset="4" extends="VkIndirectCommandsTokenTypeEXT" name="VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT"/> + </require> </extension> <extension name="VK_EXT_extension_388" number="388" author="EXT" contact="Alan Baker @alan-baker" supported="disabled"> <require> @@ -22884,6 +23172,7 @@ typedef void* <name>MTLSharedEvent_id</name>; <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT"/> <type name="VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT"/> <command name="vkSetDeviceMemoryPriorityEXT"/> + <feature name="pageableDeviceLocalMemory" struct="VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT"/> </require> </extension> <extension name="VK_KHR_maintenance4" number="414" type="device" depends="VK_VERSION_1_1" author="KHR" contact="Piers Daniell @pdaniell-nv" supported="vulkan" promotedto="VK_VERSION_1_3" ratified="vulkan"> @@ -23278,7 +23567,7 @@ typedef void* <name>MTLSharedEvent_id</name>; <enum bitpos="47" extends="VkFormatFeatureFlagBits2" name="VK_FORMAT_FEATURE_2_RESERVED_47_BIT_ARM" /> </require> </extension> - <extension name="VK_EXT_external_memory_acquire_unmodified" number="454" type="device" depends="VK_KHR_external_memory,VK_VERSION_1_1" author="EXT" contact="Lina Versace @versalinyaa" supported="vulkan" ratified="vulkan"> + <extension name="VK_EXT_external_memory_acquire_unmodified" number="454" type="device" depends="VK_KHR_external_memory,VK_VERSION_1_1" author="EXT" contact="Lina Versace @linyaa-kiwi" supported="vulkan" ratified="vulkan"> <require> <enum value="1" name="VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_SPEC_VERSION"/> <enum value=""VK_EXT_external_memory_acquire_unmodified"" name="VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXTENSION_NAME"/> @@ -23286,7 +23575,7 @@ typedef void* <name>MTLSharedEvent_id</name>; <type name="VkExternalMemoryAcquireUnmodifiedEXT"/> </require> </extension> - <extension name="VK_GOOGLE_extension_455" number="455" author="GOOGLE" contact="Lina Versace @versalinyaa" supported="disabled"> + <extension name="VK_GOOGLE_extension_455" number="455" author="GOOGLE" contact="Lina Versace @linyaa-kiwi" supported="disabled"> <require> <enum value="0" name="VK_GOOGLE_EXTENSION_455_SPEC_VERSION"/> <enum value=""VK_GOOGLE_extension_455"" name="VK_GOOGLE_EXTENSION_455_EXTENSION_NAME"/> @@ -23763,6 +24052,7 @@ typedef void* <name>MTLSharedEvent_id</name>; <type name="VkAntiLagModeAMD"/> <type name="VkAntiLagStageAMD"/> <command name="vkAntiLagUpdateAMD"/> + <feature name="antiLag" struct="VkPhysicalDeviceAntiLagFeaturesAMD"/> </require> </extension> <extension name="VK_AMD_extension_478" number="478" author="AMD" contact="Stu Smith" supported="disabled"> @@ -23926,6 +24216,9 @@ typedef void* <name>MTLSharedEvent_id</name>; <require depends="VK_NV_coverage_reduction_mode"> <command name="vkCmdSetCoverageReductionModeNV"/> </require> + <require depends="VK_EXT_depth_clamp_control"> + <command name="vkCmdSetDepthClampRangeEXT"/> + </require> </extension> <extension name="VK_KHR_pipeline_binary" number="484" author="KHR" contact="Stu Smith @stu-s" depends="VK_KHR_maintenance5" type="device" supported="vulkan" ratified="vulkan"> <require> @@ -24149,6 +24442,7 @@ typedef void* <name>MTLSharedEvent_id</name>; <enum value=""VK_EXT_dynamic_rendering_unused_attachments"" name="VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME"/> <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT"/> <type name="VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT"/> + <feature name="dynamicRenderingUnusedAttachments" struct="VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT"/> </require> </extension> <extension name="VK_EXT_extension_501" number="501" author="SEC" contact="Chris Hambacher @chambacher" type="device" supported="disabled"> @@ -24267,9 +24561,10 @@ typedef void* <name>MTLSharedEvent_id</name>; <enum value="1" name="VK_KHR_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION"/> <enum value=""VK_KHR_compute_shader_derivatives"" name="VK_KHR_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME"/> <enum offset="0" extends="VkStructureType" extnumber="202" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR"/> - <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR"/> <type name="VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR"/> <type name="VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR"/> + <feature name="computeDerivativeGroupLinear" struct="VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR"/> </require> </extension> <extension name="VK_KHR_video_decode_av1" number="513" author="KHR" depends="VK_KHR_video_decode_queue" contact="Daniel Rakos @aqnuep" type="device" supported="vulkan" ratified="vulkan"> @@ -24815,13 +25110,82 @@ typedef void* <name>MTLSharedEvent_id</name>; <enum value=""VK_NV_extension_572"" name="VK_NV_EXTENSION_572_EXTENSION_NAME"/> </require> </extension> - <extension name="VK_EXT_extension_573" number="573" author="EXT" contact="Mike Blumenkrantz @zmike" supported="disabled"> + <extension name="VK_EXT_device_generated_commands" number="573" author="EXT" type="device" depends="VK_KHR_buffer_device_address+VK_KHR_maintenance5" contact="Mike Blumenkrantz @zmike" supported="vulkan" ratified="vulkan"> <require> - <enum value="0" name="VK_EXT_EXTENSION_573_SPEC_VERSION"/> - <enum value=""VK_EXT_extension_573"" name="VK_EXT_EXTENSION_573_EXTENSION_NAME"/> - <enum bitpos="7" extends="VkShaderCreateFlagBitsEXT" name="VK_SHADER_CREATE_EXTENSION_573_BIT_EXT"/> - <enum bitpos="32" extends="VkBufferUsageFlagBits2KHR" name="VK_BUFFER_USAGE_2_EXTENSION_573_BIT_EXT"/> - <enum bitpos="38" extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_EXTENSION_573_BIT_EXT"/> + <enum value="1" name="VK_EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION"/> + <enum value=""VK_EXT_device_generated_commands"" name="VK_EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME"/> + <enum bitpos="7" extends="VkShaderCreateFlagBitsEXT" name="VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT"/> + <enum bitpos="31" extends="VkBufferUsageFlagBits2KHR" name="VK_BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT"/> + + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT"/> + <enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT"/> + <enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT"/> + <enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT"/> + <enum offset="6" extends="VkStructureType" name="VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT"/> + <enum offset="7" extends="VkStructureType" name="VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT"/> + <enum offset="8" extends="VkStructureType" name="VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT"/> + <enum offset="9" extends="VkStructureType" name="VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT"/> + <enum offset="10" extends="VkStructureType" name="VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT"/> + <enum offset="11" extends="VkStructureType" name="VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT"/> + <enum offset="12" extends="VkStructureType" name="VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT"/> + <enum offset="13" extends="VkStructureType" name="VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT"/> + <enum offset="14" extends="VkStructureType" name="VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT"/> + + <enum offset="0" extends="VkObjectType" name="VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT"/> + <enum offset="1" extends="VkObjectType" name="VK_OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT"/> + + <enum bitpos="38" extends="VkPipelineCreateFlagBits2KHR" name="VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT"/> + + <enum extends="VkPipelineStageFlagBits" name="VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT" alias="VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV"/> + <enum extends="VkAccessFlagBits" name="VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT" alias="VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV"/> + <enum extends="VkAccessFlagBits" name="VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT" alias="VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV"/> + + <type name="VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT"/> + <type name="VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT"/> + <type name="VkGeneratedCommandsMemoryRequirementsInfoEXT"/> + <type name="VkIndirectExecutionSetCreateInfoEXT"/> + <type name="VkIndirectExecutionSetInfoEXT"/> + <type name="VkIndirectExecutionSetPipelineInfoEXT"/> + <type name="VkIndirectExecutionSetShaderInfoEXT"/> + <type name="VkGeneratedCommandsInfoEXT"/> + <type name="VkWriteIndirectExecutionSetPipelineEXT"/> + <type name="VkIndirectCommandsLayoutCreateInfoEXT"/> + <type name="VkIndirectCommandsLayoutTokenEXT"/> + <type name="VkDrawIndirectCountIndirectCommandEXT"/> + <type name="VkIndirectCommandsVertexBufferTokenEXT"/> + <type name="VkBindVertexBufferIndirectCommandEXT"/> + <type name="VkIndirectCommandsIndexBufferTokenEXT"/> + <type name="VkBindIndexBufferIndirectCommandEXT"/> + <type name="VkIndirectCommandsPushConstantTokenEXT"/> + <type name="VkIndirectCommandsExecutionSetTokenEXT"/> + <type name="VkIndirectCommandsTokenDataEXT"/> + <type name="VkIndirectCommandsLayoutEXT"/> + <type name="VkIndirectExecutionSetEXT"/> + <type name="VkIndirectCommandsTokenTypeEXT"/> + <type name="VkIndirectExecutionSetInfoTypeEXT"/> + <type name="VkIndirectCommandsLayoutUsageFlagsEXT"/> + <type name="VkIndirectCommandsLayoutUsageFlagBitsEXT"/> + <type name="VkIndirectCommandsInputModeFlagsEXT"/> + <type name="VkIndirectCommandsInputModeFlagBitsEXT"/> + <type name="VkIndirectExecutionSetShaderLayoutInfoEXT"/> + <type name="VkGeneratedCommandsPipelineInfoEXT"/> + <type name="VkGeneratedCommandsShaderInfoEXT"/> + + <command name="vkGetGeneratedCommandsMemoryRequirementsEXT"/> + <command name="vkCmdPreprocessGeneratedCommandsEXT"/> + <command name="vkCmdExecuteGeneratedCommandsEXT"/> + <command name="vkCreateIndirectCommandsLayoutEXT"/> + <command name="vkDestroyIndirectCommandsLayoutEXT"/> + <command name="vkCreateIndirectExecutionSetEXT"/> + <command name="vkDestroyIndirectExecutionSetEXT"/> + <command name="vkUpdateIndirectExecutionSetPipelineEXT"/> + <command name="vkUpdateIndirectExecutionSetShaderEXT"/> + + <feature name="deviceGeneratedCommands" struct="VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT"/> + </require> + <require depends="VK_EXT_shader_object"> + <type name="VkWriteIndirectExecutionSetShaderEXT"/> </require> </extension> <extension name="VK_KHR_extension_574" number="574" author="KHR" contact="Ralph Potter gitlab:@r_potter" supported="disabled"> @@ -24889,10 +25253,19 @@ typedef void* <name>MTLSharedEvent_id</name>; <enum value=""VK_EXT_extension_582"" name="VK_EXT_EXTENSION_582_EXTENSION_NAME"/> </require> </extension> - <extension name="VK_EXT_extension_583" number="583" author="EXT" contact="Jules Blok @jules" supported="disabled" comment="codespell:ignore blok"> + <extension name="VK_EXT_depth_clamp_control" number="583" depends="VK_KHR_get_physical_device_properties2,VK_VERSION_1_1" type="device" author="EXT" contact="Jules Blok @jules" comment="codespell:ignore blok" supported="vulkan" ratified="vulkan"> <require> - <enum value="0" name="VK_EXT_EXTENSION_583_SPEC_VERSION"/> - <enum value=""VK_EXT_extension_583"" name="VK_EXT_EXTENSION_583_EXTENSION_NAME"/> + <enum value="1" name="VK_EXT_DEPTH_CLAMP_CONTROL_SPEC_VERSION"/> + <enum value=""VK_EXT_depth_clamp_control"" name="VK_EXT_DEPTH_CLAMP_CONTROL_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT"/> + <enum offset="0" extends="VkDynamicState" name="VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT"/> + <type name="VkPhysicalDeviceDepthClampControlFeaturesEXT"/> + <type name="VkPipelineViewportDepthClampControlCreateInfoEXT"/> + <type name="VkDepthClampModeEXT"/> + <type name="VkDepthClampRangeEXT"/> + <command name="vkCmdSetDepthClampRangeEXT"/> + <feature name="depthClampControl" struct="VkPhysicalDeviceDepthClampControlFeaturesEXT"/> </require> </extension> <extension name="VK_EXT_extension_584" number="584" author="EXT" contact="James Jones @cubanismo" supported="disabled"> @@ -25030,6 +25403,18 @@ typedef void* <name>MTLSharedEvent_id</name>; <enum bitpos="0" extends="VkWaylandSurfaceCreateFlagBitsKHR" name="VK_WAYLAND_SURFACE_CREATE_DISABLE_COLOR_MANAGEMENT"/> </require> </extension> + <extension name="VK_KHR_extension_605" number="605" author="KHR" contact="Graeme Leese @gnl21" supported="disabled"> + <require> + <enum value="0" name="VK_KHR_EXTENSION_605_SPEC_VERSION"/> + <enum value=""VK_KHR_extension_605"" name="VK_KHR_EXTENSION_605_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_KHR_extension_606" number="606" author="ARM" contact="Jan-Harald Fredriksen @janharaldfredriksen-arm" supported="disabled"> + <require> + <enum value="0" name="VK_KHR_EXTENSION_606_SPEC_VERSION"/> + <enum value=""VK_KHR_extension_606"" name="VK_KHR_EXTENSION_606_EXTENSION_NAME"/> + </require> + </extension> </extensions> <formats> <format name="VK_FORMAT_R4G4_UNORM_PACK8" class="8-bit" blockSize="1" texelsPerBlock="1" packed="8"> @@ -27304,6 +27689,9 @@ typedef void* <name>MTLSharedEvent_id</name>; <syncstage name="VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV" alias="VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV"> <syncsupport queues="graphics,compute"/> </syncstage> + <syncstage name="VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_EXT" alias="VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV"> + <syncsupport queues="graphics,compute"/> + </syncstage> <syncstage name="VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR" alias="VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"> <syncsupport queues="graphics"/> </syncstage> @@ -27444,6 +27832,12 @@ typedef void* <name>MTLSharedEvent_id</name>; <syncaccess name="VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV" alias="VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV"> <syncsupport stage="VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV"/> </syncaccess> + <syncaccess name="VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_EXT" alias="VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV"> + <syncsupport stage="VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_EXT"/> + </syncaccess> + <syncaccess name="VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_EXT" alias="VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV"> + <syncsupport stage="VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_EXT"/> + </syncaccess> <syncaccess name="VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR" alias="VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR"> <syncsupport stage="VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"/> </syncaccess> @@ -27523,8 +27917,8 @@ typedef void* <name>MTLSharedEvent_id</name>; <syncpipeline name="subpass shading" depends="VK_HUAWEI_subpass_shading"> <syncpipelinestage>VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI</syncpipelinestage> </syncpipeline> - <syncpipeline name="command preprocessing" depends="VK_NV_device_generated_commands"> - <syncpipelinestage>VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV</syncpipelinestage> + <syncpipeline name="command preprocessing" depends="VK_EXT_device_generated_commands,VK_NV_device_generated_commands"> + <syncpipelinestage>VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_EXT</syncpipelinestage> </syncpipeline> <syncpipeline name="acceleration structure build" depends="VK_KHR_acceleration_structure,VK_NV_ray_tracing"> <syncpipelinestage>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</syncpipelinestage> @@ -27552,12 +27946,7 @@ typedef void* <name>MTLSharedEvent_id</name>; <videocodecs> <videocodec name="Decode"> <videocapabilities struct="VkVideoDecodeCapabilitiesKHR"/> - <videoformat name="Decode Output (Coincide)" usage="VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR+VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR"> - <videorequirecapabilities struct="VkVideoDecodeCapabilitiesKHR" member="flags" value="VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR"/> - </videoformat> - <videoformat name="Decode Output (Distinct)" usage="VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR"> - <videorequirecapabilities struct="VkVideoDecodeCapabilitiesKHR" member="flags" value="VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR"/> - </videoformat> + <videoformat name="Decode Output" usage="VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR"/> <videoformat name="DPB" usage="VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR"/> </videocodec> <videocodec name="Encode"> |