Introduce extension inspection functions get[Device|Instance|Deprecated|Promoted...
authorAndreas Süßenbach <asuessenbach@nvidia.com>
Tue, 11 Apr 2023 07:14:50 +0000 (09:14 +0200)
committerGitHub <noreply@github.com>
Tue, 11 Apr 2023 07:14:50 +0000 (09:14 +0200)
VulkanHppGenerator.cpp
VulkanHppGenerator.hpp
tests/ExtensionInspection/CMakeLists.txt
tests/ExtensionInspection/ExtensionInspection.cpp
vulkan/vulkan_extension_inspection.hpp
vulkan/vulkansc_extension_inspection.hpp

index 4d3c6c6..b93dd7c 100644 (file)
@@ -127,6 +127,8 @@ void VulkanHppGenerator::generateExtensionInspectionFile() const
 #ifndef VULKAN_EXTENSION_INSPECTION_HPP
 #  define VULKAN_EXTENSION_INSPECTION_HPP
 
+#include <map>
+#include <set>
 #include <vulkan/${api}.hpp>
 
 namespace VULKAN_HPP_NAMESPACE
@@ -135,19 +137,54 @@ namespace VULKAN_HPP_NAMESPACE
   //=== Extension inspection functions ===
   //======================================
 
+  std::set<std::string> const &              getDeviceExtensions();
+  std::set<std::string> const &              getInstanceExtensions();
+  std::map<std::string, std::string> const & getDeprecatedExtensions();
+  std::map<std::string, std::string> const & getObsoletedExtensions();
+  std::map<std::string, std::string> const & getPromotedExtensions();
   VULKAN_HPP_CONSTEXPR_20 std::string getExtensionDeprecatedBy( std::string const & name );
   VULKAN_HPP_CONSTEXPR_20 std::string getExtensionObsoletedBy( std::string const & name );
   VULKAN_HPP_CONSTEXPR_20 std::string getExtensionPromotedTo( std::string const & name );
+  VULKAN_HPP_CONSTEXPR_20 bool        isDeprecatedExtension( std::string const & name );
   VULKAN_HPP_CONSTEXPR_20 bool        isDeviceExtension( std::string const & name );
-  VULKAN_HPP_CONSTEXPR_20 bool        isExtensionDeprecated( std::string const & name );
-  VULKAN_HPP_CONSTEXPR_20 bool        isExtensionObsoleted( std::string const & name );
-  VULKAN_HPP_CONSTEXPR_20 bool        isExtensionPromoted( std::string const & name );
   VULKAN_HPP_CONSTEXPR_20 bool        isInstanceExtension( std::string const & name );
+  VULKAN_HPP_CONSTEXPR_20 bool        isObsoletedExtension( std::string const & name );
+  VULKAN_HPP_CONSTEXPR_20 bool        isPromotedExtension( std::string const & name );
 
   //=====================================================
   //=== Extension inspection function implementations ===
   //=====================================================
 
+  VULKAN_HPP_INLINE std::map<std::string, std::string> const & getDeprecatedExtensions()
+  {
+    static std::map<std::string, std::string> deprecatedExtensions = { ${deprecatedExtensions} };
+    return deprecatedExtensions;
+  }
+
+  VULKAN_HPP_INLINE std::set<std::string> const & getDeviceExtensions()
+  {
+    static std::set<std::string> deviceExtensions = { ${deviceExtensions} };
+    return deviceExtensions;
+  }
+
+  VULKAN_HPP_INLINE std::set<std::string> const & getInstanceExtensions()
+  {
+    static std::set<std::string> instanceExtensions = { ${instanceExtensions} };
+    return instanceExtensions;
+  }
+
+  VULKAN_HPP_INLINE std::map<std::string, std::string> const & getObsoletedExtensions()
+  {
+    static std::map<std::string, std::string> obsoletedExtensions = { ${obsoletedExtensions} };
+    return obsoletedExtensions;
+  }
+
+  VULKAN_HPP_INLINE std::map<std::string, std::string> const & getPromotedExtensions()
+  {
+    static std::map<std::string, std::string> promotedExtensions = { ${promotedExtensions} };
+    return promotedExtensions;
+  }
+
   VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string getExtensionDeprecatedBy( std::string const & name )
   {
     ${voidName}
@@ -165,32 +202,32 @@ namespace VULKAN_HPP_NAMESPACE
     ${promotedTo}
   }
 
+  VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isDeprecatedExtension( std::string const & name )
+  {
+    ${voidName}
+    return ${deprecatedTest};
+  }
+
   VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isDeviceExtension( std::string const & name )
   {
     return ${deviceTest};
   }
 
-  VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isExtensionDeprecated( std::string const & name )
+  VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isInstanceExtension( std::string const & name )
   {
-    ${voidName}
-    return ${deprecatedTest};
+    return ${instanceTest};
   }
 
-  VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isExtensionObsoleted( std::string const & name )
+  VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isObsoletedExtension( std::string const & name )
   {
     ${voidName}
     return ${obsoletedTest};
   }
 
-  VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isExtensionPromoted( std::string const & name )
+  VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isPromotedExtension( std::string const & name )
   {
     return ${promotedTest};
   }
-
-  VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isInstanceExtension( std::string const & name )
-  {
-    return ${instanceTest};
-  }
 }   // namespace VULKAN_HPP_NAMESPACE
 
 #endif
@@ -199,17 +236,28 @@ namespace VULKAN_HPP_NAMESPACE
   std::string str =
     replaceWithMap( vulkanExtensionInspectionHppTemplate,
                     { { "api", m_api },
+                      { "deprecatedExtensions",
+                        generateReplacedExtensionsList( []( ExtensionData const & extension ) { return extension.isDeprecated; },
+                                                        []( ExtensionData const & extension ) { return extension.deprecatedBy; } ) },
+                      { "deviceExtensions", generateExtensionsList( "device" ) },
                       { "deviceTest", generateExtensionTypeTest( "device" ) },
                       { "deprecatedBy",
                         generateExtensionReplacedBy( []( ExtensionData const & extension ) { return extension.isDeprecated; },
                                                      []( ExtensionData const & extension ) { return extension.deprecatedBy; } ) },
                       { "deprecatedTest", generateExtensionReplacedTest( []( ExtensionData const & extension ) { return extension.isDeprecated; } ) },
+                      { "instanceExtensions", generateExtensionsList( "instance" ) },
                       { "instanceTest", generateExtensionTypeTest( "instance" ) },
                       { "licenseHeader", m_vulkanLicenseHeader },
                       { "obsoletedBy",
                         generateExtensionReplacedBy( []( ExtensionData const & extension ) { return !extension.obsoletedBy.empty(); },
                                                      []( ExtensionData const & extension ) { return extension.obsoletedBy; } ) },
+                      { "obsoletedExtensions",
+                        generateReplacedExtensionsList( []( ExtensionData const & extension ) { return !extension.obsoletedBy.empty(); },
+                                                        []( ExtensionData const & extension ) { return extension.obsoletedBy; } ) },
                       { "obsoletedTest", generateExtensionReplacedTest( []( ExtensionData const & extension ) { return !extension.obsoletedBy.empty(); } ) },
+                      { "promotedExtensions",
+                        generateReplacedExtensionsList( []( ExtensionData const & extension ) { return !extension.promotedTo.empty(); },
+                                                        []( ExtensionData const & extension ) { return extension.promotedTo; } ) },
                       { "promotedTest", generateExtensionReplacedTest( []( ExtensionData const & extension ) { return !extension.promotedTo.empty(); } ) },
                       { "promotedTo",
                         generateExtensionReplacedBy( []( ExtensionData const & extension ) { return !extension.promotedTo.empty(); },
@@ -5665,6 +5713,28 @@ std::string VulkanHppGenerator::generateExtensionReplacedTest( Predicate p ) con
   return replacedTest;
 }
 
+std::string VulkanHppGenerator::generateExtensionsList( std::string const & type ) const
+{
+  std::string extensionsList, previousEnter, previousLeave;
+  for ( auto const & extension : m_extensions )
+  {
+    if ( extension.type == type )
+    {
+      auto [enter, leave] = generateProtection( getProtectFromTitle( extension.name ) );
+      extensionsList += ( ( previousEnter != enter ) ? ( "\n" + previousLeave + enter ) : "\n" ) + "\"" + extension.name + "\", ";
+      previousEnter = enter;
+      previousLeave = leave;
+    }
+  }
+  assert( extensionsList.ends_with( ", " ) );
+  extensionsList = extensionsList.substr( 0, extensionsList.length() - 2 );
+  if ( !previousLeave.empty() )
+  {
+    extensionsList += "\n" + previousLeave;
+  }
+  return extensionsList;
+}
+
 std::string VulkanHppGenerator::generateExtensionTypeTest( std::string const & type ) const
 {
   std::string typeTest, previousEnter, previousLeave;
@@ -8625,6 +8695,33 @@ std::string VulkanHppGenerator::generateRAIIHandleVectorSizeCheck( std::string c
   return sizeChecks;
 }
 
+template <class Predicate, class Extraction>
+std::string VulkanHppGenerator::generateReplacedExtensionsList( Predicate p, Extraction e ) const
+{
+  std::string extensionsList, previousEnter, previousLeave;
+  for ( auto const & extension : m_extensions )
+  {
+    if ( p( extension ) )
+    {
+      auto [enter, leave] = generateProtection( getProtectFromTitle( extension.name ) );
+      extensionsList +=
+        ( ( previousEnter != enter ) ? ( "\n" + previousLeave + enter ) : "\n" ) + "{ \"" + extension.name + "\", \"" + e( extension ) + "\"}, ";
+      previousEnter = enter;
+      previousLeave = leave;
+    }
+  }
+  if ( !extensionsList.empty() )
+  {
+    assert( extensionsList.ends_with( ", " ) );
+    extensionsList = extensionsList.substr( 0, extensionsList.length() - 2 );
+    if ( !previousLeave.empty() )
+    {
+      extensionsList += "\n" + previousLeave;
+    }
+  }
+  return extensionsList;
+}
+
 std::string VulkanHppGenerator::generateResultAssignment( CommandData const & commandData ) const
 {
   std::string resultAssignment;
index 0d3868f..87f8cf4 100644 (file)
@@ -697,6 +697,7 @@ private:
   std::string generateExtensionReplacedBy( Predicate p, Extraction e ) const;
   template <class Predicate>
   std::string generateExtensionReplacedTest( Predicate p ) const;
+  std::string generateExtensionsList( std::string const & type ) const;
   std::string generateExtensionTypeTest( std::string const & type ) const;
   std::string generateFailureCheck( std::vector<std::string> const & successCodes ) const;
   std::string generateFormatTraits() const;
@@ -824,6 +825,8 @@ private:
                                                  size_t                                        initialSkipCount,
                                                  std::map<size_t, std::vector<size_t>> const & countToVectorMap,
                                                  std::set<size_t> const &                      skippedParams ) const;
+  template <class Predicate, class Extraction>
+  std::string generateReplacedExtensionsList( Predicate p, Extraction e ) const;
   std::string generateResultAssignment( CommandData const & commandData ) const;
   std::string generateResultCheck(
     CommandData const & commandData, std::string const & className, std::string const & classSeparator, std::string commandName, bool enumerating ) const;
index 07b66c5..b0f1b53 100644 (file)
@@ -31,5 +31,5 @@ add_executable(ExtensionInspection
        ${SOURCES}
 )
 
-set_target_properties(ExtensionInspection PROPERTIES FOLDER "Tests")
+set_target_properties(ExtensionInspection PROPERTIES CXX_STANDARD 20 FOLDER "Tests")
 target_link_libraries(ExtensionInspection PRIVATE utils)
index b9a44b1..8e50880 100644 (file)
 // VulkanHpp Tests : ExtensionInspection
 //                   Compile test on using extension inspection functions
 
+// ignore warning 4189: local variable is initialized but not referenced
+#if defined( _MSC_VER )
+#  pragma warning( disable : 4189 )
+#elif defined( __clang__ )
+#  pragma clang diagnostic ignored "-Wunused-variable"
+#elif defined( __GNUC__ )
+#  pragma GCC diagnostic ignored "-Wunused-variable"
+#  pragma GCC diagnostic   ignored "-Wunused-but-set-variable"
+#else
+// unknow compiler... just ignore the warnings for yourselves ;)
+#endif
+
 #include <vulkan/vulkan_extension_inspection.hpp>
 
 int main( int /*argc*/, char ** /*argv*/ )
@@ -22,22 +34,32 @@ int main( int /*argc*/, char ** /*argv*/ )
 #if ( 201907 <= __cpp_constexpr ) && ( !defined( __GNUC__ ) || ( 110300 < GCC_VERSION ) )
   static_assert( vk::isInstanceExtension( VK_KHR_SURFACE_EXTENSION_NAME ), "static_assert test failed" );
   static_assert( vk::isDeviceExtension( VK_KHR_SWAPCHAIN_EXTENSION_NAME ), "static assert test failed" );
-  static_assert( vk::isExtensionDeprecated( VK_EXT_DEBUG_REPORT_EXTENSION_NAME ), "static assert test failed" );
+  static_assert( vk::isDeprecatedExtension( VK_EXT_DEBUG_REPORT_EXTENSION_NAME ), "static assert test failed" );
   static_assert( vk::getExtensionDeprecatedBy( VK_EXT_DEBUG_REPORT_EXTENSION_NAME ) == VK_EXT_DEBUG_UTILS_EXTENSION_NAME, "static assert test failed" );
-  static_assert( vk::isExtensionPromoted( VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME ), "static assert test failed" );
+  static_assert( vk::isPromotedExtension( VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME ), "static assert test failed" );
   static_assert( vk::getExtensionPromotedTo( VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME ) == "VK_VERSION_1_2", "static assert test failed" );
+  static_assert( vk::isObsoletedExtension( VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME ), "static assert test failed" );
+  static_assert( vk::getExtensionObsoletedBy( VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME ) == VK_KHR_MAINTENANCE_1_EXTENSION_NAME,
+                 "static assert test failed" );
 #endif
 
-  bool ok = vk::isInstanceExtension( VK_KHR_SURFACE_EXTENSION_NAME ) && vk::isDeviceExtension( VK_KHR_SWAPCHAIN_EXTENSION_NAME );
-  (void)ok;  // keep the compiler silent
-  if ( vk::isExtensionDeprecated( VK_EXT_DEBUG_REPORT_EXTENSION_NAME ) )
-  {
-    std::string ext = vk::getExtensionDeprecatedBy( VK_EXT_DEBUG_REPORT_EXTENSION_NAME );
-  }
-  if ( vk::isExtensionPromoted( VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME ) )
-  {
-    std::string ext = vk::getExtensionPromotedTo( VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME );
-  }
+  std::set<std::string> const & instanceExtensions = vk::getInstanceExtensions();
+  assert( instanceExtensions.find( VK_KHR_SURFACE_EXTENSION_NAME ) != instanceExtensions.end() );
+
+  std::set<std::string> const & deviceExtensions = vk::getDeviceExtensions();
+  assert( deviceExtensions.find( VK_KHR_SWAPCHAIN_EXTENSION_NAME ) != deviceExtensions.end() );
+
+  std::map<std::string, std::string> const & deprecatedExtensions = vk::getDeprecatedExtensions();
+  auto                                       deprecatedIt         = deprecatedExtensions.find( VK_EXT_DEBUG_REPORT_EXTENSION_NAME );
+  assert( ( deprecatedIt != deprecatedExtensions.end() ) && ( deprecatedIt->second == VK_EXT_DEBUG_UTILS_EXTENSION_NAME ) );
+
+  std::map<std::string, std::string> const & obsoletedExtensions = vk::getObsoletedExtensions();
+  auto                                       obsoletedIt         = obsoletedExtensions.find( VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME );
+  assert( ( obsoletedIt != obsoletedExtensions.end() ) && ( obsoletedIt->second == VK_KHR_MAINTENANCE_1_EXTENSION_NAME ) );
+
+  std::map<std::string, std::string> const & promotedExtensions = vk::getPromotedExtensions();
+  auto                                       promotedIt         = promotedExtensions.find( VK_EXT_DEBUG_MARKER_EXTENSION_NAME );
+  assert( ( promotedIt != promotedExtensions.end() ) && ( promotedIt->second == VK_EXT_DEBUG_UTILS_EXTENSION_NAME ) );
 
   return 0;
 }
index 6bc4964..b45361d 100644 (file)
@@ -8,6 +8,8 @@
 #ifndef VULKAN_EXTENSION_INSPECTION_HPP
 #define VULKAN_EXTENSION_INSPECTION_HPP
 
+#include <map>
+#include <set>
 #include <vulkan/vulkan.hpp>
 
 namespace VULKAN_HPP_NAMESPACE
@@ -16,19 +18,541 @@ namespace VULKAN_HPP_NAMESPACE
   //=== Extension inspection functions ===
   //======================================
 
+  std::set<std::string> const &              getDeviceExtensions();
+  std::set<std::string> const &              getInstanceExtensions();
+  std::map<std::string, std::string> const & getDeprecatedExtensions();
+  std::map<std::string, std::string> const & getObsoletedExtensions();
+  std::map<std::string, std::string> const & getPromotedExtensions();
   VULKAN_HPP_CONSTEXPR_20 std::string getExtensionDeprecatedBy( std::string const & name );
   VULKAN_HPP_CONSTEXPR_20 std::string getExtensionObsoletedBy( std::string const & name );
   VULKAN_HPP_CONSTEXPR_20 std::string getExtensionPromotedTo( std::string const & name );
+  VULKAN_HPP_CONSTEXPR_20 bool        isDeprecatedExtension( std::string const & name );
   VULKAN_HPP_CONSTEXPR_20 bool        isDeviceExtension( std::string const & name );
-  VULKAN_HPP_CONSTEXPR_20 bool        isExtensionDeprecated( std::string const & name );
-  VULKAN_HPP_CONSTEXPR_20 bool        isExtensionObsoleted( std::string const & name );
-  VULKAN_HPP_CONSTEXPR_20 bool        isExtensionPromoted( std::string const & name );
   VULKAN_HPP_CONSTEXPR_20 bool        isInstanceExtension( std::string const & name );
+  VULKAN_HPP_CONSTEXPR_20 bool        isObsoletedExtension( std::string const & name );
+  VULKAN_HPP_CONSTEXPR_20 bool        isPromotedExtension( std::string const & name );
 
   //=====================================================
   //=== Extension inspection function implementations ===
   //=====================================================
 
+  VULKAN_HPP_INLINE std::map<std::string, std::string> const & getDeprecatedExtensions()
+  {
+    static std::map<std::string, std::string> deprecatedExtensions = {
+      { "VK_EXT_debug_report", "VK_EXT_debug_utils" },
+      { "VK_NV_glsl_shader", "" },
+      { "VK_NV_dedicated_allocation", "VK_KHR_dedicated_allocation" },
+      { "VK_AMD_gpu_shader_half_float", "VK_KHR_shader_float16_int8" },
+      { "VK_IMG_format_pvrtc", "" },
+      { "VK_NV_external_memory_capabilities", "VK_KHR_external_memory_capabilities" },
+      { "VK_NV_external_memory", "VK_KHR_external_memory" },
+#if defined( VK_USE_PLATFORM_WIN32_KHR )
+      { "VK_NV_external_memory_win32", "VK_KHR_external_memory_win32" },
+#endif /*VK_USE_PLATFORM_WIN32_KHR*/
+      { "VK_EXT_validation_flags", "VK_EXT_validation_features" },
+      { "VK_EXT_shader_subgroup_ballot", "VK_VERSION_1_2" },
+      { "VK_EXT_shader_subgroup_vote", "VK_VERSION_1_1" },
+#if defined( VK_USE_PLATFORM_IOS_MVK )
+      { "VK_MVK_ios_surface", "VK_EXT_metal_surface" },
+#endif /*VK_USE_PLATFORM_IOS_MVK*/
+#if defined( VK_USE_PLATFORM_MACOS_MVK )
+      { "VK_MVK_macos_surface", "VK_EXT_metal_surface" },
+#endif /*VK_USE_PLATFORM_MACOS_MVK*/
+      { "VK_AMD_gpu_shader_int16", "VK_KHR_shader_float16_int8" },
+      { "VK_EXT_buffer_device_address", "VK_KHR_buffer_device_address" }
+    };
+    return deprecatedExtensions;
+  }
+
+  VULKAN_HPP_INLINE std::set<std::string> const & getDeviceExtensions()
+  {
+    static std::set<std::string> deviceExtensions = {
+      "VK_KHR_swapchain",
+      "VK_KHR_display_swapchain",
+      "VK_NV_glsl_shader",
+      "VK_EXT_depth_range_unrestricted",
+      "VK_KHR_sampler_mirror_clamp_to_edge",
+      "VK_IMG_filter_cubic",
+      "VK_AMD_rasterization_order",
+      "VK_AMD_shader_trinary_minmax",
+      "VK_AMD_shader_explicit_vertex_parameter",
+      "VK_EXT_debug_marker",
+      "VK_KHR_video_queue",
+      "VK_KHR_video_decode_queue",
+      "VK_AMD_gcn_shader",
+      "VK_NV_dedicated_allocation",
+      "VK_EXT_transform_feedback",
+      "VK_NVX_binary_import",
+      "VK_NVX_image_view_handle",
+      "VK_AMD_draw_indirect_count",
+      "VK_AMD_negative_viewport_height",
+      "VK_AMD_gpu_shader_half_float",
+      "VK_AMD_shader_ballot",
+#if defined( VK_ENABLE_BETA_EXTENSIONS )
+      "VK_EXT_video_encode_h264",
+      "VK_EXT_video_encode_h265",
+#endif /*VK_ENABLE_BETA_EXTENSIONS*/
+      "VK_KHR_video_decode_h264",
+      "VK_AMD_texture_gather_bias_lod",
+      "VK_AMD_shader_info",
+      "VK_KHR_dynamic_rendering",
+      "VK_AMD_shader_image_load_store_lod",
+      "VK_NV_corner_sampled_image",
+      "VK_KHR_multiview",
+      "VK_IMG_format_pvrtc",
+      "VK_NV_external_memory",
+#if defined( VK_USE_PLATFORM_WIN32_KHR )
+      "VK_NV_external_memory_win32",
+      "VK_NV_win32_keyed_mutex",
+#endif /*VK_USE_PLATFORM_WIN32_KHR*/
+      "VK_KHR_device_group",
+      "VK_KHR_shader_draw_parameters",
+      "VK_EXT_shader_subgroup_ballot",
+      "VK_EXT_shader_subgroup_vote",
+      "VK_EXT_texture_compression_astc_hdr",
+      "VK_EXT_astc_decode_mode",
+      "VK_EXT_pipeline_robustness",
+      "VK_KHR_maintenance1",
+      "VK_KHR_external_memory",
+#if defined( VK_USE_PLATFORM_WIN32_KHR )
+      "VK_KHR_external_memory_win32",
+#endif /*VK_USE_PLATFORM_WIN32_KHR*/
+      "VK_KHR_external_memory_fd",
+#if defined( VK_USE_PLATFORM_WIN32_KHR )
+      "VK_KHR_win32_keyed_mutex",
+#endif /*VK_USE_PLATFORM_WIN32_KHR*/
+      "VK_KHR_external_semaphore",
+#if defined( VK_USE_PLATFORM_WIN32_KHR )
+      "VK_KHR_external_semaphore_win32",
+#endif /*VK_USE_PLATFORM_WIN32_KHR*/
+      "VK_KHR_external_semaphore_fd",
+      "VK_KHR_push_descriptor",
+      "VK_EXT_conditional_rendering",
+      "VK_KHR_shader_float16_int8",
+      "VK_KHR_16bit_storage",
+      "VK_KHR_incremental_present",
+      "VK_KHR_descriptor_update_template",
+      "VK_NV_clip_space_w_scaling",
+      "VK_EXT_display_control",
+      "VK_GOOGLE_display_timing",
+      "VK_NV_sample_mask_override_coverage",
+      "VK_NV_geometry_shader_passthrough",
+      "VK_NV_viewport_array2",
+      "VK_NVX_multiview_per_view_attributes",
+      "VK_NV_viewport_swizzle",
+      "VK_EXT_discard_rectangles",
+      "VK_EXT_conservative_rasterization",
+      "VK_EXT_depth_clip_enable",
+      "VK_EXT_hdr_metadata",
+      "VK_KHR_imageless_framebuffer",
+      "VK_KHR_create_renderpass2",
+      "VK_KHR_shared_presentable_image",
+      "VK_KHR_external_fence",
+#if defined( VK_USE_PLATFORM_WIN32_KHR )
+      "VK_KHR_external_fence_win32",
+#endif /*VK_USE_PLATFORM_WIN32_KHR*/
+      "VK_KHR_external_fence_fd",
+      "VK_KHR_performance_query",
+      "VK_KHR_maintenance2",
+      "VK_KHR_variable_pointers",
+      "VK_EXT_external_memory_dma_buf",
+      "VK_EXT_queue_family_foreign",
+      "VK_KHR_dedicated_allocation",
+#if defined( VK_USE_PLATFORM_ANDROID_KHR )
+      "VK_ANDROID_external_memory_android_hardware_buffer",
+#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
+      "VK_EXT_sampler_filter_minmax",
+      "VK_KHR_storage_buffer_storage_class",
+      "VK_AMD_gpu_shader_int16",
+      "VK_AMD_mixed_attachment_samples",
+      "VK_AMD_shader_fragment_mask",
+      "VK_EXT_inline_uniform_block",
+      "VK_EXT_shader_stencil_export",
+      "VK_EXT_sample_locations",
+      "VK_KHR_relaxed_block_layout",
+      "VK_KHR_get_memory_requirements2",
+      "VK_KHR_image_format_list",
+      "VK_EXT_blend_operation_advanced",
+      "VK_NV_fragment_coverage_to_color",
+      "VK_KHR_acceleration_structure",
+      "VK_KHR_ray_tracing_pipeline",
+      "VK_KHR_ray_query",
+      "VK_NV_framebuffer_mixed_samples",
+      "VK_NV_fill_rectangle",
+      "VK_NV_shader_sm_builtins",
+      "VK_EXT_post_depth_coverage",
+      "VK_KHR_sampler_ycbcr_conversion",
+      "VK_KHR_bind_memory2",
+      "VK_EXT_image_drm_format_modifier",
+      "VK_EXT_validation_cache",
+      "VK_EXT_descriptor_indexing",
+      "VK_EXT_shader_viewport_index_layer",
+#if defined( VK_ENABLE_BETA_EXTENSIONS )
+      "VK_KHR_portability_subset",
+#endif /*VK_ENABLE_BETA_EXTENSIONS*/
+      "VK_NV_shading_rate_image",
+      "VK_NV_ray_tracing",
+      "VK_NV_representative_fragment_test",
+      "VK_KHR_maintenance3",
+      "VK_KHR_draw_indirect_count",
+      "VK_EXT_filter_cubic",
+      "VK_QCOM_render_pass_shader_resolve",
+      "VK_EXT_global_priority",
+      "VK_KHR_shader_subgroup_extended_types",
+      "VK_KHR_8bit_storage",
+      "VK_EXT_external_memory_host",
+      "VK_AMD_buffer_marker",
+      "VK_KHR_shader_atomic_int64",
+      "VK_KHR_shader_clock",
+      "VK_AMD_pipeline_compiler_control",
+      "VK_EXT_calibrated_timestamps",
+      "VK_AMD_shader_core_properties",
+      "VK_KHR_video_decode_h265",
+      "VK_KHR_global_priority",
+      "VK_AMD_memory_overallocation_behavior",
+      "VK_EXT_vertex_attribute_divisor",
+#if defined( VK_USE_PLATFORM_GGP )
+      "VK_GGP_frame_token",
+#endif /*VK_USE_PLATFORM_GGP*/
+      "VK_EXT_pipeline_creation_feedback",
+      "VK_KHR_driver_properties",
+      "VK_KHR_shader_float_controls",
+      "VK_NV_shader_subgroup_partitioned",
+      "VK_KHR_depth_stencil_resolve",
+      "VK_KHR_swapchain_mutable_format",
+      "VK_NV_compute_shader_derivatives",
+      "VK_NV_mesh_shader",
+      "VK_NV_fragment_shader_barycentric",
+      "VK_NV_shader_image_footprint",
+      "VK_NV_scissor_exclusive",
+      "VK_NV_device_diagnostic_checkpoints",
+      "VK_KHR_timeline_semaphore",
+      "VK_INTEL_shader_integer_functions2",
+      "VK_INTEL_performance_query",
+      "VK_KHR_vulkan_memory_model",
+      "VK_EXT_pci_bus_info",
+      "VK_AMD_display_native_hdr",
+      "VK_KHR_shader_terminate_invocation",
+      "VK_EXT_fragment_density_map",
+      "VK_EXT_scalar_block_layout",
+      "VK_GOOGLE_hlsl_functionality1",
+      "VK_GOOGLE_decorate_string",
+      "VK_EXT_subgroup_size_control",
+      "VK_KHR_fragment_shading_rate",
+      "VK_AMD_shader_core_properties2",
+      "VK_AMD_device_coherent_memory",
+      "VK_EXT_shader_image_atomic_int64",
+      "VK_KHR_spirv_1_4",
+      "VK_EXT_memory_budget",
+      "VK_EXT_memory_priority",
+      "VK_NV_dedicated_allocation_image_aliasing",
+      "VK_KHR_separate_depth_stencil_layouts",
+      "VK_EXT_buffer_device_address",
+      "VK_EXT_tooling_info",
+      "VK_EXT_separate_stencil_usage",
+      "VK_KHR_present_wait",
+      "VK_NV_cooperative_matrix",
+      "VK_NV_coverage_reduction_mode",
+      "VK_EXT_fragment_shader_interlock",
+      "VK_EXT_ycbcr_image_arrays",
+      "VK_KHR_uniform_buffer_standard_layout",
+      "VK_EXT_provoking_vertex",
+#if defined( VK_USE_PLATFORM_WIN32_KHR )
+      "VK_EXT_full_screen_exclusive",
+#endif /*VK_USE_PLATFORM_WIN32_KHR*/
+      "VK_KHR_buffer_device_address",
+      "VK_EXT_line_rasterization",
+      "VK_EXT_shader_atomic_float",
+      "VK_EXT_host_query_reset",
+      "VK_EXT_index_type_uint8",
+      "VK_EXT_extended_dynamic_state",
+      "VK_KHR_deferred_host_operations",
+      "VK_KHR_pipeline_executable_properties",
+      "VK_KHR_map_memory2",
+      "VK_EXT_shader_atomic_float2",
+      "VK_EXT_swapchain_maintenance1",
+      "VK_EXT_shader_demote_to_helper_invocation",
+      "VK_NV_device_generated_commands",
+      "VK_NV_inherited_viewport_scissor",
+      "VK_KHR_shader_integer_dot_product",
+      "VK_EXT_texel_buffer_alignment",
+      "VK_QCOM_render_pass_transform",
+      "VK_EXT_device_memory_report",
+      "VK_EXT_robustness2",
+      "VK_EXT_custom_border_color",
+      "VK_GOOGLE_user_type",
+      "VK_KHR_pipeline_library",
+      "VK_NV_present_barrier",
+      "VK_KHR_shader_non_semantic_info",
+      "VK_KHR_present_id",
+      "VK_EXT_private_data",
+      "VK_EXT_pipeline_creation_cache_control",
+#if defined( VK_ENABLE_BETA_EXTENSIONS )
+      "VK_KHR_video_encode_queue",
+#endif /*VK_ENABLE_BETA_EXTENSIONS*/
+      "VK_NV_device_diagnostics_config",
+      "VK_QCOM_render_pass_store_ops",
+      "VK_NV_low_latency",
+#if defined( VK_USE_PLATFORM_METAL_EXT )
+      "VK_EXT_metal_objects",
+#endif /*VK_USE_PLATFORM_METAL_EXT*/
+      "VK_KHR_synchronization2",
+      "VK_EXT_descriptor_buffer",
+      "VK_EXT_graphics_pipeline_library",
+      "VK_AMD_shader_early_and_late_fragment_tests",
+      "VK_KHR_fragment_shader_barycentric",
+      "VK_KHR_shader_subgroup_uniform_control_flow",
+      "VK_KHR_zero_initialize_workgroup_memory",
+      "VK_NV_fragment_shading_rate_enums",
+      "VK_NV_ray_tracing_motion_blur",
+      "VK_EXT_mesh_shader",
+      "VK_EXT_ycbcr_2plane_444_formats",
+      "VK_EXT_fragment_density_map2",
+      "VK_QCOM_rotated_copy_commands",
+      "VK_EXT_image_robustness",
+      "VK_KHR_workgroup_memory_explicit_layout",
+      "VK_KHR_copy_commands2",
+      "VK_EXT_image_compression_control",
+      "VK_EXT_attachment_feedback_loop_layout",
+      "VK_EXT_4444_formats",
+      "VK_EXT_device_fault",
+      "VK_ARM_rasterization_order_attachment_access",
+      "VK_EXT_rgba10x6_formats",
+#if defined( VK_USE_PLATFORM_WIN32_KHR )
+      "VK_NV_acquire_winrt_display",
+#endif /*VK_USE_PLATFORM_WIN32_KHR*/
+      "VK_VALVE_mutable_descriptor_type",
+      "VK_EXT_vertex_input_dynamic_state",
+      "VK_EXT_physical_device_drm",
+      "VK_EXT_device_address_binding_report",
+      "VK_EXT_depth_clip_control",
+      "VK_EXT_primitive_topology_list_restart",
+      "VK_KHR_format_feature_flags2",
+#if defined( VK_USE_PLATFORM_FUCHSIA )
+      "VK_FUCHSIA_external_memory",
+      "VK_FUCHSIA_external_semaphore",
+      "VK_FUCHSIA_buffer_collection",
+#endif /*VK_USE_PLATFORM_FUCHSIA*/
+      "VK_HUAWEI_subpass_shading",
+      "VK_HUAWEI_invocation_mask",
+      "VK_NV_external_memory_rdma",
+      "VK_EXT_pipeline_properties",
+      "VK_EXT_multisampled_render_to_single_sampled",
+      "VK_EXT_extended_dynamic_state2",
+      "VK_EXT_color_write_enable",
+      "VK_EXT_primitives_generated_query",
+      "VK_KHR_ray_tracing_maintenance1",
+      "VK_EXT_global_priority_query",
+      "VK_EXT_image_view_min_lod",
+      "VK_EXT_multi_draw",
+      "VK_EXT_image_2d_view_of_3d",
+      "VK_EXT_shader_tile_image",
+      "VK_EXT_opacity_micromap",
+#if defined( VK_ENABLE_BETA_EXTENSIONS )
+      "VK_NV_displacement_micromap",
+#endif /*VK_ENABLE_BETA_EXTENSIONS*/
+      "VK_EXT_load_store_op_none",
+      "VK_HUAWEI_cluster_culling_shader",
+      "VK_EXT_border_color_swizzle",
+      "VK_EXT_pageable_device_local_memory",
+      "VK_KHR_maintenance4",
+      "VK_ARM_shader_core_properties",
+      "VK_EXT_image_sliced_view_of_3d",
+      "VK_VALVE_descriptor_set_host_mapping",
+      "VK_EXT_depth_clamp_zero_one",
+      "VK_EXT_non_seamless_cube_map",
+      "VK_QCOM_fragment_density_map_offset",
+      "VK_NV_copy_memory_indirect",
+      "VK_NV_memory_decompression",
+      "VK_NV_linear_color_attachment",
+      "VK_EXT_image_compression_control_swapchain",
+      "VK_QCOM_image_processing",
+      "VK_EXT_extended_dynamic_state3",
+      "VK_EXT_subpass_merge_feedback",
+      "VK_EXT_shader_module_identifier",
+      "VK_EXT_rasterization_order_attachment_access",
+      "VK_NV_optical_flow",
+      "VK_EXT_legacy_dithering",
+      "VK_EXT_pipeline_protected_access",
+      "VK_EXT_shader_object",
+      "VK_QCOM_tile_properties",
+      "VK_SEC_amigo_profiling",
+      "VK_QCOM_multiview_per_view_viewports",
+      "VK_NV_ray_tracing_invocation_reorder",
+      "VK_EXT_mutable_descriptor_type",
+      "VK_ARM_shader_core_builtins",
+      "VK_EXT_pipeline_library_group_handles",
+      "VK_QCOM_multiview_per_view_render_areas"
+    };
+    return deviceExtensions;
+  }
+
+  VULKAN_HPP_INLINE std::set<std::string> const & getInstanceExtensions()
+  {
+    static std::set<std::string> instanceExtensions = {
+      "VK_KHR_surface",
+      "VK_KHR_display",
+#if defined( VK_USE_PLATFORM_XLIB_KHR )
+      "VK_KHR_xlib_surface",
+#endif /*VK_USE_PLATFORM_XLIB_KHR*/
+#if defined( VK_USE_PLATFORM_XCB_KHR )
+      "VK_KHR_xcb_surface",
+#endif /*VK_USE_PLATFORM_XCB_KHR*/
+#if defined( VK_USE_PLATFORM_WAYLAND_KHR )
+      "VK_KHR_wayland_surface",
+#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
+#if defined( VK_USE_PLATFORM_ANDROID_KHR )
+      "VK_KHR_android_surface",
+#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
+#if defined( VK_USE_PLATFORM_WIN32_KHR )
+      "VK_KHR_win32_surface",
+#endif /*VK_USE_PLATFORM_WIN32_KHR*/
+      "VK_EXT_debug_report",
+#if defined( VK_USE_PLATFORM_GGP )
+      "VK_GGP_stream_descriptor_surface",
+#endif /*VK_USE_PLATFORM_GGP*/
+      "VK_NV_external_memory_capabilities",
+      "VK_KHR_get_physical_device_properties2",
+      "VK_EXT_validation_flags",
+#if defined( VK_USE_PLATFORM_VI_NN )
+      "VK_NN_vi_surface",
+#endif /*VK_USE_PLATFORM_VI_NN*/
+      "VK_KHR_device_group_creation",
+      "VK_KHR_external_memory_capabilities",
+      "VK_KHR_external_semaphore_capabilities",
+      "VK_EXT_direct_mode_display",
+#if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT )
+      "VK_EXT_acquire_xlib_display",
+#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
+      "VK_EXT_display_surface_counter",
+      "VK_EXT_swapchain_colorspace",
+      "VK_KHR_external_fence_capabilities",
+      "VK_KHR_get_surface_capabilities2",
+      "VK_KHR_get_display_properties2",
+#if defined( VK_USE_PLATFORM_IOS_MVK )
+      "VK_MVK_ios_surface",
+#endif /*VK_USE_PLATFORM_IOS_MVK*/
+#if defined( VK_USE_PLATFORM_MACOS_MVK )
+      "VK_MVK_macos_surface",
+#endif /*VK_USE_PLATFORM_MACOS_MVK*/
+      "VK_EXT_debug_utils",
+#if defined( VK_USE_PLATFORM_FUCHSIA )
+      "VK_FUCHSIA_imagepipe_surface",
+#endif /*VK_USE_PLATFORM_FUCHSIA*/
+#if defined( VK_USE_PLATFORM_METAL_EXT )
+      "VK_EXT_metal_surface",
+#endif /*VK_USE_PLATFORM_METAL_EXT*/
+      "VK_KHR_surface_protected_capabilities",
+      "VK_EXT_validation_features",
+      "VK_EXT_headless_surface",
+      "VK_EXT_surface_maintenance1",
+      "VK_EXT_acquire_drm_display",
+#if defined( VK_USE_PLATFORM_DIRECTFB_EXT )
+      "VK_EXT_directfb_surface",
+#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/
+#if defined( VK_USE_PLATFORM_SCREEN_QNX )
+      "VK_QNX_screen_surface",
+#endif /*VK_USE_PLATFORM_SCREEN_QNX*/
+      "VK_KHR_portability_enumeration",
+      "VK_GOOGLE_surfaceless_query",
+      "VK_LUNARG_direct_driver_loading"
+    };
+    return instanceExtensions;
+  }
+
+  VULKAN_HPP_INLINE std::map<std::string, std::string> const & getObsoletedExtensions()
+  {
+    static std::map<std::string, std::string> obsoletedExtensions = { { "VK_AMD_negative_viewport_height", "VK_KHR_maintenance1" } };
+    return obsoletedExtensions;
+  }
+
+  VULKAN_HPP_INLINE std::map<std::string, std::string> const & getPromotedExtensions()
+  {
+    static std::map<std::string, std::string> promotedExtensions = {
+      { "VK_KHR_sampler_mirror_clamp_to_edge", "VK_VERSION_1_2" },
+      { "VK_EXT_debug_marker", "VK_EXT_debug_utils" },
+      { "VK_AMD_draw_indirect_count", "VK_KHR_draw_indirect_count" },
+      { "VK_KHR_dynamic_rendering", "VK_VERSION_1_3" },
+      { "VK_KHR_multiview", "VK_VERSION_1_1" },
+#if defined( VK_USE_PLATFORM_WIN32_KHR )
+      { "VK_NV_win32_keyed_mutex", "VK_KHR_win32_keyed_mutex" },
+#endif /*VK_USE_PLATFORM_WIN32_KHR*/
+      { "VK_KHR_get_physical_device_properties2", "VK_VERSION_1_1" },
+      { "VK_KHR_device_group", "VK_VERSION_1_1" },
+      { "VK_KHR_shader_draw_parameters", "VK_VERSION_1_1" },
+      { "VK_EXT_texture_compression_astc_hdr", "VK_VERSION_1_3" },
+      { "VK_KHR_maintenance1", "VK_VERSION_1_1" },
+      { "VK_KHR_device_group_creation", "VK_VERSION_1_1" },
+      { "VK_KHR_external_memory_capabilities", "VK_VERSION_1_1" },
+      { "VK_KHR_external_memory", "VK_VERSION_1_1" },
+      { "VK_KHR_external_semaphore_capabilities", "VK_VERSION_1_1" },
+      { "VK_KHR_external_semaphore", "VK_VERSION_1_1" },
+      { "VK_KHR_shader_float16_int8", "VK_VERSION_1_2" },
+      { "VK_KHR_16bit_storage", "VK_VERSION_1_1" },
+      { "VK_KHR_descriptor_update_template", "VK_VERSION_1_1" },
+      { "VK_KHR_imageless_framebuffer", "VK_VERSION_1_2" },
+      { "VK_KHR_create_renderpass2", "VK_VERSION_1_2" },
+      { "VK_KHR_external_fence_capabilities", "VK_VERSION_1_1" },
+      { "VK_KHR_external_fence", "VK_VERSION_1_1" },
+      { "VK_KHR_maintenance2", "VK_VERSION_1_1" },
+      { "VK_KHR_variable_pointers", "VK_VERSION_1_1" },
+      { "VK_KHR_dedicated_allocation", "VK_VERSION_1_1" },
+      { "VK_EXT_sampler_filter_minmax", "VK_VERSION_1_2" },
+      { "VK_KHR_storage_buffer_storage_class", "VK_VERSION_1_1" },
+      { "VK_EXT_inline_uniform_block", "VK_VERSION_1_3" },
+      { "VK_KHR_relaxed_block_layout", "VK_VERSION_1_1" },
+      { "VK_KHR_get_memory_requirements2", "VK_VERSION_1_1" },
+      { "VK_KHR_image_format_list", "VK_VERSION_1_2" },
+      { "VK_KHR_sampler_ycbcr_conversion", "VK_VERSION_1_1" },
+      { "VK_KHR_bind_memory2", "VK_VERSION_1_1" },
+      { "VK_EXT_descriptor_indexing", "VK_VERSION_1_2" },
+      { "VK_EXT_shader_viewport_index_layer", "VK_VERSION_1_2" },
+      { "VK_KHR_maintenance3", "VK_VERSION_1_1" },
+      { "VK_KHR_draw_indirect_count", "VK_VERSION_1_2" },
+      { "VK_EXT_global_priority", "VK_KHR_global_priority" },
+      { "VK_KHR_shader_subgroup_extended_types", "VK_VERSION_1_2" },
+      { "VK_KHR_8bit_storage", "VK_VERSION_1_2" },
+      { "VK_KHR_shader_atomic_int64", "VK_VERSION_1_2" },
+      { "VK_EXT_pipeline_creation_feedback", "VK_VERSION_1_3" },
+      { "VK_KHR_driver_properties", "VK_VERSION_1_2" },
+      { "VK_KHR_shader_float_controls", "VK_VERSION_1_2" },
+      { "VK_KHR_depth_stencil_resolve", "VK_VERSION_1_2" },
+      { "VK_NV_fragment_shader_barycentric", "VK_KHR_fragment_shader_barycentric" },
+      { "VK_KHR_timeline_semaphore", "VK_VERSION_1_2" },
+      { "VK_KHR_vulkan_memory_model", "VK_VERSION_1_2" },
+      { "VK_KHR_shader_terminate_invocation", "VK_VERSION_1_3" },
+      { "VK_EXT_scalar_block_layout", "VK_VERSION_1_2" },
+      { "VK_EXT_subgroup_size_control", "VK_VERSION_1_3" },
+      { "VK_KHR_spirv_1_4", "VK_VERSION_1_2" },
+      { "VK_KHR_separate_depth_stencil_layouts", "VK_VERSION_1_2" },
+      { "VK_EXT_tooling_info", "VK_VERSION_1_3" },
+      { "VK_EXT_separate_stencil_usage", "VK_VERSION_1_2" },
+      { "VK_KHR_uniform_buffer_standard_layout", "VK_VERSION_1_2" },
+      { "VK_KHR_buffer_device_address", "VK_VERSION_1_2" },
+      { "VK_EXT_host_query_reset", "VK_VERSION_1_2" },
+      { "VK_EXT_extended_dynamic_state", "VK_VERSION_1_3" },
+      { "VK_EXT_shader_demote_to_helper_invocation", "VK_VERSION_1_3" },
+      { "VK_KHR_shader_integer_dot_product", "VK_VERSION_1_3" },
+      { "VK_EXT_texel_buffer_alignment", "VK_VERSION_1_3" },
+      { "VK_KHR_shader_non_semantic_info", "VK_VERSION_1_3" },
+      { "VK_EXT_private_data", "VK_VERSION_1_3" },
+      { "VK_EXT_pipeline_creation_cache_control", "VK_VERSION_1_3" },
+      { "VK_KHR_synchronization2", "VK_VERSION_1_3" },
+      { "VK_KHR_zero_initialize_workgroup_memory", "VK_VERSION_1_3" },
+      { "VK_EXT_ycbcr_2plane_444_formats", "VK_VERSION_1_3" },
+      { "VK_EXT_image_robustness", "VK_VERSION_1_3" },
+      { "VK_KHR_copy_commands2", "VK_VERSION_1_3" },
+      { "VK_EXT_4444_formats", "VK_VERSION_1_3" },
+      { "VK_ARM_rasterization_order_attachment_access", "VK_EXT_rasterization_order_attachment_access" },
+      { "VK_VALVE_mutable_descriptor_type", "VK_EXT_mutable_descriptor_type" },
+      { "VK_KHR_format_feature_flags2", "VK_VERSION_1_3" },
+      { "VK_EXT_extended_dynamic_state2", "VK_VERSION_1_3" },
+      { "VK_EXT_global_priority_query", "VK_KHR_global_priority" },
+      { "VK_KHR_maintenance4", "VK_VERSION_1_3" }
+    };
+    return promotedExtensions;
+  }
+
   VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string getExtensionDeprecatedBy( std::string const & name )
   {
     if ( name == "VK_EXT_debug_report" )
@@ -428,6 +952,24 @@ namespace VULKAN_HPP_NAMESPACE
     return "";
   }
 
+  VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isDeprecatedExtension( std::string const & name )
+  {
+    return ( name == "VK_EXT_debug_report" ) || ( name == "VK_NV_glsl_shader" ) || ( name == "VK_NV_dedicated_allocation" ) ||
+           ( name == "VK_AMD_gpu_shader_half_float" ) || ( name == "VK_IMG_format_pvrtc" ) || ( name == "VK_NV_external_memory_capabilities" ) ||
+           ( name == "VK_NV_external_memory" ) ||
+#if defined( VK_USE_PLATFORM_WIN32_KHR )
+           ( name == "VK_NV_external_memory_win32" ) ||
+#endif /*VK_USE_PLATFORM_WIN32_KHR*/
+           ( name == "VK_EXT_validation_flags" ) || ( name == "VK_EXT_shader_subgroup_ballot" ) || ( name == "VK_EXT_shader_subgroup_vote" ) ||
+#if defined( VK_USE_PLATFORM_IOS_MVK )
+           ( name == "VK_MVK_ios_surface" ) ||
+#endif /*VK_USE_PLATFORM_IOS_MVK*/
+#if defined( VK_USE_PLATFORM_MACOS_MVK )
+           ( name == "VK_MVK_macos_surface" ) ||
+#endif /*VK_USE_PLATFORM_MACOS_MVK*/
+           ( name == "VK_AMD_gpu_shader_int16" ) || ( name == "VK_EXT_buffer_device_address" );
+  }
+
   VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isDeviceExtension( std::string const & name )
   {
     return ( name == "VK_KHR_swapchain" ) || ( name == "VK_KHR_display_swapchain" ) || ( name == "VK_NV_glsl_shader" ) ||
@@ -574,63 +1116,6 @@ namespace VULKAN_HPP_NAMESPACE
            ( name == "VK_QCOM_multiview_per_view_render_areas" );
   }
 
-  VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isExtensionDeprecated( std::string const & name )
-  {
-    return ( name == "VK_EXT_debug_report" ) || ( name == "VK_NV_glsl_shader" ) || ( name == "VK_NV_dedicated_allocation" ) ||
-           ( name == "VK_AMD_gpu_shader_half_float" ) || ( name == "VK_IMG_format_pvrtc" ) || ( name == "VK_NV_external_memory_capabilities" ) ||
-           ( name == "VK_NV_external_memory" ) ||
-#if defined( VK_USE_PLATFORM_WIN32_KHR )
-           ( name == "VK_NV_external_memory_win32" ) ||
-#endif /*VK_USE_PLATFORM_WIN32_KHR*/
-           ( name == "VK_EXT_validation_flags" ) || ( name == "VK_EXT_shader_subgroup_ballot" ) || ( name == "VK_EXT_shader_subgroup_vote" ) ||
-#if defined( VK_USE_PLATFORM_IOS_MVK )
-           ( name == "VK_MVK_ios_surface" ) ||
-#endif /*VK_USE_PLATFORM_IOS_MVK*/
-#if defined( VK_USE_PLATFORM_MACOS_MVK )
-           ( name == "VK_MVK_macos_surface" ) ||
-#endif /*VK_USE_PLATFORM_MACOS_MVK*/
-           ( name == "VK_AMD_gpu_shader_int16" ) || ( name == "VK_EXT_buffer_device_address" );
-  }
-
-  VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isExtensionObsoleted( std::string const & name )
-  {
-    return ( name == "VK_AMD_negative_viewport_height" );
-  }
-
-  VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isExtensionPromoted( std::string const & name )
-  {
-    return ( name == "VK_KHR_sampler_mirror_clamp_to_edge" ) || ( name == "VK_EXT_debug_marker" ) || ( name == "VK_AMD_draw_indirect_count" ) ||
-           ( name == "VK_KHR_dynamic_rendering" ) || ( name == "VK_KHR_multiview" ) ||
-#if defined( VK_USE_PLATFORM_WIN32_KHR )
-           ( name == "VK_NV_win32_keyed_mutex" ) ||
-#endif /*VK_USE_PLATFORM_WIN32_KHR*/
-           ( name == "VK_KHR_get_physical_device_properties2" ) || ( name == "VK_KHR_device_group" ) || ( name == "VK_KHR_shader_draw_parameters" ) ||
-           ( name == "VK_EXT_texture_compression_astc_hdr" ) || ( name == "VK_KHR_maintenance1" ) || ( name == "VK_KHR_device_group_creation" ) ||
-           ( name == "VK_KHR_external_memory_capabilities" ) || ( name == "VK_KHR_external_memory" ) || ( name == "VK_KHR_external_semaphore_capabilities" ) ||
-           ( name == "VK_KHR_external_semaphore" ) || ( name == "VK_KHR_shader_float16_int8" ) || ( name == "VK_KHR_16bit_storage" ) ||
-           ( name == "VK_KHR_descriptor_update_template" ) || ( name == "VK_KHR_imageless_framebuffer" ) || ( name == "VK_KHR_create_renderpass2" ) ||
-           ( name == "VK_KHR_external_fence_capabilities" ) || ( name == "VK_KHR_external_fence" ) || ( name == "VK_KHR_maintenance2" ) ||
-           ( name == "VK_KHR_variable_pointers" ) || ( name == "VK_KHR_dedicated_allocation" ) || ( name == "VK_EXT_sampler_filter_minmax" ) ||
-           ( name == "VK_KHR_storage_buffer_storage_class" ) || ( name == "VK_EXT_inline_uniform_block" ) || ( name == "VK_KHR_relaxed_block_layout" ) ||
-           ( name == "VK_KHR_get_memory_requirements2" ) || ( name == "VK_KHR_image_format_list" ) || ( name == "VK_KHR_sampler_ycbcr_conversion" ) ||
-           ( name == "VK_KHR_bind_memory2" ) || ( name == "VK_EXT_descriptor_indexing" ) || ( name == "VK_EXT_shader_viewport_index_layer" ) ||
-           ( name == "VK_KHR_maintenance3" ) || ( name == "VK_KHR_draw_indirect_count" ) || ( name == "VK_EXT_global_priority" ) ||
-           ( name == "VK_KHR_shader_subgroup_extended_types" ) || ( name == "VK_KHR_8bit_storage" ) || ( name == "VK_KHR_shader_atomic_int64" ) ||
-           ( name == "VK_EXT_pipeline_creation_feedback" ) || ( name == "VK_KHR_driver_properties" ) || ( name == "VK_KHR_shader_float_controls" ) ||
-           ( name == "VK_KHR_depth_stencil_resolve" ) || ( name == "VK_NV_fragment_shader_barycentric" ) || ( name == "VK_KHR_timeline_semaphore" ) ||
-           ( name == "VK_KHR_vulkan_memory_model" ) || ( name == "VK_KHR_shader_terminate_invocation" ) || ( name == "VK_EXT_scalar_block_layout" ) ||
-           ( name == "VK_EXT_subgroup_size_control" ) || ( name == "VK_KHR_spirv_1_4" ) || ( name == "VK_KHR_separate_depth_stencil_layouts" ) ||
-           ( name == "VK_EXT_tooling_info" ) || ( name == "VK_EXT_separate_stencil_usage" ) || ( name == "VK_KHR_uniform_buffer_standard_layout" ) ||
-           ( name == "VK_KHR_buffer_device_address" ) || ( name == "VK_EXT_host_query_reset" ) || ( name == "VK_EXT_extended_dynamic_state" ) ||
-           ( name == "VK_EXT_shader_demote_to_helper_invocation" ) || ( name == "VK_KHR_shader_integer_dot_product" ) ||
-           ( name == "VK_EXT_texel_buffer_alignment" ) || ( name == "VK_KHR_shader_non_semantic_info" ) || ( name == "VK_EXT_private_data" ) ||
-           ( name == "VK_EXT_pipeline_creation_cache_control" ) || ( name == "VK_KHR_synchronization2" ) ||
-           ( name == "VK_KHR_zero_initialize_workgroup_memory" ) || ( name == "VK_EXT_ycbcr_2plane_444_formats" ) || ( name == "VK_EXT_image_robustness" ) ||
-           ( name == "VK_KHR_copy_commands2" ) || ( name == "VK_EXT_4444_formats" ) || ( name == "VK_ARM_rasterization_order_attachment_access" ) ||
-           ( name == "VK_VALVE_mutable_descriptor_type" ) || ( name == "VK_KHR_format_feature_flags2" ) || ( name == "VK_EXT_extended_dynamic_state2" ) ||
-           ( name == "VK_EXT_global_priority_query" ) || ( name == "VK_KHR_maintenance4" );
-  }
-
   VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isInstanceExtension( std::string const & name )
   {
     return ( name == "VK_KHR_surface" ) || ( name == "VK_KHR_display" ) ||
@@ -687,6 +1172,45 @@ namespace VULKAN_HPP_NAMESPACE
 #endif /*VK_USE_PLATFORM_SCREEN_QNX*/
            ( name == "VK_KHR_portability_enumeration" ) || ( name == "VK_GOOGLE_surfaceless_query" ) || ( name == "VK_LUNARG_direct_driver_loading" );
   }
+
+  VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isObsoletedExtension( std::string const & name )
+  {
+    return ( name == "VK_AMD_negative_viewport_height" );
+  }
+
+  VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isPromotedExtension( std::string const & name )
+  {
+    return ( name == "VK_KHR_sampler_mirror_clamp_to_edge" ) || ( name == "VK_EXT_debug_marker" ) || ( name == "VK_AMD_draw_indirect_count" ) ||
+           ( name == "VK_KHR_dynamic_rendering" ) || ( name == "VK_KHR_multiview" ) ||
+#if defined( VK_USE_PLATFORM_WIN32_KHR )
+           ( name == "VK_NV_win32_keyed_mutex" ) ||
+#endif /*VK_USE_PLATFORM_WIN32_KHR*/
+           ( name == "VK_KHR_get_physical_device_properties2" ) || ( name == "VK_KHR_device_group" ) || ( name == "VK_KHR_shader_draw_parameters" ) ||
+           ( name == "VK_EXT_texture_compression_astc_hdr" ) || ( name == "VK_KHR_maintenance1" ) || ( name == "VK_KHR_device_group_creation" ) ||
+           ( name == "VK_KHR_external_memory_capabilities" ) || ( name == "VK_KHR_external_memory" ) || ( name == "VK_KHR_external_semaphore_capabilities" ) ||
+           ( name == "VK_KHR_external_semaphore" ) || ( name == "VK_KHR_shader_float16_int8" ) || ( name == "VK_KHR_16bit_storage" ) ||
+           ( name == "VK_KHR_descriptor_update_template" ) || ( name == "VK_KHR_imageless_framebuffer" ) || ( name == "VK_KHR_create_renderpass2" ) ||
+           ( name == "VK_KHR_external_fence_capabilities" ) || ( name == "VK_KHR_external_fence" ) || ( name == "VK_KHR_maintenance2" ) ||
+           ( name == "VK_KHR_variable_pointers" ) || ( name == "VK_KHR_dedicated_allocation" ) || ( name == "VK_EXT_sampler_filter_minmax" ) ||
+           ( name == "VK_KHR_storage_buffer_storage_class" ) || ( name == "VK_EXT_inline_uniform_block" ) || ( name == "VK_KHR_relaxed_block_layout" ) ||
+           ( name == "VK_KHR_get_memory_requirements2" ) || ( name == "VK_KHR_image_format_list" ) || ( name == "VK_KHR_sampler_ycbcr_conversion" ) ||
+           ( name == "VK_KHR_bind_memory2" ) || ( name == "VK_EXT_descriptor_indexing" ) || ( name == "VK_EXT_shader_viewport_index_layer" ) ||
+           ( name == "VK_KHR_maintenance3" ) || ( name == "VK_KHR_draw_indirect_count" ) || ( name == "VK_EXT_global_priority" ) ||
+           ( name == "VK_KHR_shader_subgroup_extended_types" ) || ( name == "VK_KHR_8bit_storage" ) || ( name == "VK_KHR_shader_atomic_int64" ) ||
+           ( name == "VK_EXT_pipeline_creation_feedback" ) || ( name == "VK_KHR_driver_properties" ) || ( name == "VK_KHR_shader_float_controls" ) ||
+           ( name == "VK_KHR_depth_stencil_resolve" ) || ( name == "VK_NV_fragment_shader_barycentric" ) || ( name == "VK_KHR_timeline_semaphore" ) ||
+           ( name == "VK_KHR_vulkan_memory_model" ) || ( name == "VK_KHR_shader_terminate_invocation" ) || ( name == "VK_EXT_scalar_block_layout" ) ||
+           ( name == "VK_EXT_subgroup_size_control" ) || ( name == "VK_KHR_spirv_1_4" ) || ( name == "VK_KHR_separate_depth_stencil_layouts" ) ||
+           ( name == "VK_EXT_tooling_info" ) || ( name == "VK_EXT_separate_stencil_usage" ) || ( name == "VK_KHR_uniform_buffer_standard_layout" ) ||
+           ( name == "VK_KHR_buffer_device_address" ) || ( name == "VK_EXT_host_query_reset" ) || ( name == "VK_EXT_extended_dynamic_state" ) ||
+           ( name == "VK_EXT_shader_demote_to_helper_invocation" ) || ( name == "VK_KHR_shader_integer_dot_product" ) ||
+           ( name == "VK_EXT_texel_buffer_alignment" ) || ( name == "VK_KHR_shader_non_semantic_info" ) || ( name == "VK_EXT_private_data" ) ||
+           ( name == "VK_EXT_pipeline_creation_cache_control" ) || ( name == "VK_KHR_synchronization2" ) ||
+           ( name == "VK_KHR_zero_initialize_workgroup_memory" ) || ( name == "VK_EXT_ycbcr_2plane_444_formats" ) || ( name == "VK_EXT_image_robustness" ) ||
+           ( name == "VK_KHR_copy_commands2" ) || ( name == "VK_EXT_4444_formats" ) || ( name == "VK_ARM_rasterization_order_attachment_access" ) ||
+           ( name == "VK_VALVE_mutable_descriptor_type" ) || ( name == "VK_KHR_format_feature_flags2" ) || ( name == "VK_EXT_extended_dynamic_state2" ) ||
+           ( name == "VK_EXT_global_priority_query" ) || ( name == "VK_KHR_maintenance4" );
+  }
 }  // namespace VULKAN_HPP_NAMESPACE
 
 #endif
index c3c0b7a..e2d41e8 100644 (file)
@@ -8,6 +8,8 @@
 #ifndef VULKAN_EXTENSION_INSPECTION_HPP
 #define VULKAN_EXTENSION_INSPECTION_HPP
 
+#include <map>
+#include <set>
 #include <vulkan/vulkansc.hpp>
 
 namespace VULKAN_HPP_NAMESPACE
@@ -16,19 +18,144 @@ namespace VULKAN_HPP_NAMESPACE
   //=== Extension inspection functions ===
   //======================================
 
+  std::set<std::string> const &              getDeviceExtensions();
+  std::set<std::string> const &              getInstanceExtensions();
+  std::map<std::string, std::string> const & getDeprecatedExtensions();
+  std::map<std::string, std::string> const & getObsoletedExtensions();
+  std::map<std::string, std::string> const & getPromotedExtensions();
   VULKAN_HPP_CONSTEXPR_20 std::string getExtensionDeprecatedBy( std::string const & name );
   VULKAN_HPP_CONSTEXPR_20 std::string getExtensionObsoletedBy( std::string const & name );
   VULKAN_HPP_CONSTEXPR_20 std::string getExtensionPromotedTo( std::string const & name );
+  VULKAN_HPP_CONSTEXPR_20 bool        isDeprecatedExtension( std::string const & name );
   VULKAN_HPP_CONSTEXPR_20 bool        isDeviceExtension( std::string const & name );
-  VULKAN_HPP_CONSTEXPR_20 bool        isExtensionDeprecated( std::string const & name );
-  VULKAN_HPP_CONSTEXPR_20 bool        isExtensionObsoleted( std::string const & name );
-  VULKAN_HPP_CONSTEXPR_20 bool        isExtensionPromoted( std::string const & name );
   VULKAN_HPP_CONSTEXPR_20 bool        isInstanceExtension( std::string const & name );
+  VULKAN_HPP_CONSTEXPR_20 bool        isObsoletedExtension( std::string const & name );
+  VULKAN_HPP_CONSTEXPR_20 bool        isPromotedExtension( std::string const & name );
 
   //=====================================================
   //=== Extension inspection function implementations ===
   //=====================================================
 
+  VULKAN_HPP_INLINE std::map<std::string, std::string> const & getDeprecatedExtensions()
+  {
+    static std::map<std::string, std::string> deprecatedExtensions = {
+#if defined( VK_USE_PLATFORM_SCI )
+      { "VK_NV_external_sci_sync", "VK_NV_external_sci_sync2" }
+#endif /*VK_USE_PLATFORM_SCI*/
+    };
+    return deprecatedExtensions;
+  }
+
+  VULKAN_HPP_INLINE std::set<std::string> const & getDeviceExtensions()
+  {
+    static std::set<std::string> deviceExtensions = {
+      "VK_KHR_swapchain",
+      "VK_KHR_display_swapchain",
+      "VK_EXT_depth_range_unrestricted",
+      "VK_NV_private_vendor_info",
+      "VK_EXT_texture_compression_astc_hdr",
+      "VK_EXT_astc_decode_mode",
+      "VK_KHR_external_memory_fd",
+      "VK_KHR_external_semaphore_fd",
+      "VK_KHR_incremental_present",
+      "VK_EXT_display_control",
+      "VK_EXT_discard_rectangles",
+      "VK_EXT_conservative_rasterization",
+      "VK_EXT_depth_clip_enable",
+      "VK_EXT_hdr_metadata",
+      "VK_KHR_shared_presentable_image",
+      "VK_KHR_external_fence_fd",
+      "VK_KHR_performance_query",
+      "VK_EXT_external_memory_dma_buf",
+      "VK_EXT_queue_family_foreign",
+      "VK_EXT_shader_stencil_export",
+      "VK_EXT_sample_locations",
+      "VK_EXT_blend_operation_advanced",
+      "VK_EXT_post_depth_coverage",
+      "VK_EXT_image_drm_format_modifier",
+      "VK_EXT_filter_cubic",
+      "VK_EXT_global_priority",
+      "VK_EXT_external_memory_host",
+      "VK_KHR_shader_clock",
+      "VK_EXT_calibrated_timestamps",
+      "VK_EXT_vertex_attribute_divisor",
+      "VK_KHR_swapchain_mutable_format",
+      "VK_EXT_pci_bus_info",
+      "VK_KHR_shader_terminate_invocation",
+      "VK_EXT_subgroup_size_control",
+      "VK_KHR_fragment_shading_rate",
+      "VK_EXT_shader_image_atomic_int64",
+      "VK_EXT_memory_budget",
+      "VK_EXT_fragment_shader_interlock",
+      "VK_EXT_ycbcr_image_arrays",
+      "VK_EXT_line_rasterization",
+      "VK_EXT_shader_atomic_float",
+      "VK_EXT_index_type_uint8",
+      "VK_EXT_extended_dynamic_state",
+      "VK_EXT_shader_demote_to_helper_invocation",
+      "VK_EXT_texel_buffer_alignment",
+      "VK_EXT_robustness2",
+      "VK_EXT_custom_border_color",
+      "VK_KHR_object_refresh",
+      "VK_KHR_synchronization2",
+      "VK_EXT_ycbcr_2plane_444_formats",
+      "VK_EXT_image_robustness",
+      "VK_KHR_copy_commands2",
+      "VK_EXT_4444_formats",
+      "VK_EXT_vertex_input_dynamic_state",
+#if defined( VK_USE_PLATFORM_SCI )
+      "VK_NV_external_sci_sync",
+      "VK_NV_external_memory_sci_buf",
+#endif /*VK_USE_PLATFORM_SCI*/
+      "VK_EXT_extended_dynamic_state2",
+      "VK_EXT_color_write_enable",
+#if defined( VK_USE_PLATFORM_SCI )
+      "VK_NV_external_sci_sync2"
+#endif /*VK_USE_PLATFORM_SCI*/
+    };
+    return deviceExtensions;
+  }
+
+  VULKAN_HPP_INLINE std::set<std::string> const & getInstanceExtensions()
+  {
+    static std::set<std::string> instanceExtensions = { "VK_KHR_surface",
+                                                        "VK_KHR_display",
+                                                        "VK_EXT_direct_mode_display",
+                                                        "VK_EXT_display_surface_counter",
+                                                        "VK_EXT_swapchain_colorspace",
+                                                        "VK_KHR_get_surface_capabilities2",
+                                                        "VK_KHR_get_display_properties2",
+                                                        "VK_EXT_debug_utils",
+                                                        "VK_EXT_validation_features",
+                                                        "VK_EXT_headless_surface",
+                                                        "VK_EXT_application_parameters" };
+    return instanceExtensions;
+  }
+
+  VULKAN_HPP_INLINE std::map<std::string, std::string> const & getObsoletedExtensions()
+  {
+    static std::map<std::string, std::string> obsoletedExtensions = {};
+    return obsoletedExtensions;
+  }
+
+  VULKAN_HPP_INLINE std::map<std::string, std::string> const & getPromotedExtensions()
+  {
+    static std::map<std::string, std::string> promotedExtensions = { { "VK_EXT_texture_compression_astc_hdr", "VK_VERSION_1_3" },
+                                                                     { "VK_EXT_global_priority", "VK_KHR_global_priority" },
+                                                                     { "VK_KHR_shader_terminate_invocation", "VK_VERSION_1_3" },
+                                                                     { "VK_EXT_subgroup_size_control", "VK_VERSION_1_3" },
+                                                                     { "VK_EXT_extended_dynamic_state", "VK_VERSION_1_3" },
+                                                                     { "VK_EXT_shader_demote_to_helper_invocation", "VK_VERSION_1_3" },
+                                                                     { "VK_EXT_texel_buffer_alignment", "VK_VERSION_1_3" },
+                                                                     { "VK_KHR_synchronization2", "VK_VERSION_1_3" },
+                                                                     { "VK_EXT_ycbcr_2plane_444_formats", "VK_VERSION_1_3" },
+                                                                     { "VK_EXT_image_robustness", "VK_VERSION_1_3" },
+                                                                     { "VK_KHR_copy_commands2", "VK_VERSION_1_3" },
+                                                                     { "VK_EXT_4444_formats", "VK_VERSION_1_3" },
+                                                                     { "VK_EXT_extended_dynamic_state2", "VK_VERSION_1_3" } };
+    return promotedExtensions;
+  }
+
   VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string getExtensionDeprecatedBy( std::string const & name )
   {
     (void)name;
@@ -107,6 +234,16 @@ namespace VULKAN_HPP_NAMESPACE
     return "";
   }
 
+  VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isDeprecatedExtension( std::string const & name )
+  {
+    (void)name;
+    return
+#if defined( VK_USE_PLATFORM_SCI )
+      ( name == "VK_NV_external_sci_sync" ) ||
+#endif /*VK_USE_PLATFORM_SCI*/
+      false;
+  }
+
   VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isDeviceExtension( std::string const & name )
   {
     return ( name == "VK_KHR_swapchain" ) || ( name == "VK_KHR_display_swapchain" ) || ( name == "VK_EXT_depth_range_unrestricted" ) ||
@@ -138,23 +275,21 @@ namespace VULKAN_HPP_NAMESPACE
       ;
   }
 
-  VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isExtensionDeprecated( std::string const & name )
+  VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isInstanceExtension( std::string const & name )
   {
-    (void)name;
-    return
-#if defined( VK_USE_PLATFORM_SCI )
-      ( name == "VK_NV_external_sci_sync" ) ||
-#endif /*VK_USE_PLATFORM_SCI*/
-      false;
+    return ( name == "VK_KHR_surface" ) || ( name == "VK_KHR_display" ) || ( name == "VK_EXT_direct_mode_display" ) ||
+           ( name == "VK_EXT_display_surface_counter" ) || ( name == "VK_EXT_swapchain_colorspace" ) || ( name == "VK_KHR_get_surface_capabilities2" ) ||
+           ( name == "VK_KHR_get_display_properties2" ) || ( name == "VK_EXT_debug_utils" ) || ( name == "VK_EXT_validation_features" ) ||
+           ( name == "VK_EXT_headless_surface" ) || ( name == "VK_EXT_application_parameters" );
   }
 
-  VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isExtensionObsoleted( std::string const & name )
+  VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isObsoletedExtension( std::string const & name )
   {
     (void)name;
     return false;
   }
 
-  VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isExtensionPromoted( std::string const & name )
+  VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isPromotedExtension( std::string const & name )
   {
     return ( name == "VK_EXT_texture_compression_astc_hdr" ) || ( name == "VK_EXT_global_priority" ) || ( name == "VK_KHR_shader_terminate_invocation" ) ||
            ( name == "VK_EXT_subgroup_size_control" ) || ( name == "VK_EXT_extended_dynamic_state" ) ||
@@ -162,14 +297,6 @@ namespace VULKAN_HPP_NAMESPACE
            ( name == "VK_EXT_ycbcr_2plane_444_formats" ) || ( name == "VK_EXT_image_robustness" ) || ( name == "VK_KHR_copy_commands2" ) ||
            ( name == "VK_EXT_4444_formats" ) || ( name == "VK_EXT_extended_dynamic_state2" );
   }
-
-  VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isInstanceExtension( std::string const & name )
-  {
-    return ( name == "VK_KHR_surface" ) || ( name == "VK_KHR_display" ) || ( name == "VK_EXT_direct_mode_display" ) ||
-           ( name == "VK_EXT_display_surface_counter" ) || ( name == "VK_EXT_swapchain_colorspace" ) || ( name == "VK_KHR_get_surface_capabilities2" ) ||
-           ( name == "VK_KHR_get_display_properties2" ) || ( name == "VK_EXT_debug_utils" ) || ( name == "VK_EXT_validation_features" ) ||
-           ( name == "VK_EXT_headless_surface" ) || ( name == "VK_EXT_application_parameters" );
-  }
 }  // namespace VULKAN_HPP_NAMESPACE
 
 #endif