Update for Vulkan-Docs 1.2.167
authorJon Leech <oddhack@sonic.net>
Tue, 19 Jan 2021 13:50:13 +0000 (05:50 -0800)
committerJon Leech <devrel@oddhack.org>
Tue, 19 Jan 2021 13:51:22 +0000 (05:51 -0800)
include/vulkan/vk_platform.h
include/vulkan/vulkan.hpp
include/vulkan/vulkan_core.h
registry/validusage.json
registry/vk.xml

index 048322d..7185845 100644 (file)
@@ -58,7 +58,9 @@ extern "C"
     #define VKAPI_PTR
 #endif
 
-#include <stddef.h>
+#if !defined(VK_NO_STDDEF_H)
+    #include <stddef.h>
+#endif // !defined(VK_NO_STDDEF_H)
 
 #if !defined(VK_NO_STDINT_H)
     #if defined(_MSC_VER) && (_MSC_VER < 1600)
index a71d25b..3ba6898 100644 (file)
@@ -94,7 +94,7 @@ extern "C" __declspec( dllimport ) FARPROC __stdcall GetProcAddress( HINSTANCE h
 #endif
 
 
-static_assert( VK_HEADER_VERSION ==  166 , "Wrong VK_HEADER_VERSION!" );
+static_assert( VK_HEADER_VERSION ==  167 , "Wrong VK_HEADER_VERSION!" );
 
 // 32-bit vulkan is not typesafe for 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
@@ -253,6 +253,11 @@ namespace VULKAN_HPP_NAMESPACE
       , m_ptr( ptr )
     {}
 
+#if __GNUC__ >= 9
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Winit-list-lifetime"
+#endif
+
     ArrayProxy( std::initializer_list<T> const & list ) VULKAN_HPP_NOEXCEPT
       : m_count( static_cast<uint32_t>( list.size() ) )
       , m_ptr( list.begin() )
@@ -275,6 +280,10 @@ namespace VULKAN_HPP_NAMESPACE
       , m_ptr( list.begin() )
     {}
 
+#if __GNUC__ >= 9
+#pragma GCC diagnostic pop
+#endif
+
     template <size_t N>
     ArrayProxy( std::array<T, N> const & data ) VULKAN_HPP_NOEXCEPT
       : m_count( N )
@@ -383,12 +392,22 @@ namespace VULKAN_HPP_NAMESPACE
       , m_ptr( nullptr )
     {}
 
+    ArrayProxyNoTemporaries( T & value ) VULKAN_HPP_NOEXCEPT
+      : m_count( 1 )
+      , m_ptr( &value )
+    {}
+
+    ArrayProxyNoTemporaries( T && value ) = delete;
+
     template <typename B = T, typename std::enable_if<std::is_const<B>::value, int>::type = 0>
     ArrayProxyNoTemporaries( typename std::remove_const<T>::type & value ) VULKAN_HPP_NOEXCEPT
       : m_count( 1 )
       , m_ptr( &value )
     {}
 
+    template <typename B = T, typename std::enable_if<std::is_const<B>::value, int>::type = 0>
+    ArrayProxyNoTemporaries( typename std::remove_const<T>::type && value ) = delete;
+
     ArrayProxyNoTemporaries( uint32_t count, T * ptr ) VULKAN_HPP_NOEXCEPT
       : m_count( count )
       , m_ptr( ptr )
@@ -405,25 +424,33 @@ namespace VULKAN_HPP_NAMESPACE
       , m_ptr( list.begin() )
     {}
 
+    ArrayProxyNoTemporaries( std::initializer_list<T> const && list ) = delete;
+
     template <typename B = T, typename std::enable_if<std::is_const<B>::value, int>::type = 0>
-    ArrayProxyNoTemporaries( std::initializer_list<typename std::remove_const<T>::type> const & list ) VULKAN_HPP_NOEXCEPT
+    ArrayProxyNoTemporaries( std::initializer_list<typename std::remove_const<T>::type> const & list )
+      VULKAN_HPP_NOEXCEPT
       : m_count( static_cast<uint32_t>( list.size() ) )
       , m_ptr( list.begin() )
     {}
 
+    template <typename B = T, typename std::enable_if<std::is_const<B>::value, int>::type = 0>
+    ArrayProxyNoTemporaries( std::initializer_list<typename std::remove_const<T>::type> const && list ) = delete;
+
     ArrayProxyNoTemporaries( std::initializer_list<T> & list ) VULKAN_HPP_NOEXCEPT
       : m_count( static_cast<uint32_t>( list.size() ) )
       , m_ptr( list.begin() )
     {}
 
+    ArrayProxyNoTemporaries( std::initializer_list<T> && list ) = delete;
+
     template <typename B = T, typename std::enable_if<std::is_const<B>::value, int>::type = 0>
     ArrayProxyNoTemporaries( std::initializer_list<typename std::remove_const<T>::type> & list ) VULKAN_HPP_NOEXCEPT
       : m_count( static_cast<uint32_t>( list.size() ) )
       , m_ptr( list.begin() )
     {}
 
-    ArrayProxyNoTemporaries( std::initializer_list<T> const && list ) VULKAN_HPP_NOEXCEPT = delete;
-    ArrayProxyNoTemporaries( std::initializer_list<T> && list ) VULKAN_HPP_NOEXCEPT       = delete;
+    template <typename B = T, typename std::enable_if<std::is_const<B>::value, int>::type = 0>
+    ArrayProxyNoTemporaries( std::initializer_list<typename std::remove_const<T>::type> && list ) = delete;
 
     template <size_t N>
     ArrayProxyNoTemporaries( std::array<T, N> const & data ) VULKAN_HPP_NOEXCEPT
@@ -431,28 +458,35 @@ namespace VULKAN_HPP_NAMESPACE
       , m_ptr( data.data() )
     {}
 
+    template <size_t N>
+    ArrayProxyNoTemporaries( std::array<T, N> const && data ) = delete;
+
     template <size_t N, typename B = T, typename std::enable_if<std::is_const<B>::value, int>::type = 0>
     ArrayProxyNoTemporaries( std::array<typename std::remove_const<T>::type, N> const & data ) VULKAN_HPP_NOEXCEPT
       : m_count( N )
       , m_ptr( data.data() )
     {}
 
+    template <size_t N, typename B = T, typename std::enable_if<std::is_const<B>::value, int>::type = 0>
+    ArrayProxyNoTemporaries( std::array<typename std::remove_const<T>::type, N> const && data ) = delete;
+
     template <size_t N>
     ArrayProxyNoTemporaries( std::array<T, N> & data ) VULKAN_HPP_NOEXCEPT
       : m_count( N )
       , m_ptr( data.data() )
     {}
 
+    template <size_t N>
+    ArrayProxyNoTemporaries( std::array<T, N> && data ) = delete;
+
     template <size_t N, typename B = T, typename std::enable_if<std::is_const<B>::value, int>::type = 0>
     ArrayProxyNoTemporaries( std::array<typename std::remove_const<T>::type, N> & data ) VULKAN_HPP_NOEXCEPT
       : m_count( N )
       , m_ptr( data.data() )
     {}
 
-    template <size_t N>
-    ArrayProxyNoTemporaries( std::array<T, N> const && data ) VULKAN_HPP_NOEXCEPT = delete;
-    template <size_t N>
-    ArrayProxyNoTemporaries( std::array<T, N> && data ) VULKAN_HPP_NOEXCEPT       = delete;
+    template <size_t N, typename B = T, typename std::enable_if<std::is_const<B>::value, int>::type = 0>
+    ArrayProxyNoTemporaries( std::array<typename std::remove_const<T>::type, N> && data ) = delete;
 
     template <class Allocator = std::allocator<typename std::remove_const<T>::type>>
     ArrayProxyNoTemporaries( std::vector<T, Allocator> const & data ) VULKAN_HPP_NOEXCEPT
@@ -460,20 +494,32 @@ namespace VULKAN_HPP_NAMESPACE
       , m_ptr( data.data() )
     {}
 
+    template <class Allocator = std::allocator<typename std::remove_const<T>::type>>
+    ArrayProxyNoTemporaries( std::vector<T, Allocator> const && data ) = delete;
+
     template <class Allocator = std::allocator<typename std::remove_const<T>::type>,
               typename B      = T,
               typename std::enable_if<std::is_const<B>::value, int>::type = 0>
-    ArrayProxyNoTemporaries( std::vector<typename std::remove_const<T>::type, Allocator> const & data ) VULKAN_HPP_NOEXCEPT
+    ArrayProxyNoTemporaries( std::vector<typename std::remove_const<T>::type, Allocator> const & data )
+      VULKAN_HPP_NOEXCEPT
       : m_count( static_cast<uint32_t>( data.size() ) )
       , m_ptr( data.data() )
     {}
 
+    template <class Allocator = std::allocator<typename std::remove_const<T>::type>,
+              typename B      = T,
+              typename std::enable_if<std::is_const<B>::value, int>::type = 0>
+    ArrayProxyNoTemporaries( std::vector<typename std::remove_const<T>::type, Allocator> const && data ) = delete;
+
     template <class Allocator = std::allocator<typename std::remove_const<T>::type>>
     ArrayProxyNoTemporaries( std::vector<T, Allocator> & data ) VULKAN_HPP_NOEXCEPT
       : m_count( static_cast<uint32_t>( data.size() ) )
       , m_ptr( data.data() )
     {}
 
+    template <class Allocator = std::allocator<typename std::remove_const<T>::type>>
+    ArrayProxyNoTemporaries( std::vector<T, Allocator> && data ) = delete;
+
     template <class Allocator = std::allocator<typename std::remove_const<T>::type>,
               typename B      = T,
               typename std::enable_if<std::is_const<B>::value, int>::type = 0>
@@ -482,8 +528,10 @@ namespace VULKAN_HPP_NAMESPACE
       , m_ptr( data.data() )
     {}
 
-    ArrayProxyNoTemporaries( std::vector<T> const && data ) VULKAN_HPP_NOEXCEPT = delete;
-    ArrayProxyNoTemporaries( std::vector<T> && data ) VULKAN_HPP_NOEXCEPT       = delete;
+    template <class Allocator = std::allocator<typename std::remove_const<T>::type>,
+              typename B      = T,
+              typename std::enable_if<std::is_const<B>::value, int>::type = 0>
+    ArrayProxyNoTemporaries( std::vector<typename std::remove_const<T>::type, Allocator> && data ) = delete;
 
     const T * begin() const VULKAN_HPP_NOEXCEPT
     {
@@ -783,7 +831,11 @@ namespace VULKAN_HPP_NAMESPACE
         return m_mask;
     }
 
+#if defined(VULKAN_HPP_FLAGS_MASK_TYPE_AS_PUBLIC)
+  public:
+#else
   private:
+#endif
     MaskType  m_mask;
   };
 
@@ -3517,14 +3569,27 @@ namespace VULKAN_HPP_NAMESPACE
 # endif
 #endif
 
-#if defined(_WIN32) && defined(VULKAN_HPP_STORAGE_SHARED)
-#  ifdef VULKAN_HPP_STORAGE_SHARED_EXPORT
-#    define VULKAN_HPP_STORAGE_API __declspec( dllexport )
+#if !defined( VULKAN_HPP_STORAGE_API )
+#  if defined( VULKAN_HPP_STORAGE_SHARED )
+#    if defined( _MSC_VER )
+#      if defined( VULKAN_HPP_STORAGE_SHARED_EXPORT )
+#        define VULKAN_HPP_STORAGE_API __declspec( dllexport )
+#      else
+#        define VULKAN_HPP_STORAGE_API __declspec( dllimport )
+#      endif
+#    elif defined( __clang__ ) || defined( __GNUC__ )
+#      if defined( VULKAN_HPP_STORAGE_SHARED_EXPORT )
+#        define VULKAN_HPP_STORAGE_API __attribute__( ( visibility( "default" ) ) )
+#      else
+#        define VULKAN_HPP_STORAGE_API
+#      endif
+#    else
+#      define VULKAN_HPP_STORAGE_API
+#      pragma warning Unknown import / export semantics
+#    endif
 #  else
-#    define VULKAN_HPP_STORAGE_API __declspec( dllimport )
+#    define VULKAN_HPP_STORAGE_API
 #  endif
-#else
-#  define VULKAN_HPP_STORAGE_API
 #endif
 
 #if !defined(VULKAN_HPP_DEFAULT_DISPATCHER)
@@ -14495,23 +14560,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR AabbPositionsKHR( AabbPositionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     AabbPositionsKHR( VkAabbPositionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : AabbPositionsKHR( *reinterpret_cast<AabbPositionsKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & operator=( AabbPositionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     AabbPositionsKHR & operator=( VkAabbPositionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AabbPositionsKHR const *>( &rhs );
       return *this;
     }
 
-    AabbPositionsKHR & operator=( AabbPositionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( AabbPositionsKHR ) );
-      return *this;
-    }
-
     AabbPositionsKHR & setMinX( float minX_ ) VULKAN_HPP_NOEXCEPT
     {
       minX = minX_;
@@ -14759,23 +14819,18 @@ namespace VULKAN_HPP_NAMESPACE
     AccelerationStructureGeometryTrianglesDataKHR( AccelerationStructureGeometryTrianglesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     AccelerationStructureGeometryTrianglesDataKHR( VkAccelerationStructureGeometryTrianglesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : AccelerationStructureGeometryTrianglesDataKHR( *reinterpret_cast<AccelerationStructureGeometryTrianglesDataKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    AccelerationStructureGeometryTrianglesDataKHR & operator=( AccelerationStructureGeometryTrianglesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     AccelerationStructureGeometryTrianglesDataKHR & operator=( VkAccelerationStructureGeometryTrianglesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR const *>( &rhs );
       return *this;
     }
 
-    AccelerationStructureGeometryTrianglesDataKHR & operator=( AccelerationStructureGeometryTrianglesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( AccelerationStructureGeometryTrianglesDataKHR ) );
-      return *this;
-    }
-
     AccelerationStructureGeometryTrianglesDataKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -14839,7 +14894,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureGeometryTrianglesDataKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureGeometryTrianglesDataKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Format vertexFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined;
     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR vertexData = {};
@@ -14872,23 +14927,18 @@ namespace VULKAN_HPP_NAMESPACE
     AccelerationStructureGeometryAabbsDataKHR( AccelerationStructureGeometryAabbsDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     AccelerationStructureGeometryAabbsDataKHR( VkAccelerationStructureGeometryAabbsDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : AccelerationStructureGeometryAabbsDataKHR( *reinterpret_cast<AccelerationStructureGeometryAabbsDataKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    AccelerationStructureGeometryAabbsDataKHR & operator=( AccelerationStructureGeometryAabbsDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     AccelerationStructureGeometryAabbsDataKHR & operator=( VkAccelerationStructureGeometryAabbsDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR const *>( &rhs );
       return *this;
     }
 
-    AccelerationStructureGeometryAabbsDataKHR & operator=( AccelerationStructureGeometryAabbsDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( AccelerationStructureGeometryAabbsDataKHR ) );
-      return *this;
-    }
-
     AccelerationStructureGeometryAabbsDataKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -14922,7 +14972,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureGeometryAabbsDataKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureGeometryAabbsDataKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR data = {};
     VULKAN_HPP_NAMESPACE::DeviceSize stride = {};
@@ -14950,23 +15000,18 @@ namespace VULKAN_HPP_NAMESPACE
     AccelerationStructureGeometryInstancesDataKHR( AccelerationStructureGeometryInstancesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     AccelerationStructureGeometryInstancesDataKHR( VkAccelerationStructureGeometryInstancesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : AccelerationStructureGeometryInstancesDataKHR( *reinterpret_cast<AccelerationStructureGeometryInstancesDataKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    AccelerationStructureGeometryInstancesDataKHR & operator=( AccelerationStructureGeometryInstancesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     AccelerationStructureGeometryInstancesDataKHR & operator=( VkAccelerationStructureGeometryInstancesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR const *>( &rhs );
       return *this;
     }
 
-    AccelerationStructureGeometryInstancesDataKHR & operator=( AccelerationStructureGeometryInstancesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( AccelerationStructureGeometryInstancesDataKHR ) );
-      return *this;
-    }
-
     AccelerationStructureGeometryInstancesDataKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -15000,7 +15045,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureGeometryInstancesDataKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureGeometryInstancesDataKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 arrayOfPointers = {};
     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR data = {};
@@ -15092,23 +15137,18 @@ namespace VULKAN_HPP_NAMESPACE
     AccelerationStructureGeometryKHR( AccelerationStructureGeometryKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     AccelerationStructureGeometryKHR( VkAccelerationStructureGeometryKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : AccelerationStructureGeometryKHR( *reinterpret_cast<AccelerationStructureGeometryKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    AccelerationStructureGeometryKHR & operator=( AccelerationStructureGeometryKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     AccelerationStructureGeometryKHR & operator=( VkAccelerationStructureGeometryKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR const *>( &rhs );
       return *this;
     }
 
-    AccelerationStructureGeometryKHR & operator=( AccelerationStructureGeometryKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( AccelerationStructureGeometryKHR ) );
-      return *this;
-    }
-
     AccelerationStructureGeometryKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -15148,7 +15188,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureGeometryKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureGeometryKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::GeometryTypeKHR geometryType = VULKAN_HPP_NAMESPACE::GeometryTypeKHR::eTriangles;
     VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryDataKHR geometry = {};
@@ -15229,9 +15269,8 @@ namespace VULKAN_HPP_NAMESPACE
     AccelerationStructureBuildGeometryInfoKHR( AccelerationStructureBuildGeometryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     AccelerationStructureBuildGeometryInfoKHR( VkAccelerationStructureBuildGeometryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : AccelerationStructureBuildGeometryInfoKHR( *reinterpret_cast<AccelerationStructureBuildGeometryInfoKHR const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     AccelerationStructureBuildGeometryInfoKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR type_, VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsKHR flags_, VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR mode_, VULKAN_HPP_NAMESPACE::AccelerationStructureKHR srcAccelerationStructure_, VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dstAccelerationStructure_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR> const & geometries_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR* const > const & pGeometries_ = {}, VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR scratchData_ = {} )
@@ -15249,18 +15288,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    AccelerationStructureBuildGeometryInfoKHR & operator=( AccelerationStructureBuildGeometryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     AccelerationStructureBuildGeometryInfoKHR & operator=( VkAccelerationStructureBuildGeometryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR const *>( &rhs );
       return *this;
     }
 
-    AccelerationStructureBuildGeometryInfoKHR & operator=( AccelerationStructureBuildGeometryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( AccelerationStructureBuildGeometryInfoKHR ) );
-      return *this;
-    }
-
     AccelerationStructureBuildGeometryInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -15354,7 +15389,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureBuildGeometryInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureBuildGeometryInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR type = VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR::eTopLevel;
     VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsKHR flags = {};
@@ -15388,23 +15423,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR AccelerationStructureBuildRangeInfoKHR( AccelerationStructureBuildRangeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     AccelerationStructureBuildRangeInfoKHR( VkAccelerationStructureBuildRangeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : AccelerationStructureBuildRangeInfoKHR( *reinterpret_cast<AccelerationStructureBuildRangeInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildRangeInfoKHR & operator=( AccelerationStructureBuildRangeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     AccelerationStructureBuildRangeInfoKHR & operator=( VkAccelerationStructureBuildRangeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR const *>( &rhs );
       return *this;
     }
 
-    AccelerationStructureBuildRangeInfoKHR & operator=( AccelerationStructureBuildRangeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( AccelerationStructureBuildRangeInfoKHR ) );
-      return *this;
-    }
-
     AccelerationStructureBuildRangeInfoKHR & setPrimitiveCount( uint32_t primitiveCount_ ) VULKAN_HPP_NOEXCEPT
     {
       primitiveCount = primitiveCount_;
@@ -15483,23 +15513,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR AccelerationStructureBuildSizesInfoKHR( AccelerationStructureBuildSizesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     AccelerationStructureBuildSizesInfoKHR( VkAccelerationStructureBuildSizesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : AccelerationStructureBuildSizesInfoKHR( *reinterpret_cast<AccelerationStructureBuildSizesInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildSizesInfoKHR & operator=( AccelerationStructureBuildSizesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     AccelerationStructureBuildSizesInfoKHR & operator=( VkAccelerationStructureBuildSizesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR const *>( &rhs );
       return *this;
     }
 
-    AccelerationStructureBuildSizesInfoKHR & operator=( AccelerationStructureBuildSizesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( AccelerationStructureBuildSizesInfoKHR ) );
-      return *this;
-    }
-
     AccelerationStructureBuildSizesInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -15557,7 +15582,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureBuildSizesInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureBuildSizesInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DeviceSize accelerationStructureSize = {};
     VULKAN_HPP_NAMESPACE::DeviceSize updateScratchSize = {};
@@ -15686,23 +15711,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR AccelerationStructureCreateInfoKHR( AccelerationStructureCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     AccelerationStructureCreateInfoKHR( VkAccelerationStructureCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : AccelerationStructureCreateInfoKHR( *reinterpret_cast<AccelerationStructureCreateInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR & operator=( AccelerationStructureCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     AccelerationStructureCreateInfoKHR & operator=( VkAccelerationStructureCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR const *>( &rhs );
       return *this;
     }
 
-    AccelerationStructureCreateInfoKHR & operator=( AccelerationStructureCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( AccelerationStructureCreateInfoKHR ) );
-      return *this;
-    }
-
     AccelerationStructureCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -15781,7 +15801,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureCreateInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureCreateInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::AccelerationStructureCreateFlagsKHR createFlags = {};
     VULKAN_HPP_NAMESPACE::Buffer buffer = {};
@@ -15813,23 +15833,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR GeometryTrianglesNV( GeometryTrianglesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     GeometryTrianglesNV( VkGeometryTrianglesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : GeometryTrianglesNV( *reinterpret_cast<GeometryTrianglesNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & operator=( GeometryTrianglesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     GeometryTrianglesNV & operator=( VkGeometryTrianglesNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GeometryTrianglesNV const *>( &rhs );
       return *this;
     }
 
-    GeometryTrianglesNV & operator=( GeometryTrianglesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( GeometryTrianglesNV ) );
-      return *this;
-    }
-
     GeometryTrianglesNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -15943,7 +15958,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGeometryTrianglesNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGeometryTrianglesNV;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Buffer vertexData = {};
     VULKAN_HPP_NAMESPACE::DeviceSize vertexOffset = {};
@@ -15980,23 +15995,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR GeometryAABBNV( GeometryAABBNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     GeometryAABBNV( VkGeometryAABBNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : GeometryAABBNV( *reinterpret_cast<GeometryAABBNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV & operator=( GeometryAABBNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     GeometryAABBNV & operator=( VkGeometryAABBNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GeometryAABBNV const *>( &rhs );
       return *this;
     }
 
-    GeometryAABBNV & operator=( GeometryAABBNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( GeometryAABBNV ) );
-      return *this;
-    }
-
     GeometryAABBNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -16061,7 +16071,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGeometryAabbNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGeometryAabbNV;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Buffer aabbData = {};
     uint32_t numAABBs = {};
@@ -16090,23 +16100,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR GeometryDataNV( GeometryDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     GeometryDataNV( VkGeometryDataNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : GeometryDataNV( *reinterpret_cast<GeometryDataNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 GeometryDataNV & operator=( GeometryDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     GeometryDataNV & operator=( VkGeometryDataNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GeometryDataNV const *>( &rhs );
       return *this;
     }
 
-    GeometryDataNV & operator=( GeometryDataNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( GeometryDataNV ) );
-      return *this;
-    }
-
     GeometryDataNV & setTriangles( VULKAN_HPP_NAMESPACE::GeometryTrianglesNV const & triangles_ ) VULKAN_HPP_NOEXCEPT
     {
       triangles = triangles_;
@@ -16169,23 +16174,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR GeometryNV( GeometryNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     GeometryNV( VkGeometryNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : GeometryNV( *reinterpret_cast<GeometryNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 GeometryNV & operator=( GeometryNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     GeometryNV & operator=( VkGeometryNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GeometryNV const *>( &rhs );
       return *this;
     }
 
-    GeometryNV & operator=( GeometryNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( GeometryNV ) );
-      return *this;
-    }
-
     GeometryNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -16243,7 +16243,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGeometryNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGeometryNV;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::GeometryTypeKHR geometryType = VULKAN_HPP_NAMESPACE::GeometryTypeKHR::eTriangles;
     VULKAN_HPP_NAMESPACE::GeometryDataNV geometry = {};
@@ -16272,9 +16272,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR AccelerationStructureInfoNV( AccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     AccelerationStructureInfoNV( VkAccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : AccelerationStructureInfoNV( *reinterpret_cast<AccelerationStructureInfoNV const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     AccelerationStructureInfoNV( VULKAN_HPP_NAMESPACE::AccelerationStructureTypeNV type_, VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsNV flags_, uint32_t instanceCount_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::GeometryNV> const & geometries_ )
@@ -16283,18 +16282,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV & operator=( AccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     AccelerationStructureInfoNV & operator=( VkAccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV const *>( &rhs );
       return *this;
     }
 
-    AccelerationStructureInfoNV & operator=( AccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( AccelerationStructureInfoNV ) );
-      return *this;
-    }
-
     AccelerationStructureInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -16375,7 +16370,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureInfoNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureInfoNV;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::AccelerationStructureTypeNV type = {};
     VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsNV flags = {};
@@ -16406,23 +16401,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR AccelerationStructureCreateInfoNV( AccelerationStructureCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     AccelerationStructureCreateInfoNV( VkAccelerationStructureCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : AccelerationStructureCreateInfoNV( *reinterpret_cast<AccelerationStructureCreateInfoNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoNV & operator=( AccelerationStructureCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     AccelerationStructureCreateInfoNV & operator=( VkAccelerationStructureCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV const *>( &rhs );
       return *this;
     }
 
-    AccelerationStructureCreateInfoNV & operator=( AccelerationStructureCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( AccelerationStructureCreateInfoNV ) );
-      return *this;
-    }
-
     AccelerationStructureCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -16473,7 +16463,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureCreateInfoNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureCreateInfoNV;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DeviceSize compactedSize = {};
     VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV info = {};
@@ -16501,23 +16491,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR AccelerationStructureDeviceAddressInfoKHR( AccelerationStructureDeviceAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     AccelerationStructureDeviceAddressInfoKHR( VkAccelerationStructureDeviceAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : AccelerationStructureDeviceAddressInfoKHR( *reinterpret_cast<AccelerationStructureDeviceAddressInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDeviceAddressInfoKHR & operator=( AccelerationStructureDeviceAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     AccelerationStructureDeviceAddressInfoKHR & operator=( VkAccelerationStructureDeviceAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR const *>( &rhs );
       return *this;
     }
 
-    AccelerationStructureDeviceAddressInfoKHR & operator=( AccelerationStructureDeviceAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( AccelerationStructureDeviceAddressInfoKHR ) );
-      return *this;
-    }
-
     AccelerationStructureDeviceAddressInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -16561,7 +16546,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureDeviceAddressInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureDeviceAddressInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure = {};
 
@@ -16587,23 +16572,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 TransformMatrixKHR( TransformMatrixKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     TransformMatrixKHR( VkTransformMatrixKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : TransformMatrixKHR( *reinterpret_cast<TransformMatrixKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 TransformMatrixKHR & operator=( TransformMatrixKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     TransformMatrixKHR & operator=( VkTransformMatrixKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::TransformMatrixKHR const *>( &rhs );
       return *this;
     }
 
-    TransformMatrixKHR & operator=( TransformMatrixKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( TransformMatrixKHR ) );
-      return *this;
-    }
-
     TransformMatrixKHR & setMatrix( std::array<std::array<float,4>,3> matrix_ ) VULKAN_HPP_NOEXCEPT
     {
       matrix = matrix_;
@@ -16658,23 +16638,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR( AccelerationStructureInstanceKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     AccelerationStructureInstanceKHR( VkAccelerationStructureInstanceKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : AccelerationStructureInstanceKHR( *reinterpret_cast<AccelerationStructureInstanceKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR & operator=( AccelerationStructureInstanceKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     AccelerationStructureInstanceKHR & operator=( VkAccelerationStructureInstanceKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR const *>( &rhs );
       return *this;
     }
 
-    AccelerationStructureInstanceKHR & operator=( AccelerationStructureInstanceKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( AccelerationStructureInstanceKHR ) );
-      return *this;
-    }
-
     AccelerationStructureInstanceKHR & setTransform( VULKAN_HPP_NAMESPACE::TransformMatrixKHR const & transform_ ) VULKAN_HPP_NOEXCEPT
     {
       transform = transform_;
@@ -16870,23 +16845,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR AccelerationStructureMemoryRequirementsInfoNV( AccelerationStructureMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     AccelerationStructureMemoryRequirementsInfoNV( VkAccelerationStructureMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : AccelerationStructureMemoryRequirementsInfoNV( *reinterpret_cast<AccelerationStructureMemoryRequirementsInfoNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMemoryRequirementsInfoNV & operator=( AccelerationStructureMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     AccelerationStructureMemoryRequirementsInfoNV & operator=( VkAccelerationStructureMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV const *>( &rhs );
       return *this;
     }
 
-    AccelerationStructureMemoryRequirementsInfoNV & operator=( AccelerationStructureMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( AccelerationStructureMemoryRequirementsInfoNV ) );
-      return *this;
-    }
-
     AccelerationStructureMemoryRequirementsInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -16937,7 +16907,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureMemoryRequirementsInfoNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureMemoryRequirementsInfoNV;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsTypeNV type = VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsTypeNV::eObject;
     VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure = {};
@@ -16965,23 +16935,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR AccelerationStructureVersionInfoKHR( AccelerationStructureVersionInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     AccelerationStructureVersionInfoKHR( VkAccelerationStructureVersionInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : AccelerationStructureVersionInfoKHR( *reinterpret_cast<AccelerationStructureVersionInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 AccelerationStructureVersionInfoKHR & operator=( AccelerationStructureVersionInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     AccelerationStructureVersionInfoKHR & operator=( VkAccelerationStructureVersionInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR const *>( &rhs );
       return *this;
     }
 
-    AccelerationStructureVersionInfoKHR & operator=( AccelerationStructureVersionInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( AccelerationStructureVersionInfoKHR ) );
-      return *this;
-    }
-
     AccelerationStructureVersionInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -17025,7 +16990,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureVersionInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureVersionInfoKHR;
     const void* pNext = {};
     const uint8_t* pVersionData = {};
 
@@ -17352,23 +17317,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR AcquireNextImageInfoKHR( AcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     AcquireNextImageInfoKHR( VkAcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : AcquireNextImageInfoKHR( *reinterpret_cast<AcquireNextImageInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & operator=( AcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     AcquireNextImageInfoKHR & operator=( VkAcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR const *>( &rhs );
       return *this;
     }
 
-    AcquireNextImageInfoKHR & operator=( AcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( AcquireNextImageInfoKHR ) );
-      return *this;
-    }
-
     AcquireNextImageInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -17440,7 +17400,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAcquireNextImageInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAcquireNextImageInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain = {};
     uint64_t timeout = {};
@@ -17471,23 +17431,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR AcquireProfilingLockInfoKHR( AcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     AcquireProfilingLockInfoKHR( VkAcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : AcquireProfilingLockInfoKHR( *reinterpret_cast<AcquireProfilingLockInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 AcquireProfilingLockInfoKHR & operator=( AcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     AcquireProfilingLockInfoKHR & operator=( VkAcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR const *>( &rhs );
       return *this;
     }
 
-    AcquireProfilingLockInfoKHR & operator=( AcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( AcquireProfilingLockInfoKHR ) );
-      return *this;
-    }
-
     AcquireProfilingLockInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -17538,7 +17493,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAcquireProfilingLockInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAcquireProfilingLockInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::AcquireProfilingLockFlagsKHR flags = {};
     uint64_t timeout = {};
@@ -17565,23 +17520,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR AllocationCallbacks( AllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     AllocationCallbacks( VkAllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : AllocationCallbacks( *reinterpret_cast<AllocationCallbacks const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & operator=( AllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     AllocationCallbacks & operator=( VkAllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AllocationCallbacks const *>( &rhs );
       return *this;
     }
 
-    AllocationCallbacks & operator=( AllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( AllocationCallbacks ) );
-      return *this;
-    }
-
     AllocationCallbacks & setPUserData( void* pUserData_ ) VULKAN_HPP_NOEXCEPT
     {
       pUserData = pUserData_;
@@ -17675,23 +17625,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ComponentMapping( ComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ComponentMapping( VkComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ComponentMapping( *reinterpret_cast<ComponentMapping const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ComponentMapping & operator=( ComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ComponentMapping & operator=( VkComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ComponentMapping const *>( &rhs );
       return *this;
     }
 
-    ComponentMapping & operator=( ComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ComponentMapping ) );
-      return *this;
-    }
-
     ComponentMapping & setR( VULKAN_HPP_NAMESPACE::ComponentSwizzle r_ ) VULKAN_HPP_NOEXCEPT
     {
       r = r_;
@@ -17771,23 +17716,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR AndroidHardwareBufferFormatPropertiesANDROID( AndroidHardwareBufferFormatPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     AndroidHardwareBufferFormatPropertiesANDROID( VkAndroidHardwareBufferFormatPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : AndroidHardwareBufferFormatPropertiesANDROID( *reinterpret_cast<AndroidHardwareBufferFormatPropertiesANDROID const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 AndroidHardwareBufferFormatPropertiesANDROID & operator=( AndroidHardwareBufferFormatPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     AndroidHardwareBufferFormatPropertiesANDROID & operator=( VkAndroidHardwareBufferFormatPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID const *>( &rhs );
       return *this;
     }
 
-    AndroidHardwareBufferFormatPropertiesANDROID & operator=( AndroidHardwareBufferFormatPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( AndroidHardwareBufferFormatPropertiesANDROID ) );
-      return *this;
-    }
-
 
     operator VkAndroidHardwareBufferFormatPropertiesANDROID const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -17826,7 +17766,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAndroidHardwareBufferFormatPropertiesANDROID;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAndroidHardwareBufferFormatPropertiesANDROID;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined;
     uint64_t externalFormat = {};
@@ -17862,23 +17802,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR AndroidHardwareBufferPropertiesANDROID( AndroidHardwareBufferPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     AndroidHardwareBufferPropertiesANDROID( VkAndroidHardwareBufferPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : AndroidHardwareBufferPropertiesANDROID( *reinterpret_cast<AndroidHardwareBufferPropertiesANDROID const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 AndroidHardwareBufferPropertiesANDROID & operator=( AndroidHardwareBufferPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     AndroidHardwareBufferPropertiesANDROID & operator=( VkAndroidHardwareBufferPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID const *>( &rhs );
       return *this;
     }
 
-    AndroidHardwareBufferPropertiesANDROID & operator=( AndroidHardwareBufferPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( AndroidHardwareBufferPropertiesANDROID ) );
-      return *this;
-    }
-
 
     operator VkAndroidHardwareBufferPropertiesANDROID const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -17911,7 +17846,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAndroidHardwareBufferPropertiesANDROID;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAndroidHardwareBufferPropertiesANDROID;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::DeviceSize allocationSize = {};
     uint32_t memoryTypeBits = {};
@@ -17941,23 +17876,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR AndroidHardwareBufferUsageANDROID( AndroidHardwareBufferUsageANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     AndroidHardwareBufferUsageANDROID( VkAndroidHardwareBufferUsageANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : AndroidHardwareBufferUsageANDROID( *reinterpret_cast<AndroidHardwareBufferUsageANDROID const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 AndroidHardwareBufferUsageANDROID & operator=( AndroidHardwareBufferUsageANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     AndroidHardwareBufferUsageANDROID & operator=( VkAndroidHardwareBufferUsageANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID const *>( &rhs );
       return *this;
     }
 
-    AndroidHardwareBufferUsageANDROID & operator=( AndroidHardwareBufferUsageANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( AndroidHardwareBufferUsageANDROID ) );
-      return *this;
-    }
-
 
     operator VkAndroidHardwareBufferUsageANDROID const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -17989,7 +17919,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAndroidHardwareBufferUsageANDROID;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAndroidHardwareBufferUsageANDROID;
     void* pNext = {};
     uint64_t androidHardwareBufferUsage = {};
 
@@ -18018,23 +17948,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR AndroidSurfaceCreateInfoKHR( AndroidSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     AndroidSurfaceCreateInfoKHR( VkAndroidSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : AndroidSurfaceCreateInfoKHR( *reinterpret_cast<AndroidSurfaceCreateInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 AndroidSurfaceCreateInfoKHR & operator=( AndroidSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     AndroidSurfaceCreateInfoKHR & operator=( VkAndroidSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR const *>( &rhs );
       return *this;
     }
 
-    AndroidSurfaceCreateInfoKHR & operator=( AndroidSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( AndroidSurfaceCreateInfoKHR ) );
-      return *this;
-    }
-
     AndroidSurfaceCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -18085,7 +18010,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAndroidSurfaceCreateInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAndroidSurfaceCreateInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateFlagsKHR flags = {};
     struct ANativeWindow* window = {};
@@ -18114,23 +18039,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ApplicationInfo( ApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ApplicationInfo( VkApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ApplicationInfo( *reinterpret_cast<ApplicationInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & operator=( ApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ApplicationInfo & operator=( VkApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ApplicationInfo const *>( &rhs );
       return *this;
     }
 
-    ApplicationInfo & operator=( ApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ApplicationInfo ) );
-      return *this;
-    }
-
     ApplicationInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -18202,7 +18122,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eApplicationInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eApplicationInfo;
     const void* pNext = {};
     const char* pApplicationName = {};
     uint32_t applicationVersion = {};
@@ -18232,23 +18152,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR AttachmentDescription( AttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     AttachmentDescription( VkAttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : AttachmentDescription( *reinterpret_cast<AttachmentDescription const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & operator=( AttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     AttachmentDescription & operator=( VkAttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentDescription const *>( &rhs );
       return *this;
     }
 
-    AttachmentDescription & operator=( AttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( AttachmentDescription ) );
-      return *this;
-    }
-
     AttachmentDescription & setFlags( VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags_ ) VULKAN_HPP_NOEXCEPT
     {
       flags = flags_;
@@ -18367,23 +18282,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR AttachmentDescription2( AttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     AttachmentDescription2( VkAttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : AttachmentDescription2( *reinterpret_cast<AttachmentDescription2 const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & operator=( AttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     AttachmentDescription2 & operator=( VkAttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentDescription2 const *>( &rhs );
       return *this;
     }
 
-    AttachmentDescription2 & operator=( AttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( AttachmentDescription2 ) );
-      return *this;
-    }
-
     AttachmentDescription2 & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -18483,7 +18393,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAttachmentDescription2;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAttachmentDescription2;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags = {};
     VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined;
@@ -18519,23 +18429,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR AttachmentDescriptionStencilLayout( AttachmentDescriptionStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     AttachmentDescriptionStencilLayout( VkAttachmentDescriptionStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : AttachmentDescriptionStencilLayout( *reinterpret_cast<AttachmentDescriptionStencilLayout const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 AttachmentDescriptionStencilLayout & operator=( AttachmentDescriptionStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     AttachmentDescriptionStencilLayout & operator=( VkAttachmentDescriptionStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout const *>( &rhs );
       return *this;
     }
 
-    AttachmentDescriptionStencilLayout & operator=( AttachmentDescriptionStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( AttachmentDescriptionStencilLayout ) );
-      return *this;
-    }
-
     AttachmentDescriptionStencilLayout & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -18586,7 +18491,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAttachmentDescriptionStencilLayout;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAttachmentDescriptionStencilLayout;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::ImageLayout stencilInitialLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
     VULKAN_HPP_NAMESPACE::ImageLayout stencilFinalLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
@@ -18614,23 +18519,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR AttachmentReference( AttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     AttachmentReference( VkAttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : AttachmentReference( *reinterpret_cast<AttachmentReference const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 AttachmentReference & operator=( AttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     AttachmentReference & operator=( VkAttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentReference const *>( &rhs );
       return *this;
     }
 
-    AttachmentReference & operator=( AttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( AttachmentReference ) );
-      return *this;
-    }
-
     AttachmentReference & setAttachment( uint32_t attachment_ ) VULKAN_HPP_NOEXCEPT
     {
       attachment = attachment_;
@@ -18693,23 +18593,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR AttachmentReference2( AttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     AttachmentReference2( VkAttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : AttachmentReference2( *reinterpret_cast<AttachmentReference2 const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 AttachmentReference2 & operator=( AttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     AttachmentReference2 & operator=( VkAttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentReference2 const *>( &rhs );
       return *this;
     }
 
-    AttachmentReference2 & operator=( AttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( AttachmentReference2 ) );
-      return *this;
-    }
-
     AttachmentReference2 & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -18767,7 +18662,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAttachmentReference2;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAttachmentReference2;
     const void* pNext = {};
     uint32_t attachment = {};
     VULKAN_HPP_NAMESPACE::ImageLayout layout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
@@ -18797,23 +18692,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR AttachmentReferenceStencilLayout( AttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     AttachmentReferenceStencilLayout( VkAttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : AttachmentReferenceStencilLayout( *reinterpret_cast<AttachmentReferenceStencilLayout const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 AttachmentReferenceStencilLayout & operator=( AttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     AttachmentReferenceStencilLayout & operator=( VkAttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout const *>( &rhs );
       return *this;
     }
 
-    AttachmentReferenceStencilLayout & operator=( AttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( AttachmentReferenceStencilLayout ) );
-      return *this;
-    }
-
     AttachmentReferenceStencilLayout & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -18857,7 +18747,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAttachmentReferenceStencilLayout;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAttachmentReferenceStencilLayout;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::ImageLayout stencilLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
 
@@ -18884,23 +18774,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR Extent2D( Extent2D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     Extent2D( VkExtent2D const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : Extent2D( *reinterpret_cast<Extent2D const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 Extent2D & operator=( Extent2D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     Extent2D & operator=( VkExtent2D const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Extent2D const *>( &rhs );
       return *this;
     }
 
-    Extent2D & operator=( Extent2D const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( Extent2D ) );
-      return *this;
-    }
-
     Extent2D & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT
     {
       width = width_;
@@ -18962,23 +18847,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SampleLocationEXT( SampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SampleLocationEXT( VkSampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SampleLocationEXT( *reinterpret_cast<SampleLocationEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SampleLocationEXT & operator=( SampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SampleLocationEXT & operator=( VkSampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SampleLocationEXT const *>( &rhs );
       return *this;
     }
 
-    SampleLocationEXT & operator=( SampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SampleLocationEXT ) );
-      return *this;
-    }
-
     SampleLocationEXT & setX( float x_ ) VULKAN_HPP_NOEXCEPT
     {
       x = x_;
@@ -19041,9 +18921,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SampleLocationsInfoEXT( SampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SampleLocationsInfoEXT( VkSampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SampleLocationsInfoEXT( *reinterpret_cast<SampleLocationsInfoEXT const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     SampleLocationsInfoEXT( VULKAN_HPP_NAMESPACE::SampleCountFlagBits sampleLocationsPerPixel_, VULKAN_HPP_NAMESPACE::Extent2D sampleLocationGridSize_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SampleLocationEXT> const & sampleLocations_ )
@@ -19052,18 +18931,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT & operator=( SampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SampleLocationsInfoEXT & operator=( VkSampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const *>( &rhs );
       return *this;
     }
 
-    SampleLocationsInfoEXT & operator=( SampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SampleLocationsInfoEXT ) );
-      return *this;
-    }
-
     SampleLocationsInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -19137,7 +19012,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSampleLocationsInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSampleLocationsInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::SampleCountFlagBits sampleLocationsPerPixel = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
     VULKAN_HPP_NAMESPACE::Extent2D sampleLocationGridSize = {};
@@ -19166,23 +19041,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR AttachmentSampleLocationsEXT( AttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     AttachmentSampleLocationsEXT( VkAttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : AttachmentSampleLocationsEXT( *reinterpret_cast<AttachmentSampleLocationsEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 AttachmentSampleLocationsEXT & operator=( AttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     AttachmentSampleLocationsEXT & operator=( VkAttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT const *>( &rhs );
       return *this;
     }
 
-    AttachmentSampleLocationsEXT & operator=( AttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( AttachmentSampleLocationsEXT ) );
-      return *this;
-    }
-
     AttachmentSampleLocationsEXT & setAttachmentIndex( uint32_t attachmentIndex_ ) VULKAN_HPP_NOEXCEPT
     {
       attachmentIndex = attachmentIndex_;
@@ -19244,23 +19114,18 @@ namespace VULKAN_HPP_NAMESPACE
     BaseInStructure( BaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     BaseInStructure( VkBaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : BaseInStructure( *reinterpret_cast<BaseInStructure const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    BaseInStructure & operator=( BaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     BaseInStructure & operator=( VkBaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BaseInStructure const *>( &rhs );
       return *this;
     }
 
-    BaseInStructure & operator=( BaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( BaseInStructure ) );
-      return *this;
-    }
-
     BaseInStructure & setPNext( const struct VULKAN_HPP_NAMESPACE::BaseInStructure* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -19316,23 +19181,18 @@ namespace VULKAN_HPP_NAMESPACE
     BaseOutStructure( BaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     BaseOutStructure( VkBaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : BaseOutStructure( *reinterpret_cast<BaseOutStructure const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    BaseOutStructure & operator=( BaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     BaseOutStructure & operator=( VkBaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BaseOutStructure const *>( &rhs );
       return *this;
     }
 
-    BaseOutStructure & operator=( BaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( BaseOutStructure ) );
-      return *this;
-    }
-
     BaseOutStructure & setPNext( struct VULKAN_HPP_NAMESPACE::BaseOutStructure* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -19489,9 +19349,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR BindAccelerationStructureMemoryInfoNV( BindAccelerationStructureMemoryInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     BindAccelerationStructureMemoryInfoNV( VkBindAccelerationStructureMemoryInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : BindAccelerationStructureMemoryInfoNV( *reinterpret_cast<BindAccelerationStructureMemoryInfoNV const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     BindAccelerationStructureMemoryInfoNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure_, VULKAN_HPP_NAMESPACE::DeviceMemory memory_, VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceIndices_ )
@@ -19500,18 +19359,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV & operator=( BindAccelerationStructureMemoryInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     BindAccelerationStructureMemoryInfoNV & operator=( VkBindAccelerationStructureMemoryInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV const *>( &rhs );
       return *this;
     }
 
-    BindAccelerationStructureMemoryInfoNV & operator=( BindAccelerationStructureMemoryInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( BindAccelerationStructureMemoryInfoNV ) );
-      return *this;
-    }
-
     BindAccelerationStructureMemoryInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -19592,7 +19447,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindAccelerationStructureMemoryInfoNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindAccelerationStructureMemoryInfoNV;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure = {};
     VULKAN_HPP_NAMESPACE::DeviceMemory memory = {};
@@ -19623,9 +19478,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR BindBufferMemoryDeviceGroupInfo( BindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     BindBufferMemoryDeviceGroupInfo( VkBindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : BindBufferMemoryDeviceGroupInfo( *reinterpret_cast<BindBufferMemoryDeviceGroupInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     BindBufferMemoryDeviceGroupInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceIndices_ )
@@ -19634,18 +19488,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryDeviceGroupInfo & operator=( BindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     BindBufferMemoryDeviceGroupInfo & operator=( VkBindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo const *>( &rhs );
       return *this;
     }
 
-    BindBufferMemoryDeviceGroupInfo & operator=( BindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( BindBufferMemoryDeviceGroupInfo ) );
-      return *this;
-    }
-
     BindBufferMemoryDeviceGroupInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -19705,7 +19555,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindBufferMemoryDeviceGroupInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindBufferMemoryDeviceGroupInfo;
     const void* pNext = {};
     uint32_t deviceIndexCount = {};
     const uint32_t* pDeviceIndices = {};
@@ -19734,23 +19584,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR BindBufferMemoryInfo( BindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     BindBufferMemoryInfo( VkBindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : BindBufferMemoryInfo( *reinterpret_cast<BindBufferMemoryInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryInfo & operator=( BindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     BindBufferMemoryInfo & operator=( VkBindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo const *>( &rhs );
       return *this;
     }
 
-    BindBufferMemoryInfo & operator=( BindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( BindBufferMemoryInfo ) );
-      return *this;
-    }
-
     BindBufferMemoryInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -19808,7 +19653,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindBufferMemoryInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindBufferMemoryInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Buffer buffer = {};
     VULKAN_HPP_NAMESPACE::DeviceMemory memory = {};
@@ -19837,23 +19682,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR Offset2D( Offset2D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     Offset2D( VkOffset2D const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : Offset2D( *reinterpret_cast<Offset2D const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 Offset2D & operator=( Offset2D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     Offset2D & operator=( VkOffset2D const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Offset2D const *>( &rhs );
       return *this;
     }
 
-    Offset2D & operator=( Offset2D const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( Offset2D ) );
-      return *this;
-    }
-
     Offset2D & setX( int32_t x_ ) VULKAN_HPP_NOEXCEPT
     {
       x = x_;
@@ -19915,23 +19755,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR Rect2D( Rect2D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     Rect2D( VkRect2D const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : Rect2D( *reinterpret_cast<Rect2D const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 Rect2D & operator=( Rect2D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     Rect2D & operator=( VkRect2D const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Rect2D const *>( &rhs );
       return *this;
     }
 
-    Rect2D & operator=( Rect2D const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( Rect2D ) );
-      return *this;
-    }
-
     Rect2D & setOffset( VULKAN_HPP_NAMESPACE::Offset2D const & offset_ ) VULKAN_HPP_NOEXCEPT
     {
       offset = offset_;
@@ -19994,9 +19829,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR BindImageMemoryDeviceGroupInfo( BindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     BindImageMemoryDeviceGroupInfo( VkBindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : BindImageMemoryDeviceGroupInfo( *reinterpret_cast<BindImageMemoryDeviceGroupInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     BindImageMemoryDeviceGroupInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceIndices_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & splitInstanceBindRegions_ = {} )
@@ -20005,18 +19839,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo & operator=( BindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     BindImageMemoryDeviceGroupInfo & operator=( VkBindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo const *>( &rhs );
       return *this;
     }
 
-    BindImageMemoryDeviceGroupInfo & operator=( BindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( BindImageMemoryDeviceGroupInfo ) );
-      return *this;
-    }
-
     BindImageMemoryDeviceGroupInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -20099,7 +19929,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindImageMemoryDeviceGroupInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindImageMemoryDeviceGroupInfo;
     const void* pNext = {};
     uint32_t deviceIndexCount = {};
     const uint32_t* pDeviceIndices = {};
@@ -20230,23 +20060,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR BindImageMemoryInfo( BindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     BindImageMemoryInfo( VkBindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : BindImageMemoryInfo( *reinterpret_cast<BindImageMemoryInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 BindImageMemoryInfo & operator=( BindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     BindImageMemoryInfo & operator=( VkBindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindImageMemoryInfo const *>( &rhs );
       return *this;
     }
 
-    BindImageMemoryInfo & operator=( BindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( BindImageMemoryInfo ) );
-      return *this;
-    }
-
     BindImageMemoryInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -20304,7 +20129,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindImageMemoryInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindImageMemoryInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Image image = {};
     VULKAN_HPP_NAMESPACE::DeviceMemory memory = {};
@@ -20334,23 +20159,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR BindImageMemorySwapchainInfoKHR( BindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     BindImageMemorySwapchainInfoKHR( VkBindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : BindImageMemorySwapchainInfoKHR( *reinterpret_cast<BindImageMemorySwapchainInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 BindImageMemorySwapchainInfoKHR & operator=( BindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     BindImageMemorySwapchainInfoKHR & operator=( VkBindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR const *>( &rhs );
       return *this;
     }
 
-    BindImageMemorySwapchainInfoKHR & operator=( BindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( BindImageMemorySwapchainInfoKHR ) );
-      return *this;
-    }
-
     BindImageMemorySwapchainInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -20401,7 +20221,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindImageMemorySwapchainInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindImageMemorySwapchainInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain = {};
     uint32_t imageIndex = {};
@@ -20429,23 +20249,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR BindImagePlaneMemoryInfo( BindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     BindImagePlaneMemoryInfo( VkBindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : BindImagePlaneMemoryInfo( *reinterpret_cast<BindImagePlaneMemoryInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 BindImagePlaneMemoryInfo & operator=( BindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     BindImagePlaneMemoryInfo & operator=( VkBindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo const *>( &rhs );
       return *this;
     }
 
-    BindImagePlaneMemoryInfo & operator=( BindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( BindImagePlaneMemoryInfo ) );
-      return *this;
-    }
-
     BindImagePlaneMemoryInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -20489,7 +20304,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindImagePlaneMemoryInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindImagePlaneMemoryInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor;
 
@@ -20516,23 +20331,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR BindIndexBufferIndirectCommandNV( BindIndexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     BindIndexBufferIndirectCommandNV( VkBindIndexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : BindIndexBufferIndirectCommandNV( *reinterpret_cast<BindIndexBufferIndirectCommandNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 BindIndexBufferIndirectCommandNV & operator=( BindIndexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     BindIndexBufferIndirectCommandNV & operator=( VkBindIndexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV const *>( &rhs );
       return *this;
     }
 
-    BindIndexBufferIndirectCommandNV & operator=( BindIndexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( BindIndexBufferIndirectCommandNV ) );
-      return *this;
-    }
-
     BindIndexBufferIndirectCommandNV & setBufferAddress( VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress_ ) VULKAN_HPP_NOEXCEPT
     {
       bufferAddress = bufferAddress_;
@@ -20602,23 +20412,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR BindShaderGroupIndirectCommandNV( BindShaderGroupIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     BindShaderGroupIndirectCommandNV( VkBindShaderGroupIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : BindShaderGroupIndirectCommandNV( *reinterpret_cast<BindShaderGroupIndirectCommandNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 BindShaderGroupIndirectCommandNV & operator=( BindShaderGroupIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     BindShaderGroupIndirectCommandNV & operator=( VkBindShaderGroupIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV const *>( &rhs );
       return *this;
     }
 
-    BindShaderGroupIndirectCommandNV & operator=( BindShaderGroupIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( BindShaderGroupIndirectCommandNV ) );
-      return *this;
-    }
-
     BindShaderGroupIndirectCommandNV & setGroupIndex( uint32_t groupIndex_ ) VULKAN_HPP_NOEXCEPT
     {
       groupIndex = groupIndex_;
@@ -20672,23 +20477,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SparseMemoryBind( SparseMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SparseMemoryBind( VkSparseMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SparseMemoryBind( *reinterpret_cast<SparseMemoryBind const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind & operator=( SparseMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SparseMemoryBind & operator=( VkSparseMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseMemoryBind const *>( &rhs );
       return *this;
     }
 
-    SparseMemoryBind & operator=( SparseMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SparseMemoryBind ) );
-      return *this;
-    }
-
     SparseMemoryBind & setResourceOffset( VULKAN_HPP_NAMESPACE::DeviceSize resourceOffset_ ) VULKAN_HPP_NOEXCEPT
     {
       resourceOffset = resourceOffset_;
@@ -20774,9 +20574,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SparseBufferMemoryBindInfo( SparseBufferMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SparseBufferMemoryBindInfo( VkSparseBufferMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SparseBufferMemoryBindInfo( *reinterpret_cast<SparseBufferMemoryBindInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     SparseBufferMemoryBindInfo( VULKAN_HPP_NAMESPACE::Buffer buffer_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseMemoryBind> const & binds_ )
@@ -20785,18 +20584,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SparseBufferMemoryBindInfo & operator=( SparseBufferMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SparseBufferMemoryBindInfo & operator=( VkSparseBufferMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo const *>( &rhs );
       return *this;
     }
 
-    SparseBufferMemoryBindInfo & operator=( SparseBufferMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SparseBufferMemoryBindInfo ) );
-      return *this;
-    }
-
     SparseBufferMemoryBindInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
     {
       buffer = buffer_;
@@ -20875,9 +20670,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SparseImageOpaqueMemoryBindInfo( SparseImageOpaqueMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SparseImageOpaqueMemoryBindInfo( VkSparseImageOpaqueMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SparseImageOpaqueMemoryBindInfo( *reinterpret_cast<SparseImageOpaqueMemoryBindInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     SparseImageOpaqueMemoryBindInfo( VULKAN_HPP_NAMESPACE::Image image_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseMemoryBind> const & binds_ )
@@ -20886,18 +20680,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SparseImageOpaqueMemoryBindInfo & operator=( SparseImageOpaqueMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SparseImageOpaqueMemoryBindInfo & operator=( VkSparseImageOpaqueMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo const *>( &rhs );
       return *this;
     }
 
-    SparseImageOpaqueMemoryBindInfo & operator=( SparseImageOpaqueMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SparseImageOpaqueMemoryBindInfo ) );
-      return *this;
-    }
-
     SparseImageOpaqueMemoryBindInfo & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
     {
       image = image_;
@@ -20976,23 +20766,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImageSubresource( ImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImageSubresource( VkImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImageSubresource( *reinterpret_cast<ImageSubresource const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImageSubresource & operator=( ImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImageSubresource & operator=( VkImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageSubresource const *>( &rhs );
       return *this;
     }
 
-    ImageSubresource & operator=( ImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImageSubresource ) );
-      return *this;
-    }
-
     ImageSubresource & setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT
     {
       aspectMask = aspectMask_;
@@ -21062,9 +20847,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR Offset3D( Offset3D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     Offset3D( VkOffset3D const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : Offset3D( *reinterpret_cast<Offset3D const *>( &rhs ) )
+    {}
 
     explicit Offset3D( Offset2D const& offset2D, int32_t z_ = {} )
       : x( offset2D.x )
@@ -21073,18 +20857,14 @@ namespace VULKAN_HPP_NAMESPACE
     {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 Offset3D & operator=( Offset3D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     Offset3D & operator=( VkOffset3D const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Offset3D const *>( &rhs );
       return *this;
     }
 
-    Offset3D & operator=( Offset3D const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( Offset3D ) );
-      return *this;
-    }
-
     Offset3D & setX( int32_t x_ ) VULKAN_HPP_NOEXCEPT
     {
       x = x_;
@@ -21154,9 +20934,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR Extent3D( Extent3D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     Extent3D( VkExtent3D const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : Extent3D( *reinterpret_cast<Extent3D const *>( &rhs ) )
+    {}
 
     explicit Extent3D( Extent2D const& extent2D, uint32_t depth_ = {} )
       : width( extent2D.width )
@@ -21165,18 +20944,14 @@ namespace VULKAN_HPP_NAMESPACE
     {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 Extent3D & operator=( Extent3D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     Extent3D & operator=( VkExtent3D const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Extent3D const *>( &rhs );
       return *this;
     }
 
-    Extent3D & operator=( Extent3D const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( Extent3D ) );
-      return *this;
-    }
-
     Extent3D & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT
     {
       width = width_;
@@ -21246,23 +21021,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SparseImageMemoryBind( SparseImageMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SparseImageMemoryBind( VkSparseImageMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SparseImageMemoryBind( *reinterpret_cast<SparseImageMemoryBind const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind & operator=( SparseImageMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SparseImageMemoryBind & operator=( VkSparseImageMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseImageMemoryBind const *>( &rhs );
       return *this;
     }
 
-    SparseImageMemoryBind & operator=( SparseImageMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SparseImageMemoryBind ) );
-      return *this;
-    }
-
     SparseImageMemoryBind & setSubresource( VULKAN_HPP_NAMESPACE::ImageSubresource const & subresource_ ) VULKAN_HPP_NOEXCEPT
     {
       subresource = subresource_;
@@ -21356,9 +21126,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SparseImageMemoryBindInfo( SparseImageMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SparseImageMemoryBindInfo( VkSparseImageMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SparseImageMemoryBindInfo( *reinterpret_cast<SparseImageMemoryBindInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     SparseImageMemoryBindInfo( VULKAN_HPP_NAMESPACE::Image image_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseImageMemoryBind> const & binds_ )
@@ -21367,18 +21136,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBindInfo & operator=( SparseImageMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SparseImageMemoryBindInfo & operator=( VkSparseImageMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo const *>( &rhs );
       return *this;
     }
 
-    SparseImageMemoryBindInfo & operator=( SparseImageMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SparseImageMemoryBindInfo ) );
-      return *this;
-    }
-
     SparseImageMemoryBindInfo & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
     {
       image = image_;
@@ -21458,9 +21223,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR BindSparseInfo( BindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     BindSparseInfo( VkBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : BindSparseInfo( *reinterpret_cast<BindSparseInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     BindSparseInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & waitSemaphores_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo> const & bufferBinds_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo> const & imageOpaqueBinds_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo> const & imageBinds_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & signalSemaphores_ = {} )
@@ -21469,18 +21233,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & operator=( BindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     BindSparseInfo & operator=( VkBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindSparseInfo const *>( &rhs );
       return *this;
     }
 
-    BindSparseInfo & operator=( BindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( BindSparseInfo ) );
-      return *this;
-    }
-
     BindSparseInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -21632,7 +21392,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindSparseInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindSparseInfo;
     const void* pNext = {};
     uint32_t waitSemaphoreCount = {};
     const VULKAN_HPP_NAMESPACE::Semaphore* pWaitSemaphores = {};
@@ -21667,23 +21427,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR BindVertexBufferIndirectCommandNV( BindVertexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     BindVertexBufferIndirectCommandNV( VkBindVertexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : BindVertexBufferIndirectCommandNV( *reinterpret_cast<BindVertexBufferIndirectCommandNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 BindVertexBufferIndirectCommandNV & operator=( BindVertexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     BindVertexBufferIndirectCommandNV & operator=( VkBindVertexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV const *>( &rhs );
       return *this;
     }
 
-    BindVertexBufferIndirectCommandNV & operator=( BindVertexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( BindVertexBufferIndirectCommandNV ) );
-      return *this;
-    }
-
     BindVertexBufferIndirectCommandNV & setBufferAddress( VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress_ ) VULKAN_HPP_NOEXCEPT
     {
       bufferAddress = bufferAddress_;
@@ -21753,23 +21508,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImageSubresourceLayers( ImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImageSubresourceLayers( VkImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImageSubresourceLayers( *reinterpret_cast<ImageSubresourceLayers const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImageSubresourceLayers & operator=( ImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImageSubresourceLayers & operator=( VkImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const *>( &rhs );
       return *this;
     }
 
-    ImageSubresourceLayers & operator=( ImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImageSubresourceLayers ) );
-      return *this;
-    }
-
     ImageSubresourceLayers & setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT
     {
       aspectMask = aspectMask_;
@@ -21848,23 +21598,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 ImageBlit2KHR( ImageBlit2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImageBlit2KHR( VkImageBlit2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImageBlit2KHR( *reinterpret_cast<ImageBlit2KHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImageBlit2KHR & operator=( ImageBlit2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImageBlit2KHR & operator=( VkImageBlit2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageBlit2KHR const *>( &rhs );
       return *this;
     }
 
-    ImageBlit2KHR & operator=( ImageBlit2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImageBlit2KHR ) );
-      return *this;
-    }
-
     ImageBlit2KHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -21929,7 +21674,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageBlit2KHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageBlit2KHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {};
     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> srcOffsets = {};
@@ -21959,9 +21704,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2KHR( BlitImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     BlitImageInfo2KHR( VkBlitImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : BlitImageInfo2KHR( *reinterpret_cast<BlitImageInfo2KHR const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     BlitImageInfo2KHR( VULKAN_HPP_NAMESPACE::Image srcImage_, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_, VULKAN_HPP_NAMESPACE::Image dstImage_, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageBlit2KHR> const & regions_, VULKAN_HPP_NAMESPACE::Filter filter_ = VULKAN_HPP_NAMESPACE::Filter::eNearest )
@@ -21970,18 +21714,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2KHR & operator=( BlitImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     BlitImageInfo2KHR & operator=( VkBlitImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BlitImageInfo2KHR const *>( &rhs );
       return *this;
     }
 
-    BlitImageInfo2KHR & operator=( BlitImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( BlitImageInfo2KHR ) );
-      return *this;
-    }
-
     BlitImageInfo2KHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -22076,7 +21816,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBlitImageInfo2KHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBlitImageInfo2KHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Image srcImage = {};
     VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
@@ -22108,23 +21848,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR BufferCopy( BufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     BufferCopy( VkBufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : BufferCopy( *reinterpret_cast<BufferCopy const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 BufferCopy & operator=( BufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     BufferCopy & operator=( VkBufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCopy const *>( &rhs );
       return *this;
     }
 
-    BufferCopy & operator=( BufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( BufferCopy ) );
-      return *this;
-    }
-
     BufferCopy & setSrcOffset( VULKAN_HPP_NAMESPACE::DeviceSize srcOffset_ ) VULKAN_HPP_NOEXCEPT
     {
       srcOffset = srcOffset_;
@@ -22195,23 +21930,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR BufferCopy2KHR( BufferCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     BufferCopy2KHR( VkBufferCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : BufferCopy2KHR( *reinterpret_cast<BufferCopy2KHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 BufferCopy2KHR & operator=( BufferCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     BufferCopy2KHR & operator=( VkBufferCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCopy2KHR const *>( &rhs );
       return *this;
     }
 
-    BufferCopy2KHR & operator=( BufferCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( BufferCopy2KHR ) );
-      return *this;
-    }
-
     BufferCopy2KHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -22269,7 +21999,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferCopy2KHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferCopy2KHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DeviceSize srcOffset = {};
     VULKAN_HPP_NAMESPACE::DeviceSize dstOffset = {};
@@ -22298,9 +22028,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR BufferCreateInfo( BufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     BufferCreateInfo( VkBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : BufferCreateInfo( *reinterpret_cast<BufferCreateInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     BufferCreateInfo( VULKAN_HPP_NAMESPACE::BufferCreateFlags flags_, VULKAN_HPP_NAMESPACE::DeviceSize size_, VULKAN_HPP_NAMESPACE::BufferUsageFlags usage_, VULKAN_HPP_NAMESPACE::SharingMode sharingMode_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_ )
@@ -22309,18 +22038,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & operator=( BufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     BufferCreateInfo & operator=( VkBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCreateInfo const *>( &rhs );
       return *this;
     }
 
-    BufferCreateInfo & operator=( BufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( BufferCreateInfo ) );
-      return *this;
-    }
-
     BufferCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -22408,7 +22133,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::BufferCreateFlags flags = {};
     VULKAN_HPP_NAMESPACE::DeviceSize size = {};
@@ -22440,23 +22165,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR BufferDeviceAddressCreateInfoEXT( BufferDeviceAddressCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     BufferDeviceAddressCreateInfoEXT( VkBufferDeviceAddressCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : BufferDeviceAddressCreateInfoEXT( *reinterpret_cast<BufferDeviceAddressCreateInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 BufferDeviceAddressCreateInfoEXT & operator=( BufferDeviceAddressCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     BufferDeviceAddressCreateInfoEXT & operator=( VkBufferDeviceAddressCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT const *>( &rhs );
       return *this;
     }
 
-    BufferDeviceAddressCreateInfoEXT & operator=( BufferDeviceAddressCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( BufferDeviceAddressCreateInfoEXT ) );
-      return *this;
-    }
-
     BufferDeviceAddressCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -22500,7 +22220,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferDeviceAddressCreateInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferDeviceAddressCreateInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress = {};
 
@@ -22527,23 +22247,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR BufferDeviceAddressInfo( BufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     BufferDeviceAddressInfo( VkBufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : BufferDeviceAddressInfo( *reinterpret_cast<BufferDeviceAddressInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 BufferDeviceAddressInfo & operator=( BufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     BufferDeviceAddressInfo & operator=( VkBufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo const *>( &rhs );
       return *this;
     }
 
-    BufferDeviceAddressInfo & operator=( BufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( BufferDeviceAddressInfo ) );
-      return *this;
-    }
-
     BufferDeviceAddressInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -22587,7 +22302,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferDeviceAddressInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferDeviceAddressInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Buffer buffer = {};
 
@@ -22615,23 +22330,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR BufferImageCopy( BufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     BufferImageCopy( VkBufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : BufferImageCopy( *reinterpret_cast<BufferImageCopy const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & operator=( BufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     BufferImageCopy & operator=( VkBufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferImageCopy const *>( &rhs );
       return *this;
     }
 
-    BufferImageCopy & operator=( BufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( BufferImageCopy ) );
-      return *this;
-    }
-
     BufferImageCopy & setBufferOffset( VULKAN_HPP_NAMESPACE::DeviceSize bufferOffset_ ) VULKAN_HPP_NOEXCEPT
     {
       bufferOffset = bufferOffset_;
@@ -22726,23 +22436,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR BufferImageCopy2KHR( BufferImageCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     BufferImageCopy2KHR( VkBufferImageCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : BufferImageCopy2KHR( *reinterpret_cast<BufferImageCopy2KHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2KHR & operator=( BufferImageCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     BufferImageCopy2KHR & operator=( VkBufferImageCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferImageCopy2KHR const *>( &rhs );
       return *this;
     }
 
-    BufferImageCopy2KHR & operator=( BufferImageCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( BufferImageCopy2KHR ) );
-      return *this;
-    }
-
     BufferImageCopy2KHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -22821,7 +22526,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferImageCopy2KHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferImageCopy2KHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DeviceSize bufferOffset = {};
     uint32_t bufferRowLength = {};
@@ -22853,23 +22558,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR BufferMemoryBarrier( BufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     BufferMemoryBarrier( VkBufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : BufferMemoryBarrier( *reinterpret_cast<BufferMemoryBarrier const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & operator=( BufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     BufferMemoryBarrier & operator=( VkBufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferMemoryBarrier const *>( &rhs );
       return *this;
     }
 
-    BufferMemoryBarrier & operator=( BufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( BufferMemoryBarrier ) );
-      return *this;
-    }
-
     BufferMemoryBarrier & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -22955,7 +22655,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferMemoryBarrier;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferMemoryBarrier;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask = {};
     VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask = {};
@@ -22988,23 +22688,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR BufferMemoryRequirementsInfo2( BufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     BufferMemoryRequirementsInfo2( VkBufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : BufferMemoryRequirementsInfo2( *reinterpret_cast<BufferMemoryRequirementsInfo2 const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 BufferMemoryRequirementsInfo2 & operator=( BufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     BufferMemoryRequirementsInfo2 & operator=( VkBufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 const *>( &rhs );
       return *this;
     }
 
-    BufferMemoryRequirementsInfo2 & operator=( BufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( BufferMemoryRequirementsInfo2 ) );
-      return *this;
-    }
-
     BufferMemoryRequirementsInfo2 & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -23048,7 +22743,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferMemoryRequirementsInfo2;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferMemoryRequirementsInfo2;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Buffer buffer = {};
 
@@ -23076,23 +22771,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR BufferOpaqueCaptureAddressCreateInfo( BufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     BufferOpaqueCaptureAddressCreateInfo( VkBufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : BufferOpaqueCaptureAddressCreateInfo( *reinterpret_cast<BufferOpaqueCaptureAddressCreateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 BufferOpaqueCaptureAddressCreateInfo & operator=( BufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     BufferOpaqueCaptureAddressCreateInfo & operator=( VkBufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo const *>( &rhs );
       return *this;
     }
 
-    BufferOpaqueCaptureAddressCreateInfo & operator=( BufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( BufferOpaqueCaptureAddressCreateInfo ) );
-      return *this;
-    }
-
     BufferOpaqueCaptureAddressCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -23136,7 +22826,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferOpaqueCaptureAddressCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferOpaqueCaptureAddressCreateInfo;
     const void* pNext = {};
     uint64_t opaqueCaptureAddress = {};
 
@@ -23164,23 +22854,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR BufferViewCreateInfo( BufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     BufferViewCreateInfo( VkBufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : BufferViewCreateInfo( *reinterpret_cast<BufferViewCreateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & operator=( BufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     BufferViewCreateInfo & operator=( VkBufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferViewCreateInfo const *>( &rhs );
       return *this;
     }
 
-    BufferViewCreateInfo & operator=( BufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( BufferViewCreateInfo ) );
-      return *this;
-    }
-
     BufferViewCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -23252,7 +22937,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferViewCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferViewCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::BufferViewCreateFlags flags = {};
     VULKAN_HPP_NAMESPACE::Buffer buffer = {};
@@ -23283,23 +22968,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR CalibratedTimestampInfoEXT( CalibratedTimestampInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     CalibratedTimestampInfoEXT( VkCalibratedTimestampInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : CalibratedTimestampInfoEXT( *reinterpret_cast<CalibratedTimestampInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 CalibratedTimestampInfoEXT & operator=( CalibratedTimestampInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     CalibratedTimestampInfoEXT & operator=( VkCalibratedTimestampInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT const *>( &rhs );
       return *this;
     }
 
-    CalibratedTimestampInfoEXT & operator=( CalibratedTimestampInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( CalibratedTimestampInfoEXT ) );
-      return *this;
-    }
-
     CalibratedTimestampInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -23343,7 +23023,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCalibratedTimestampInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCalibratedTimestampInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::TimeDomainEXT timeDomain = VULKAN_HPP_NAMESPACE::TimeDomainEXT::eDevice;
 
@@ -23370,23 +23050,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR CheckpointDataNV( CheckpointDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     CheckpointDataNV( VkCheckpointDataNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : CheckpointDataNV( *reinterpret_cast<CheckpointDataNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 CheckpointDataNV & operator=( CheckpointDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     CheckpointDataNV & operator=( VkCheckpointDataNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CheckpointDataNV const *>( &rhs );
       return *this;
     }
 
-    CheckpointDataNV & operator=( CheckpointDataNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( CheckpointDataNV ) );
-      return *this;
-    }
-
 
     operator VkCheckpointDataNV const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -23419,7 +23094,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCheckpointDataNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCheckpointDataNV;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::PipelineStageFlagBits stage = VULKAN_HPP_NAMESPACE::PipelineStageFlagBits::eTopOfPipe;
     void* pCheckpointMarker = {};
@@ -23504,23 +23179,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ClearDepthStencilValue( ClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ClearDepthStencilValue( VkClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ClearDepthStencilValue( *reinterpret_cast<ClearDepthStencilValue const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ClearDepthStencilValue & operator=( ClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ClearDepthStencilValue & operator=( VkClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ClearDepthStencilValue const *>( &rhs );
       return *this;
     }
 
-    ClearDepthStencilValue & operator=( ClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ClearDepthStencilValue ) );
-      return *this;
-    }
-
     ClearDepthStencilValue & setDepth( float depth_ ) VULKAN_HPP_NOEXCEPT
     {
       depth = depth_;
@@ -23634,23 +23304,18 @@ namespace VULKAN_HPP_NAMESPACE
     ClearAttachment( ClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ClearAttachment( VkClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ClearAttachment( *reinterpret_cast<ClearAttachment const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    ClearAttachment & operator=( ClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ClearAttachment & operator=( VkClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ClearAttachment const *>( &rhs );
       return *this;
     }
 
-    ClearAttachment & operator=( ClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ClearAttachment ) );
-      return *this;
-    }
-
     ClearAttachment & setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT
     {
       aspectMask = aspectMask_;
@@ -23704,23 +23369,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ClearRect( ClearRect const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ClearRect( VkClearRect const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ClearRect( *reinterpret_cast<ClearRect const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ClearRect & operator=( ClearRect const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ClearRect & operator=( VkClearRect const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ClearRect const *>( &rhs );
       return *this;
     }
 
-    ClearRect & operator=( ClearRect const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ClearRect ) );
-      return *this;
-    }
-
     ClearRect & setRect( VULKAN_HPP_NAMESPACE::Rect2D const & rect_ ) VULKAN_HPP_NOEXCEPT
     {
       rect = rect_;
@@ -23790,23 +23450,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR CoarseSampleLocationNV( CoarseSampleLocationNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     CoarseSampleLocationNV( VkCoarseSampleLocationNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : CoarseSampleLocationNV( *reinterpret_cast<CoarseSampleLocationNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 CoarseSampleLocationNV & operator=( CoarseSampleLocationNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     CoarseSampleLocationNV & operator=( VkCoarseSampleLocationNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV const *>( &rhs );
       return *this;
     }
 
-    CoarseSampleLocationNV & operator=( CoarseSampleLocationNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( CoarseSampleLocationNV ) );
-      return *this;
-    }
-
     CoarseSampleLocationNV & setPixelX( uint32_t pixelX_ ) VULKAN_HPP_NOEXCEPT
     {
       pixelX = pixelX_;
@@ -23876,9 +23531,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR CoarseSampleOrderCustomNV( CoarseSampleOrderCustomNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     CoarseSampleOrderCustomNV( VkCoarseSampleOrderCustomNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : CoarseSampleOrderCustomNV( *reinterpret_cast<CoarseSampleOrderCustomNV const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     CoarseSampleOrderCustomNV( VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV shadingRate_, uint32_t sampleCount_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV> const & sampleLocations_ )
@@ -23887,18 +23541,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 CoarseSampleOrderCustomNV & operator=( CoarseSampleOrderCustomNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     CoarseSampleOrderCustomNV & operator=( VkCoarseSampleOrderCustomNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV const *>( &rhs );
       return *this;
     }
 
-    CoarseSampleOrderCustomNV & operator=( CoarseSampleOrderCustomNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( CoarseSampleOrderCustomNV ) );
-      return *this;
-    }
-
     CoarseSampleOrderCustomNV & setShadingRate( VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV shadingRate_ ) VULKAN_HPP_NOEXCEPT
     {
       shadingRate = shadingRate_;
@@ -24086,23 +23736,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR CommandBufferAllocateInfo( CommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     CommandBufferAllocateInfo( VkCommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : CommandBufferAllocateInfo( *reinterpret_cast<CommandBufferAllocateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 CommandBufferAllocateInfo & operator=( CommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     CommandBufferAllocateInfo & operator=( VkCommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo const *>( &rhs );
       return *this;
     }
 
-    CommandBufferAllocateInfo & operator=( CommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( CommandBufferAllocateInfo ) );
-      return *this;
-    }
-
     CommandBufferAllocateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -24160,7 +23805,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferAllocateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferAllocateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::CommandPool commandPool = {};
     VULKAN_HPP_NAMESPACE::CommandBufferLevel level = VULKAN_HPP_NAMESPACE::CommandBufferLevel::ePrimary;
@@ -24389,23 +24034,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR CommandBufferInheritanceInfo( CommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     CommandBufferInheritanceInfo( VkCommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : CommandBufferInheritanceInfo( *reinterpret_cast<CommandBufferInheritanceInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & operator=( CommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     CommandBufferInheritanceInfo & operator=( VkCommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo const *>( &rhs );
       return *this;
     }
 
-    CommandBufferInheritanceInfo & operator=( CommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( CommandBufferInheritanceInfo ) );
-      return *this;
-    }
-
     CommandBufferInheritanceInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -24484,7 +24124,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferInheritanceInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferInheritanceInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::RenderPass renderPass = {};
     uint32_t subpass = {};
@@ -24516,23 +24156,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR CommandBufferBeginInfo( CommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     CommandBufferBeginInfo( VkCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : CommandBufferBeginInfo( *reinterpret_cast<CommandBufferBeginInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 CommandBufferBeginInfo & operator=( CommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     CommandBufferBeginInfo & operator=( VkCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo const *>( &rhs );
       return *this;
     }
 
-    CommandBufferBeginInfo & operator=( CommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( CommandBufferBeginInfo ) );
-      return *this;
-    }
-
     CommandBufferBeginInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -24583,7 +24218,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferBeginInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferBeginInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::CommandBufferUsageFlags flags = {};
     const VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo* pInheritanceInfo = {};
@@ -24611,23 +24246,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR CommandBufferInheritanceConditionalRenderingInfoEXT( CommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     CommandBufferInheritanceConditionalRenderingInfoEXT( VkCommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : CommandBufferInheritanceConditionalRenderingInfoEXT( *reinterpret_cast<CommandBufferInheritanceConditionalRenderingInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceConditionalRenderingInfoEXT & operator=( CommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     CommandBufferInheritanceConditionalRenderingInfoEXT & operator=( VkCommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT const *>( &rhs );
       return *this;
     }
 
-    CommandBufferInheritanceConditionalRenderingInfoEXT & operator=( CommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( CommandBufferInheritanceConditionalRenderingInfoEXT ) );
-      return *this;
-    }
-
     CommandBufferInheritanceConditionalRenderingInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -24671,7 +24301,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferInheritanceConditionalRenderingInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferInheritanceConditionalRenderingInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 conditionalRenderingEnable = {};
 
@@ -24698,23 +24328,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR CommandBufferInheritanceRenderPassTransformInfoQCOM( CommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     CommandBufferInheritanceRenderPassTransformInfoQCOM( VkCommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : CommandBufferInheritanceRenderPassTransformInfoQCOM( *reinterpret_cast<CommandBufferInheritanceRenderPassTransformInfoQCOM const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderPassTransformInfoQCOM & operator=( CommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     CommandBufferInheritanceRenderPassTransformInfoQCOM & operator=( VkCommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM const *>( &rhs );
       return *this;
     }
 
-    CommandBufferInheritanceRenderPassTransformInfoQCOM & operator=( CommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( CommandBufferInheritanceRenderPassTransformInfoQCOM ) );
-      return *this;
-    }
-
     CommandBufferInheritanceRenderPassTransformInfoQCOM & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -24765,7 +24390,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferInheritanceRenderPassTransformInfoQCOM;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferInheritanceRenderPassTransformInfoQCOM;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity;
     VULKAN_HPP_NAMESPACE::Rect2D renderArea = {};
@@ -24793,23 +24418,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR CommandPoolCreateInfo( CommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     CommandPoolCreateInfo( VkCommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : CommandPoolCreateInfo( *reinterpret_cast<CommandPoolCreateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 CommandPoolCreateInfo & operator=( CommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     CommandPoolCreateInfo & operator=( VkCommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo const *>( &rhs );
       return *this;
     }
 
-    CommandPoolCreateInfo & operator=( CommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( CommandPoolCreateInfo ) );
-      return *this;
-    }
-
     CommandPoolCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -24860,7 +24480,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandPoolCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandPoolCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::CommandPoolCreateFlags flags = {};
     uint32_t queueFamilyIndex = {};
@@ -24987,23 +24607,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SpecializationMapEntry( SpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SpecializationMapEntry( VkSpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SpecializationMapEntry( *reinterpret_cast<SpecializationMapEntry const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SpecializationMapEntry & operator=( SpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SpecializationMapEntry & operator=( VkSpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SpecializationMapEntry const *>( &rhs );
       return *this;
     }
 
-    SpecializationMapEntry & operator=( SpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SpecializationMapEntry ) );
-      return *this;
-    }
-
     SpecializationMapEntry & setConstantID( uint32_t constantID_ ) VULKAN_HPP_NOEXCEPT
     {
       constantID = constantID_;
@@ -25073,9 +24688,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SpecializationInfo( SpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SpecializationInfo( VkSpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SpecializationInfo( *reinterpret_cast<SpecializationInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     template <typename T>
@@ -25085,18 +24699,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SpecializationInfo & operator=( SpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SpecializationInfo & operator=( VkSpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SpecializationInfo const *>( &rhs );
       return *this;
     }
 
-    SpecializationInfo & operator=( SpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SpecializationInfo ) );
-      return *this;
-    }
-
     SpecializationInfo & setMapEntryCount( uint32_t mapEntryCount_ ) VULKAN_HPP_NOEXCEPT
     {
       mapEntryCount = mapEntryCount_;
@@ -25194,23 +24804,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineShaderStageCreateInfo( PipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineShaderStageCreateInfo( VkPipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineShaderStageCreateInfo( *reinterpret_cast<PipelineShaderStageCreateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & operator=( PipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineShaderStageCreateInfo & operator=( VkPipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo const *>( &rhs );
       return *this;
     }
 
-    PipelineShaderStageCreateInfo & operator=( PipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineShaderStageCreateInfo ) );
-      return *this;
-    }
-
     PipelineShaderStageCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -25282,7 +24887,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineShaderStageCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineShaderStageCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateFlags flags = {};
     VULKAN_HPP_NAMESPACE::ShaderStageFlagBits stage = VULKAN_HPP_NAMESPACE::ShaderStageFlagBits::eVertex;
@@ -25513,23 +25118,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ComputePipelineCreateInfo( ComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ComputePipelineCreateInfo( VkComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ComputePipelineCreateInfo( *reinterpret_cast<ComputePipelineCreateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & operator=( ComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ComputePipelineCreateInfo & operator=( VkComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo const *>( &rhs );
       return *this;
     }
 
-    ComputePipelineCreateInfo & operator=( ComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ComputePipelineCreateInfo ) );
-      return *this;
-    }
-
     ComputePipelineCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -25601,7 +25201,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eComputePipelineCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eComputePipelineCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags = {};
     VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo stage = {};
@@ -25632,23 +25232,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ConditionalRenderingBeginInfoEXT( ConditionalRenderingBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ConditionalRenderingBeginInfoEXT( VkConditionalRenderingBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ConditionalRenderingBeginInfoEXT( *reinterpret_cast<ConditionalRenderingBeginInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfoEXT & operator=( ConditionalRenderingBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ConditionalRenderingBeginInfoEXT & operator=( VkConditionalRenderingBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT const *>( &rhs );
       return *this;
     }
 
-    ConditionalRenderingBeginInfoEXT & operator=( ConditionalRenderingBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ConditionalRenderingBeginInfoEXT ) );
-      return *this;
-    }
-
     ConditionalRenderingBeginInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -25706,7 +25301,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eConditionalRenderingBeginInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eConditionalRenderingBeginInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Buffer buffer = {};
     VULKAN_HPP_NAMESPACE::DeviceSize offset = {};
@@ -25734,23 +25329,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ConformanceVersion( ConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ConformanceVersion( VkConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ConformanceVersion( *reinterpret_cast<ConformanceVersion const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ConformanceVersion & operator=( ConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ConformanceVersion & operator=( VkConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ConformanceVersion const *>( &rhs );
       return *this;
     }
 
-    ConformanceVersion & operator=( ConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ConformanceVersion ) );
-      return *this;
-    }
-
     ConformanceVersion & setMajor( uint8_t major_ ) VULKAN_HPP_NOEXCEPT
     {
       major = major_;
@@ -25830,23 +25420,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR CooperativeMatrixPropertiesNV( CooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     CooperativeMatrixPropertiesNV( VkCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : CooperativeMatrixPropertiesNV( *reinterpret_cast<CooperativeMatrixPropertiesNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 CooperativeMatrixPropertiesNV & operator=( CooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     CooperativeMatrixPropertiesNV & operator=( VkCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV const *>( &rhs );
       return *this;
     }
 
-    CooperativeMatrixPropertiesNV & operator=( CooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( CooperativeMatrixPropertiesNV ) );
-      return *this;
-    }
-
     CooperativeMatrixPropertiesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -25939,7 +25524,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCooperativeMatrixPropertiesNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCooperativeMatrixPropertiesNV;
     void* pNext = {};
     uint32_t MSize = {};
     uint32_t NSize = {};
@@ -25973,23 +25558,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR CopyAccelerationStructureInfoKHR( CopyAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     CopyAccelerationStructureInfoKHR( VkCopyAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : CopyAccelerationStructureInfoKHR( *reinterpret_cast<CopyAccelerationStructureInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureInfoKHR & operator=( CopyAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     CopyAccelerationStructureInfoKHR & operator=( VkCopyAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR const *>( &rhs );
       return *this;
     }
 
-    CopyAccelerationStructureInfoKHR & operator=( CopyAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( CopyAccelerationStructureInfoKHR ) );
-      return *this;
-    }
-
     CopyAccelerationStructureInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -26047,7 +25627,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyAccelerationStructureInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyAccelerationStructureInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::AccelerationStructureKHR src = {};
     VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dst = {};
@@ -26076,23 +25656,18 @@ namespace VULKAN_HPP_NAMESPACE
     CopyAccelerationStructureToMemoryInfoKHR( CopyAccelerationStructureToMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     CopyAccelerationStructureToMemoryInfoKHR( VkCopyAccelerationStructureToMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : CopyAccelerationStructureToMemoryInfoKHR( *reinterpret_cast<CopyAccelerationStructureToMemoryInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    CopyAccelerationStructureToMemoryInfoKHR & operator=( CopyAccelerationStructureToMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     CopyAccelerationStructureToMemoryInfoKHR & operator=( VkCopyAccelerationStructureToMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR const *>( &rhs );
       return *this;
     }
 
-    CopyAccelerationStructureToMemoryInfoKHR & operator=( CopyAccelerationStructureToMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( CopyAccelerationStructureToMemoryInfoKHR ) );
-      return *this;
-    }
-
     CopyAccelerationStructureToMemoryInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -26132,7 +25707,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyAccelerationStructureToMemoryInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyAccelerationStructureToMemoryInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::AccelerationStructureKHR src = {};
     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR dst = {};
@@ -26161,9 +25736,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR CopyBufferInfo2KHR( CopyBufferInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     CopyBufferInfo2KHR( VkCopyBufferInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : CopyBufferInfo2KHR( *reinterpret_cast<CopyBufferInfo2KHR const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     CopyBufferInfo2KHR( VULKAN_HPP_NAMESPACE::Buffer srcBuffer_, VULKAN_HPP_NAMESPACE::Buffer dstBuffer_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferCopy2KHR> const & regions_ )
@@ -26172,18 +25746,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2KHR & operator=( CopyBufferInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     CopyBufferInfo2KHR & operator=( VkCopyBufferInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyBufferInfo2KHR const *>( &rhs );
       return *this;
     }
 
-    CopyBufferInfo2KHR & operator=( CopyBufferInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( CopyBufferInfo2KHR ) );
-      return *this;
-    }
-
     CopyBufferInfo2KHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -26257,7 +25827,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyBufferInfo2KHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyBufferInfo2KHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Buffer srcBuffer = {};
     VULKAN_HPP_NAMESPACE::Buffer dstBuffer = {};
@@ -26287,9 +25857,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR CopyBufferToImageInfo2KHR( CopyBufferToImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     CopyBufferToImageInfo2KHR( VkCopyBufferToImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : CopyBufferToImageInfo2KHR( *reinterpret_cast<CopyBufferToImageInfo2KHR const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     CopyBufferToImageInfo2KHR( VULKAN_HPP_NAMESPACE::Buffer srcBuffer_, VULKAN_HPP_NAMESPACE::Image dstImage_, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferImageCopy2KHR> const & regions_ )
@@ -26298,18 +25867,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2KHR & operator=( CopyBufferToImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     CopyBufferToImageInfo2KHR & operator=( VkCopyBufferToImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2KHR const *>( &rhs );
       return *this;
     }
 
-    CopyBufferToImageInfo2KHR & operator=( CopyBufferToImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( CopyBufferToImageInfo2KHR ) );
-      return *this;
-    }
-
     CopyBufferToImageInfo2KHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -26390,7 +25955,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyBufferToImageInfo2KHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyBufferToImageInfo2KHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Buffer srcBuffer = {};
     VULKAN_HPP_NAMESPACE::Image dstImage = {};
@@ -26421,23 +25986,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR CopyCommandTransformInfoQCOM( CopyCommandTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     CopyCommandTransformInfoQCOM( VkCopyCommandTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : CopyCommandTransformInfoQCOM( *reinterpret_cast<CopyCommandTransformInfoQCOM const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 CopyCommandTransformInfoQCOM & operator=( CopyCommandTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     CopyCommandTransformInfoQCOM & operator=( VkCopyCommandTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM const *>( &rhs );
       return *this;
     }
 
-    CopyCommandTransformInfoQCOM & operator=( CopyCommandTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( CopyCommandTransformInfoQCOM ) );
-      return *this;
-    }
-
     CopyCommandTransformInfoQCOM & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -26481,7 +26041,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyCommandTransformInfoQCOM;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyCommandTransformInfoQCOM;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity;
 
@@ -26608,23 +26168,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR CopyDescriptorSet( CopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     CopyDescriptorSet( VkCopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : CopyDescriptorSet( *reinterpret_cast<CopyDescriptorSet const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & operator=( CopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     CopyDescriptorSet & operator=( VkCopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyDescriptorSet const *>( &rhs );
       return *this;
     }
 
-    CopyDescriptorSet & operator=( CopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( CopyDescriptorSet ) );
-      return *this;
-    }
-
     CopyDescriptorSet & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -26710,7 +26265,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyDescriptorSet;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyDescriptorSet;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DescriptorSet srcSet = {};
     uint32_t srcBinding = {};
@@ -26743,23 +26298,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImageCopy2KHR( ImageCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImageCopy2KHR( VkImageCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImageCopy2KHR( *reinterpret_cast<ImageCopy2KHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImageCopy2KHR & operator=( ImageCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImageCopy2KHR & operator=( VkImageCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageCopy2KHR const *>( &rhs );
       return *this;
     }
 
-    ImageCopy2KHR & operator=( ImageCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImageCopy2KHR ) );
-      return *this;
-    }
-
     ImageCopy2KHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -26831,7 +26381,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageCopy2KHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageCopy2KHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {};
     VULKAN_HPP_NAMESPACE::Offset3D srcOffset = {};
@@ -26862,9 +26412,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR CopyImageInfo2KHR( CopyImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     CopyImageInfo2KHR( VkCopyImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : CopyImageInfo2KHR( *reinterpret_cast<CopyImageInfo2KHR const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     CopyImageInfo2KHR( VULKAN_HPP_NAMESPACE::Image srcImage_, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_, VULKAN_HPP_NAMESPACE::Image dstImage_, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageCopy2KHR> const & regions_ )
@@ -26873,18 +26422,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2KHR & operator=( CopyImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     CopyImageInfo2KHR & operator=( VkCopyImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyImageInfo2KHR const *>( &rhs );
       return *this;
     }
 
-    CopyImageInfo2KHR & operator=( CopyImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( CopyImageInfo2KHR ) );
-      return *this;
-    }
-
     CopyImageInfo2KHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -26972,7 +26517,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyImageInfo2KHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyImageInfo2KHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Image srcImage = {};
     VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
@@ -27004,9 +26549,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR CopyImageToBufferInfo2KHR( CopyImageToBufferInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     CopyImageToBufferInfo2KHR( VkCopyImageToBufferInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : CopyImageToBufferInfo2KHR( *reinterpret_cast<CopyImageToBufferInfo2KHR const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     CopyImageToBufferInfo2KHR( VULKAN_HPP_NAMESPACE::Image srcImage_, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_, VULKAN_HPP_NAMESPACE::Buffer dstBuffer_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferImageCopy2KHR> const & regions_ )
@@ -27015,18 +26559,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2KHR & operator=( CopyImageToBufferInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     CopyImageToBufferInfo2KHR & operator=( VkCopyImageToBufferInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2KHR const *>( &rhs );
       return *this;
     }
 
-    CopyImageToBufferInfo2KHR & operator=( CopyImageToBufferInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( CopyImageToBufferInfo2KHR ) );
-      return *this;
-    }
-
     CopyImageToBufferInfo2KHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -27107,7 +26647,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyImageToBufferInfo2KHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyImageToBufferInfo2KHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Image srcImage = {};
     VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
@@ -27138,23 +26678,18 @@ namespace VULKAN_HPP_NAMESPACE
     CopyMemoryToAccelerationStructureInfoKHR( CopyMemoryToAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     CopyMemoryToAccelerationStructureInfoKHR( VkCopyMemoryToAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : CopyMemoryToAccelerationStructureInfoKHR( *reinterpret_cast<CopyMemoryToAccelerationStructureInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    CopyMemoryToAccelerationStructureInfoKHR & operator=( CopyMemoryToAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     CopyMemoryToAccelerationStructureInfoKHR & operator=( VkCopyMemoryToAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR const *>( &rhs );
       return *this;
     }
 
-    CopyMemoryToAccelerationStructureInfoKHR & operator=( CopyMemoryToAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( CopyMemoryToAccelerationStructureInfoKHR ) );
-      return *this;
-    }
-
     CopyMemoryToAccelerationStructureInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -27194,7 +26729,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyMemoryToAccelerationStructureInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyMemoryToAccelerationStructureInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR src = {};
     VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dst = {};
@@ -27224,9 +26759,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR D3D12FenceSubmitInfoKHR( D3D12FenceSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     D3D12FenceSubmitInfoKHR( VkD3D12FenceSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : D3D12FenceSubmitInfoKHR( *reinterpret_cast<D3D12FenceSubmitInfoKHR const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     D3D12FenceSubmitInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & waitSemaphoreValues_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & signalSemaphoreValues_ = {} )
@@ -27235,18 +26769,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR & operator=( D3D12FenceSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     D3D12FenceSubmitInfoKHR & operator=( VkD3D12FenceSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR const *>( &rhs );
       return *this;
     }
 
-    D3D12FenceSubmitInfoKHR & operator=( D3D12FenceSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( D3D12FenceSubmitInfoKHR ) );
-      return *this;
-    }
-
     D3D12FenceSubmitInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -27329,7 +26859,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eD3D12FenceSubmitInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eD3D12FenceSubmitInfoKHR;
     const void* pNext = {};
     uint32_t waitSemaphoreValuesCount = {};
     const uint64_t* pWaitSemaphoreValues = {};
@@ -27360,23 +26890,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 DebugMarkerMarkerInfoEXT( DebugMarkerMarkerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DebugMarkerMarkerInfoEXT( VkDebugMarkerMarkerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DebugMarkerMarkerInfoEXT( *reinterpret_cast<DebugMarkerMarkerInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DebugMarkerMarkerInfoEXT & operator=( DebugMarkerMarkerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DebugMarkerMarkerInfoEXT & operator=( VkDebugMarkerMarkerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT const *>( &rhs );
       return *this;
     }
 
-    DebugMarkerMarkerInfoEXT & operator=( DebugMarkerMarkerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DebugMarkerMarkerInfoEXT ) );
-      return *this;
-    }
-
     DebugMarkerMarkerInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -27427,7 +26952,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugMarkerMarkerInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugMarkerMarkerInfoEXT;
     const void* pNext = {};
     const char* pMarkerName = {};
     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 4> color = {};
@@ -27455,23 +26980,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DebugMarkerObjectNameInfoEXT( DebugMarkerObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DebugMarkerObjectNameInfoEXT( VkDebugMarkerObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DebugMarkerObjectNameInfoEXT( *reinterpret_cast<DebugMarkerObjectNameInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectNameInfoEXT & operator=( DebugMarkerObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DebugMarkerObjectNameInfoEXT & operator=( VkDebugMarkerObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT const *>( &rhs );
       return *this;
     }
 
-    DebugMarkerObjectNameInfoEXT & operator=( DebugMarkerObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DebugMarkerObjectNameInfoEXT ) );
-      return *this;
-    }
-
     DebugMarkerObjectNameInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -27529,7 +27049,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugMarkerObjectNameInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugMarkerObjectNameInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
     uint64_t object = {};
@@ -27558,9 +27078,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DebugMarkerObjectTagInfoEXT( DebugMarkerObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DebugMarkerObjectTagInfoEXT( VkDebugMarkerObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DebugMarkerObjectTagInfoEXT( *reinterpret_cast<DebugMarkerObjectTagInfoEXT const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     template <typename T>
@@ -27570,18 +27089,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & operator=( DebugMarkerObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DebugMarkerObjectTagInfoEXT & operator=( VkDebugMarkerObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT const *>( &rhs );
       return *this;
     }
 
-    DebugMarkerObjectTagInfoEXT & operator=( DebugMarkerObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DebugMarkerObjectTagInfoEXT ) );
-      return *this;
-    }
-
     DebugMarkerObjectTagInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -27663,7 +27178,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugMarkerObjectTagInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugMarkerObjectTagInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
     uint64_t object = {};
@@ -27694,23 +27209,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DebugReportCallbackCreateInfoEXT( DebugReportCallbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DebugReportCallbackCreateInfoEXT( VkDebugReportCallbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DebugReportCallbackCreateInfoEXT( *reinterpret_cast<DebugReportCallbackCreateInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DebugReportCallbackCreateInfoEXT & operator=( DebugReportCallbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DebugReportCallbackCreateInfoEXT & operator=( VkDebugReportCallbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT const *>( &rhs );
       return *this;
     }
 
-    DebugReportCallbackCreateInfoEXT & operator=( DebugReportCallbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DebugReportCallbackCreateInfoEXT ) );
-      return *this;
-    }
-
     DebugReportCallbackCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -27768,7 +27278,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugReportCallbackCreateInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugReportCallbackCreateInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT flags = {};
     PFN_vkDebugReportCallbackEXT pfnCallback = {};
@@ -27797,23 +27307,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT( DebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DebugUtilsLabelEXT( VkDebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DebugUtilsLabelEXT( *reinterpret_cast<DebugUtilsLabelEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT & operator=( DebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DebugUtilsLabelEXT & operator=( VkDebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT const *>( &rhs );
       return *this;
     }
 
-    DebugUtilsLabelEXT & operator=( DebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DebugUtilsLabelEXT ) );
-      return *this;
-    }
-
     DebugUtilsLabelEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -27864,7 +27369,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugUtilsLabelEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugUtilsLabelEXT;
     const void* pNext = {};
     const char* pLabelName = {};
     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 4> color = {};
@@ -27892,23 +27397,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DebugUtilsObjectNameInfoEXT( DebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DebugUtilsObjectNameInfoEXT( VkDebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DebugUtilsObjectNameInfoEXT( *reinterpret_cast<DebugUtilsObjectNameInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectNameInfoEXT & operator=( DebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DebugUtilsObjectNameInfoEXT & operator=( VkDebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT const *>( &rhs );
       return *this;
     }
 
-    DebugUtilsObjectNameInfoEXT & operator=( DebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DebugUtilsObjectNameInfoEXT ) );
-      return *this;
-    }
-
     DebugUtilsObjectNameInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -27966,7 +27466,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugUtilsObjectNameInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugUtilsObjectNameInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown;
     uint64_t objectHandle = {};
@@ -27995,9 +27495,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT( DebugUtilsMessengerCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DebugUtilsMessengerCallbackDataEXT( VkDebugUtilsMessengerCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DebugUtilsMessengerCallbackDataEXT( *reinterpret_cast<DebugUtilsMessengerCallbackDataEXT const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     DebugUtilsMessengerCallbackDataEXT( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataFlagsEXT flags_, const char* pMessageIdName_, int32_t messageIdNumber_, const char* pMessage_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT> const & queueLabels_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT> const & cmdBufLabels_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT> const & objects_ = {} )
@@ -28006,18 +27505,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & operator=( DebugUtilsMessengerCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DebugUtilsMessengerCallbackDataEXT & operator=( VkDebugUtilsMessengerCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT const *>( &rhs );
       return *this;
     }
 
-    DebugUtilsMessengerCallbackDataEXT & operator=( DebugUtilsMessengerCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DebugUtilsMessengerCallbackDataEXT ) );
-      return *this;
-    }
-
     DebugUtilsMessengerCallbackDataEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -28151,7 +27646,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugUtilsMessengerCallbackDataEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugUtilsMessengerCallbackDataEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataFlagsEXT flags = {};
     const char* pMessageIdName = {};
@@ -28187,23 +27682,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DebugUtilsMessengerCreateInfoEXT( DebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DebugUtilsMessengerCreateInfoEXT( VkDebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DebugUtilsMessengerCreateInfoEXT( *reinterpret_cast<DebugUtilsMessengerCreateInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT & operator=( DebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DebugUtilsMessengerCreateInfoEXT & operator=( VkDebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT const *>( &rhs );
       return *this;
     }
 
-    DebugUtilsMessengerCreateInfoEXT & operator=( DebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DebugUtilsMessengerCreateInfoEXT ) );
-      return *this;
-    }
-
     DebugUtilsMessengerCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -28275,7 +27765,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugUtilsMessengerCreateInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugUtilsMessengerCreateInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateFlagsEXT flags = {};
     VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagsEXT messageSeverity = {};
@@ -28306,9 +27796,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DebugUtilsObjectTagInfoEXT( DebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DebugUtilsObjectTagInfoEXT( VkDebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DebugUtilsObjectTagInfoEXT( *reinterpret_cast<DebugUtilsObjectTagInfoEXT const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     template <typename T>
@@ -28318,18 +27807,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & operator=( DebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DebugUtilsObjectTagInfoEXT & operator=( VkDebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT const *>( &rhs );
       return *this;
     }
 
-    DebugUtilsObjectTagInfoEXT & operator=( DebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DebugUtilsObjectTagInfoEXT ) );
-      return *this;
-    }
-
     DebugUtilsObjectTagInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -28411,7 +27896,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugUtilsObjectTagInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugUtilsObjectTagInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown;
     uint64_t objectHandle = {};
@@ -28442,23 +27927,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DedicatedAllocationBufferCreateInfoNV( DedicatedAllocationBufferCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DedicatedAllocationBufferCreateInfoNV( VkDedicatedAllocationBufferCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DedicatedAllocationBufferCreateInfoNV( *reinterpret_cast<DedicatedAllocationBufferCreateInfoNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationBufferCreateInfoNV & operator=( DedicatedAllocationBufferCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DedicatedAllocationBufferCreateInfoNV & operator=( VkDedicatedAllocationBufferCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV const *>( &rhs );
       return *this;
     }
 
-    DedicatedAllocationBufferCreateInfoNV & operator=( DedicatedAllocationBufferCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DedicatedAllocationBufferCreateInfoNV ) );
-      return *this;
-    }
-
     DedicatedAllocationBufferCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -28502,7 +27982,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDedicatedAllocationBufferCreateInfoNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDedicatedAllocationBufferCreateInfoNV;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocation = {};
 
@@ -28529,23 +28009,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DedicatedAllocationImageCreateInfoNV( DedicatedAllocationImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DedicatedAllocationImageCreateInfoNV( VkDedicatedAllocationImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DedicatedAllocationImageCreateInfoNV( *reinterpret_cast<DedicatedAllocationImageCreateInfoNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationImageCreateInfoNV & operator=( DedicatedAllocationImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DedicatedAllocationImageCreateInfoNV & operator=( VkDedicatedAllocationImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV const *>( &rhs );
       return *this;
     }
 
-    DedicatedAllocationImageCreateInfoNV & operator=( DedicatedAllocationImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DedicatedAllocationImageCreateInfoNV ) );
-      return *this;
-    }
-
     DedicatedAllocationImageCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -28589,7 +28064,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDedicatedAllocationImageCreateInfoNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDedicatedAllocationImageCreateInfoNV;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocation = {};
 
@@ -28616,23 +28091,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DedicatedAllocationMemoryAllocateInfoNV( DedicatedAllocationMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DedicatedAllocationMemoryAllocateInfoNV( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DedicatedAllocationMemoryAllocateInfoNV( *reinterpret_cast<DedicatedAllocationMemoryAllocateInfoNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationMemoryAllocateInfoNV & operator=( DedicatedAllocationMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DedicatedAllocationMemoryAllocateInfoNV & operator=( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV const *>( &rhs );
       return *this;
     }
 
-    DedicatedAllocationMemoryAllocateInfoNV & operator=( DedicatedAllocationMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DedicatedAllocationMemoryAllocateInfoNV ) );
-      return *this;
-    }
-
     DedicatedAllocationMemoryAllocateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -28683,7 +28153,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDedicatedAllocationMemoryAllocateInfoNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDedicatedAllocationMemoryAllocateInfoNV;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Image image = {};
     VULKAN_HPP_NAMESPACE::Buffer buffer = {};
@@ -28710,23 +28180,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DescriptorBufferInfo( DescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DescriptorBufferInfo( VkDescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DescriptorBufferInfo( *reinterpret_cast<DescriptorBufferInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DescriptorBufferInfo & operator=( DescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DescriptorBufferInfo & operator=( VkDescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorBufferInfo const *>( &rhs );
       return *this;
     }
 
-    DescriptorBufferInfo & operator=( DescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DescriptorBufferInfo ) );
-      return *this;
-    }
-
     DescriptorBufferInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
     {
       buffer = buffer_;
@@ -28996,23 +28461,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DescriptorImageInfo( DescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DescriptorImageInfo( VkDescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DescriptorImageInfo( *reinterpret_cast<DescriptorImageInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DescriptorImageInfo & operator=( DescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DescriptorImageInfo & operator=( VkDescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorImageInfo const *>( &rhs );
       return *this;
     }
 
-    DescriptorImageInfo & operator=( DescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DescriptorImageInfo ) );
-      return *this;
-    }
-
     DescriptorImageInfo & setSampler( VULKAN_HPP_NAMESPACE::Sampler sampler_ ) VULKAN_HPP_NOEXCEPT
     {
       sampler = sampler_;
@@ -29082,23 +28542,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DescriptorPoolSize( DescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DescriptorPoolSize( VkDescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DescriptorPoolSize( *reinterpret_cast<DescriptorPoolSize const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DescriptorPoolSize & operator=( DescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DescriptorPoolSize & operator=( VkDescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorPoolSize const *>( &rhs );
       return *this;
     }
 
-    DescriptorPoolSize & operator=( DescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DescriptorPoolSize ) );
-      return *this;
-    }
-
     DescriptorPoolSize & setType( VULKAN_HPP_NAMESPACE::DescriptorType type_ ) VULKAN_HPP_NOEXCEPT
     {
       type = type_;
@@ -29161,9 +28616,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DescriptorPoolCreateInfo( DescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DescriptorPoolCreateInfo( VkDescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DescriptorPoolCreateInfo( *reinterpret_cast<DescriptorPoolCreateInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     DescriptorPoolCreateInfo( VULKAN_HPP_NAMESPACE::DescriptorPoolCreateFlags flags_, uint32_t maxSets_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorPoolSize> const & poolSizes_ )
@@ -29172,18 +28626,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo & operator=( DescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DescriptorPoolCreateInfo & operator=( VkDescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo const *>( &rhs );
       return *this;
     }
 
-    DescriptorPoolCreateInfo & operator=( DescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DescriptorPoolCreateInfo ) );
-      return *this;
-    }
-
     DescriptorPoolCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -29257,7 +28707,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorPoolCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorPoolCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DescriptorPoolCreateFlags flags = {};
     uint32_t maxSets = {};
@@ -29287,23 +28737,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DescriptorPoolInlineUniformBlockCreateInfoEXT( DescriptorPoolInlineUniformBlockCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DescriptorPoolInlineUniformBlockCreateInfoEXT( VkDescriptorPoolInlineUniformBlockCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DescriptorPoolInlineUniformBlockCreateInfoEXT( *reinterpret_cast<DescriptorPoolInlineUniformBlockCreateInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DescriptorPoolInlineUniformBlockCreateInfoEXT & operator=( DescriptorPoolInlineUniformBlockCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DescriptorPoolInlineUniformBlockCreateInfoEXT & operator=( VkDescriptorPoolInlineUniformBlockCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfoEXT const *>( &rhs );
       return *this;
     }
 
-    DescriptorPoolInlineUniformBlockCreateInfoEXT & operator=( DescriptorPoolInlineUniformBlockCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DescriptorPoolInlineUniformBlockCreateInfoEXT ) );
-      return *this;
-    }
-
     DescriptorPoolInlineUniformBlockCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -29347,7 +28792,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorPoolInlineUniformBlockCreateInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorPoolInlineUniformBlockCreateInfoEXT;
     const void* pNext = {};
     uint32_t maxInlineUniformBlockBindings = {};
 
@@ -29574,9 +29019,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DescriptorSetAllocateInfo( DescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DescriptorSetAllocateInfo( VkDescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DescriptorSetAllocateInfo( *reinterpret_cast<DescriptorSetAllocateInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     DescriptorSetAllocateInfo( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayout> const & setLayouts_ )
@@ -29585,18 +29029,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DescriptorSetAllocateInfo & operator=( DescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DescriptorSetAllocateInfo & operator=( VkDescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo const *>( &rhs );
       return *this;
     }
 
-    DescriptorSetAllocateInfo & operator=( DescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DescriptorSetAllocateInfo ) );
-      return *this;
-    }
-
     DescriptorSetAllocateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -29663,7 +29103,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetAllocateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetAllocateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool = {};
     uint32_t descriptorSetCount = {};
@@ -29691,9 +29131,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutBinding( DescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DescriptorSetLayoutBinding( VkDescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DescriptorSetLayoutBinding( *reinterpret_cast<DescriptorSetLayoutBinding const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     DescriptorSetLayoutBinding( uint32_t binding_, VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_, VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Sampler> const & immutableSamplers_ )
@@ -29702,18 +29141,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding & operator=( DescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DescriptorSetLayoutBinding & operator=( VkDescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding const *>( &rhs );
       return *this;
     }
 
-    DescriptorSetLayoutBinding & operator=( DescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DescriptorSetLayoutBinding ) );
-      return *this;
-    }
-
     DescriptorSetLayoutBinding & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT
     {
       binding = binding_;
@@ -29809,9 +29244,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutBindingFlagsCreateInfo( DescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DescriptorSetLayoutBindingFlagsCreateInfo( VkDescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DescriptorSetLayoutBindingFlagsCreateInfo( *reinterpret_cast<DescriptorSetLayoutBindingFlagsCreateInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     DescriptorSetLayoutBindingFlagsCreateInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags> const & bindingFlags_ )
@@ -29820,18 +29254,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBindingFlagsCreateInfo & operator=( DescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DescriptorSetLayoutBindingFlagsCreateInfo & operator=( VkDescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo const *>( &rhs );
       return *this;
     }
 
-    DescriptorSetLayoutBindingFlagsCreateInfo & operator=( DescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DescriptorSetLayoutBindingFlagsCreateInfo ) );
-      return *this;
-    }
-
     DescriptorSetLayoutBindingFlagsCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -29891,7 +29321,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetLayoutBindingFlagsCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetLayoutBindingFlagsCreateInfo;
     const void* pNext = {};
     uint32_t bindingCount = {};
     const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags* pBindingFlags = {};
@@ -29920,9 +29350,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutCreateInfo( DescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DescriptorSetLayoutCreateInfo( VkDescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DescriptorSetLayoutCreateInfo( *reinterpret_cast<DescriptorSetLayoutCreateInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     DescriptorSetLayoutCreateInfo( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding> const & bindings_ )
@@ -29931,18 +29360,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutCreateInfo & operator=( DescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DescriptorSetLayoutCreateInfo & operator=( VkDescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo const *>( &rhs );
       return *this;
     }
 
-    DescriptorSetLayoutCreateInfo & operator=( DescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DescriptorSetLayoutCreateInfo ) );
-      return *this;
-    }
-
     DescriptorSetLayoutCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -30009,7 +29434,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetLayoutCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetLayoutCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateFlags flags = {};
     uint32_t bindingCount = {};
@@ -30038,23 +29463,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutSupport( DescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DescriptorSetLayoutSupport( VkDescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DescriptorSetLayoutSupport( *reinterpret_cast<DescriptorSetLayoutSupport const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutSupport & operator=( DescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DescriptorSetLayoutSupport & operator=( VkDescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport const *>( &rhs );
       return *this;
     }
 
-    DescriptorSetLayoutSupport & operator=( DescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DescriptorSetLayoutSupport ) );
-      return *this;
-    }
-
 
     operator VkDescriptorSetLayoutSupport const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -30086,7 +29506,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetLayoutSupport;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetLayoutSupport;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 supported = {};
 
@@ -30114,9 +29534,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DescriptorSetVariableDescriptorCountAllocateInfo( DescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DescriptorSetVariableDescriptorCountAllocateInfo( VkDescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DescriptorSetVariableDescriptorCountAllocateInfo( *reinterpret_cast<DescriptorSetVariableDescriptorCountAllocateInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     DescriptorSetVariableDescriptorCountAllocateInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & descriptorCounts_ )
@@ -30125,18 +29544,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DescriptorSetVariableDescriptorCountAllocateInfo & operator=( DescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DescriptorSetVariableDescriptorCountAllocateInfo & operator=( VkDescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo const *>( &rhs );
       return *this;
     }
 
-    DescriptorSetVariableDescriptorCountAllocateInfo & operator=( DescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DescriptorSetVariableDescriptorCountAllocateInfo ) );
-      return *this;
-    }
-
     DescriptorSetVariableDescriptorCountAllocateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -30196,7 +29611,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetVariableDescriptorCountAllocateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetVariableDescriptorCountAllocateInfo;
     const void* pNext = {};
     uint32_t descriptorSetCount = {};
     const uint32_t* pDescriptorCounts = {};
@@ -30225,23 +29640,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DescriptorSetVariableDescriptorCountLayoutSupport( DescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DescriptorSetVariableDescriptorCountLayoutSupport( VkDescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DescriptorSetVariableDescriptorCountLayoutSupport( *reinterpret_cast<DescriptorSetVariableDescriptorCountLayoutSupport const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DescriptorSetVariableDescriptorCountLayoutSupport & operator=( DescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DescriptorSetVariableDescriptorCountLayoutSupport & operator=( VkDescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport const *>( &rhs );
       return *this;
     }
 
-    DescriptorSetVariableDescriptorCountLayoutSupport & operator=( DescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DescriptorSetVariableDescriptorCountLayoutSupport ) );
-      return *this;
-    }
-
 
     operator VkDescriptorSetVariableDescriptorCountLayoutSupport const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -30273,7 +29683,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetVariableDescriptorCountLayoutSupport;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetVariableDescriptorCountLayoutSupport;
     void* pNext = {};
     uint32_t maxVariableDescriptorCount = {};
 
@@ -30300,23 +29710,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplateEntry( DescriptorUpdateTemplateEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DescriptorUpdateTemplateEntry( VkDescriptorUpdateTemplateEntry const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DescriptorUpdateTemplateEntry( *reinterpret_cast<DescriptorUpdateTemplateEntry const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry & operator=( DescriptorUpdateTemplateEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DescriptorUpdateTemplateEntry & operator=( VkDescriptorUpdateTemplateEntry const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry const *>( &rhs );
       return *this;
     }
 
-    DescriptorUpdateTemplateEntry & operator=( DescriptorUpdateTemplateEntry const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DescriptorUpdateTemplateEntry ) );
-      return *this;
-    }
-
     DescriptorUpdateTemplateEntry & setDstBinding( uint32_t dstBinding_ ) VULKAN_HPP_NOEXCEPT
     {
       dstBinding = dstBinding_;
@@ -30412,9 +29817,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplateCreateInfo( DescriptorUpdateTemplateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DescriptorUpdateTemplateCreateInfo( VkDescriptorUpdateTemplateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DescriptorUpdateTemplateCreateInfo( *reinterpret_cast<DescriptorUpdateTemplateCreateInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     DescriptorUpdateTemplateCreateInfo( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry> const & descriptorUpdateEntries_, VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType templateType_ = VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType::eDescriptorSet, VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout_ = {}, VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics, VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout_ = {}, uint32_t set_ = {} )
@@ -30423,18 +29827,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & operator=( DescriptorUpdateTemplateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DescriptorUpdateTemplateCreateInfo & operator=( VkDescriptorUpdateTemplateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo const *>( &rhs );
       return *this;
     }
 
-    DescriptorUpdateTemplateCreateInfo & operator=( DescriptorUpdateTemplateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DescriptorUpdateTemplateCreateInfo ) );
-      return *this;
-    }
-
     DescriptorUpdateTemplateCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -30536,7 +29936,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorUpdateTemplateCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorUpdateTemplateCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateFlags flags = {};
     uint32_t descriptorUpdateEntryCount = {};
@@ -30571,9 +29971,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DeviceQueueCreateInfo( DeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DeviceQueueCreateInfo( VkDeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DeviceQueueCreateInfo( *reinterpret_cast<DeviceQueueCreateInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     DeviceQueueCreateInfo( VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags_, uint32_t queueFamilyIndex_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const float> const & queuePriorities_ )
@@ -30582,18 +29981,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo & operator=( DeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DeviceQueueCreateInfo & operator=( VkDeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo const *>( &rhs );
       return *this;
     }
 
-    DeviceQueueCreateInfo & operator=( DeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DeviceQueueCreateInfo ) );
-      return *this;
-    }
-
     DeviceQueueCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -30667,7 +30062,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceQueueCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceQueueCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags = {};
     uint32_t queueFamilyIndex = {};
@@ -30696,23 +30091,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceFeatures( PhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceFeatures( VkPhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceFeatures( *reinterpret_cast<PhysicalDeviceFeatures const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & operator=( PhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceFeatures & operator=( VkPhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceFeatures & operator=( PhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceFeatures ) );
-      return *this;
-    }
-
     PhysicalDeviceFeatures & setRobustBufferAccess( VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess_ ) VULKAN_HPP_NOEXCEPT
     {
       robustBufferAccess = robustBufferAccess_;
@@ -31199,9 +30589,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DeviceCreateInfo( DeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DeviceCreateInfo( VkDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DeviceCreateInfo( *reinterpret_cast<DeviceCreateInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     DeviceCreateInfo( VULKAN_HPP_NAMESPACE::DeviceCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo> const & queueCreateInfos_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char* const > const & pEnabledLayerNames_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char* const > const & pEnabledExtensionNames_ = {}, const VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures* pEnabledFeatures_ = {} )
@@ -31210,18 +30599,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & operator=( DeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DeviceCreateInfo & operator=( VkDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceCreateInfo const *>( &rhs );
       return *this;
     }
 
-    DeviceCreateInfo & operator=( DeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DeviceCreateInfo ) );
-      return *this;
-    }
-
     DeviceCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -31341,7 +30726,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DeviceCreateFlags flags = {};
     uint32_t queueCreateInfoCount = {};
@@ -31375,23 +30760,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DeviceDeviceMemoryReportCreateInfoEXT( DeviceDeviceMemoryReportCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DeviceDeviceMemoryReportCreateInfoEXT( VkDeviceDeviceMemoryReportCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DeviceDeviceMemoryReportCreateInfoEXT( *reinterpret_cast<DeviceDeviceMemoryReportCreateInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DeviceDeviceMemoryReportCreateInfoEXT & operator=( DeviceDeviceMemoryReportCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DeviceDeviceMemoryReportCreateInfoEXT & operator=( VkDeviceDeviceMemoryReportCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT const *>( &rhs );
       return *this;
     }
 
-    DeviceDeviceMemoryReportCreateInfoEXT & operator=( DeviceDeviceMemoryReportCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DeviceDeviceMemoryReportCreateInfoEXT ) );
-      return *this;
-    }
-
     DeviceDeviceMemoryReportCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -31449,7 +30829,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceDeviceMemoryReportCreateInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceDeviceMemoryReportCreateInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT flags = {};
     PFN_vkDeviceMemoryReportCallbackEXT pfnUserCallback = {};
@@ -31478,23 +30858,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DeviceDiagnosticsConfigCreateInfoNV( DeviceDiagnosticsConfigCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DeviceDiagnosticsConfigCreateInfoNV( VkDeviceDiagnosticsConfigCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DeviceDiagnosticsConfigCreateInfoNV( *reinterpret_cast<DeviceDiagnosticsConfigCreateInfoNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DeviceDiagnosticsConfigCreateInfoNV & operator=( DeviceDiagnosticsConfigCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DeviceDiagnosticsConfigCreateInfoNV & operator=( VkDeviceDiagnosticsConfigCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV const *>( &rhs );
       return *this;
     }
 
-    DeviceDiagnosticsConfigCreateInfoNV & operator=( DeviceDiagnosticsConfigCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DeviceDiagnosticsConfigCreateInfoNV ) );
-      return *this;
-    }
-
     DeviceDiagnosticsConfigCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -31538,7 +30913,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceDiagnosticsConfigCreateInfoNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceDiagnosticsConfigCreateInfoNV;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigFlagsNV flags = {};
 
@@ -31565,23 +30940,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DeviceEventInfoEXT( DeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DeviceEventInfoEXT( VkDeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DeviceEventInfoEXT( *reinterpret_cast<DeviceEventInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DeviceEventInfoEXT & operator=( DeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DeviceEventInfoEXT & operator=( VkDeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT const *>( &rhs );
       return *this;
     }
 
-    DeviceEventInfoEXT & operator=( DeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DeviceEventInfoEXT ) );
-      return *this;
-    }
-
     DeviceEventInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -31625,7 +30995,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceEventInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceEventInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT deviceEvent = VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT::eDisplayHotplug;
 
@@ -31652,23 +31022,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DeviceGroupBindSparseInfo( DeviceGroupBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DeviceGroupBindSparseInfo( VkDeviceGroupBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DeviceGroupBindSparseInfo( *reinterpret_cast<DeviceGroupBindSparseInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DeviceGroupBindSparseInfo & operator=( DeviceGroupBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DeviceGroupBindSparseInfo & operator=( VkDeviceGroupBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo const *>( &rhs );
       return *this;
     }
 
-    DeviceGroupBindSparseInfo & operator=( DeviceGroupBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DeviceGroupBindSparseInfo ) );
-      return *this;
-    }
-
     DeviceGroupBindSparseInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -31719,7 +31084,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupBindSparseInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupBindSparseInfo;
     const void* pNext = {};
     uint32_t resourceDeviceIndex = {};
     uint32_t memoryDeviceIndex = {};
@@ -31748,23 +31113,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DeviceGroupCommandBufferBeginInfo( DeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DeviceGroupCommandBufferBeginInfo( VkDeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DeviceGroupCommandBufferBeginInfo( *reinterpret_cast<DeviceGroupCommandBufferBeginInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DeviceGroupCommandBufferBeginInfo & operator=( DeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DeviceGroupCommandBufferBeginInfo & operator=( VkDeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo const *>( &rhs );
       return *this;
     }
 
-    DeviceGroupCommandBufferBeginInfo & operator=( DeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DeviceGroupCommandBufferBeginInfo ) );
-      return *this;
-    }
-
     DeviceGroupCommandBufferBeginInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -31808,7 +31168,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupCommandBufferBeginInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupCommandBufferBeginInfo;
     const void* pNext = {};
     uint32_t deviceMask = {};
 
@@ -31936,23 +31296,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PerformanceConfigurationAcquireInfoINTEL( PerformanceConfigurationAcquireInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PerformanceConfigurationAcquireInfoINTEL( VkPerformanceConfigurationAcquireInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PerformanceConfigurationAcquireInfoINTEL( *reinterpret_cast<PerformanceConfigurationAcquireInfoINTEL const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PerformanceConfigurationAcquireInfoINTEL & operator=( PerformanceConfigurationAcquireInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PerformanceConfigurationAcquireInfoINTEL & operator=( VkPerformanceConfigurationAcquireInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL const *>( &rhs );
       return *this;
     }
 
-    PerformanceConfigurationAcquireInfoINTEL & operator=( PerformanceConfigurationAcquireInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PerformanceConfigurationAcquireInfoINTEL ) );
-      return *this;
-    }
-
     PerformanceConfigurationAcquireInfoINTEL & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -31996,7 +31351,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceConfigurationAcquireInfoINTEL;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceConfigurationAcquireInfoINTEL;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PerformanceConfigurationTypeINTEL type = VULKAN_HPP_NAMESPACE::PerformanceConfigurationTypeINTEL::eCommandQueueMetricsDiscoveryActivated;
 
@@ -32217,9 +31572,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo( RenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     RenderPassBeginInfo( VkRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : RenderPassBeginInfo( *reinterpret_cast<RenderPassBeginInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     RenderPassBeginInfo( VULKAN_HPP_NAMESPACE::RenderPass renderPass_, VULKAN_HPP_NAMESPACE::Framebuffer framebuffer_, VULKAN_HPP_NAMESPACE::Rect2D renderArea_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ClearValue> const & clearValues_ )
@@ -32228,18 +31582,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & operator=( RenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     RenderPassBeginInfo & operator=( VkRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassBeginInfo const *>( &rhs );
       return *this;
     }
 
-    RenderPassBeginInfo & operator=( RenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( RenderPassBeginInfo ) );
-      return *this;
-    }
-
     RenderPassBeginInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -32320,7 +31670,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassBeginInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassBeginInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::RenderPass renderPass = {};
     VULKAN_HPP_NAMESPACE::Framebuffer framebuffer = {};
@@ -32351,23 +31701,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SubpassBeginInfo( SubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SubpassBeginInfo( VkSubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SubpassBeginInfo( *reinterpret_cast<SubpassBeginInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SubpassBeginInfo & operator=( SubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SubpassBeginInfo & operator=( VkSubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassBeginInfo const *>( &rhs );
       return *this;
     }
 
-    SubpassBeginInfo & operator=( SubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SubpassBeginInfo ) );
-      return *this;
-    }
-
     SubpassBeginInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -32411,7 +31756,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubpassBeginInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubpassBeginInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::SubpassContents contents = VULKAN_HPP_NAMESPACE::SubpassContents::eInline;
 
@@ -32438,23 +31783,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 ImageBlit( ImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImageBlit( VkImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImageBlit( *reinterpret_cast<ImageBlit const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImageBlit & operator=( ImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImageBlit & operator=( VkImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageBlit const *>( &rhs );
       return *this;
     }
 
-    ImageBlit & operator=( ImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImageBlit ) );
-      return *this;
-    }
-
     ImageBlit & setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT
     {
       srcSubresource = srcSubresource_;
@@ -32532,23 +31872,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImageSubresourceRange( ImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImageSubresourceRange( VkImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImageSubresourceRange( *reinterpret_cast<ImageSubresourceRange const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & operator=( ImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImageSubresourceRange & operator=( VkImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageSubresourceRange const *>( &rhs );
       return *this;
     }
 
-    ImageSubresourceRange & operator=( ImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImageSubresourceRange ) );
-      return *this;
-    }
-
     ImageSubresourceRange & setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT
     {
       aspectMask = aspectMask_;
@@ -32634,23 +31969,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImageCopy( ImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImageCopy( VkImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImageCopy( *reinterpret_cast<ImageCopy const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImageCopy & operator=( ImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImageCopy & operator=( VkImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageCopy const *>( &rhs );
       return *this;
     }
 
-    ImageCopy & operator=( ImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImageCopy ) );
-      return *this;
-    }
-
     ImageCopy & setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT
     {
       srcSubresource = srcSubresource_;
@@ -32737,23 +32067,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SubpassEndInfo( SubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SubpassEndInfo( VkSubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SubpassEndInfo( *reinterpret_cast<SubpassEndInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SubpassEndInfo & operator=( SubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SubpassEndInfo & operator=( VkSubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassEndInfo const *>( &rhs );
       return *this;
     }
 
-    SubpassEndInfo & operator=( SubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SubpassEndInfo ) );
-      return *this;
-    }
-
     SubpassEndInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -32790,7 +32115,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubpassEndInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubpassEndInfo;
     const void* pNext = {};
 
   };
@@ -32910,23 +32235,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR IndirectCommandsStreamNV( IndirectCommandsStreamNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     IndirectCommandsStreamNV( VkIndirectCommandsStreamNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : IndirectCommandsStreamNV( *reinterpret_cast<IndirectCommandsStreamNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 IndirectCommandsStreamNV & operator=( IndirectCommandsStreamNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     IndirectCommandsStreamNV & operator=( VkIndirectCommandsStreamNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV const *>( &rhs );
       return *this;
     }
 
-    IndirectCommandsStreamNV & operator=( IndirectCommandsStreamNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( IndirectCommandsStreamNV ) );
-      return *this;
-    }
-
     IndirectCommandsStreamNV & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
     {
       buffer = buffer_;
@@ -32989,9 +32309,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR GeneratedCommandsInfoNV( GeneratedCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     GeneratedCommandsInfoNV( VkGeneratedCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : GeneratedCommandsInfoNV( *reinterpret_cast<GeneratedCommandsInfoNV const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     GeneratedCommandsInfoNV( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_, VULKAN_HPP_NAMESPACE::Pipeline pipeline_, VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV> const & streams_, uint32_t sequencesCount_ = {}, VULKAN_HPP_NAMESPACE::Buffer preprocessBuffer_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize preprocessOffset_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize preprocessSize_ = {}, VULKAN_HPP_NAMESPACE::Buffer sequencesCountBuffer_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize sequencesCountOffset_ = {}, VULKAN_HPP_NAMESPACE::Buffer sequencesIndexBuffer_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize sequencesIndexOffset_ = {} )
@@ -33000,18 +32319,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & operator=( GeneratedCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     GeneratedCommandsInfoNV & operator=( VkGeneratedCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV const *>( &rhs );
       return *this;
     }
 
-    GeneratedCommandsInfoNV & operator=( GeneratedCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( GeneratedCommandsInfoNV ) );
-      return *this;
-    }
-
     GeneratedCommandsInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -33148,7 +32463,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGeneratedCommandsInfoNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGeneratedCommandsInfoNV;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics;
     VULKAN_HPP_NAMESPACE::Pipeline pipeline = {};
@@ -33187,23 +32502,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR MemoryBarrier( MemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     MemoryBarrier( VkMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : MemoryBarrier( *reinterpret_cast<MemoryBarrier const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 MemoryBarrier & operator=( MemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     MemoryBarrier & operator=( VkMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryBarrier const *>( &rhs );
       return *this;
     }
 
-    MemoryBarrier & operator=( MemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( MemoryBarrier ) );
-      return *this;
-    }
-
     MemoryBarrier & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -33254,7 +32564,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryBarrier;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryBarrier;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask = {};
     VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask = {};
@@ -33282,23 +32592,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImageMemoryBarrier( ImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImageMemoryBarrier( VkImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImageMemoryBarrier( *reinterpret_cast<ImageMemoryBarrier const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & operator=( ImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImageMemoryBarrier & operator=( VkImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageMemoryBarrier const *>( &rhs );
       return *this;
     }
 
-    ImageMemoryBarrier & operator=( ImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImageMemoryBarrier ) );
-      return *this;
-    }
-
     ImageMemoryBarrier & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -33391,7 +32696,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageMemoryBarrier;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageMemoryBarrier;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask = {};
     VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask = {};
@@ -33525,9 +32830,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR WriteDescriptorSet( WriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     WriteDescriptorSet( VkWriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : WriteDescriptorSet( *reinterpret_cast<WriteDescriptorSet const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     WriteDescriptorSet( VULKAN_HPP_NAMESPACE::DescriptorSet dstSet_, uint32_t dstBinding_, uint32_t dstArrayElement_, VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorImageInfo> const & imageInfo_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo> const & bufferInfo_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferView> const & texelBufferView_ = {} )
@@ -33545,18 +32849,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & operator=( WriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     WriteDescriptorSet & operator=( VkWriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::WriteDescriptorSet const *>( &rhs );
       return *this;
     }
 
-    WriteDescriptorSet & operator=( WriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( WriteDescriptorSet ) );
-      return *this;
-    }
-
     WriteDescriptorSet & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -33676,7 +32976,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWriteDescriptorSet;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWriteDescriptorSet;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DescriptorSet dstSet = {};
     uint32_t dstBinding = {};
@@ -33910,23 +33210,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImageResolve( ImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImageResolve( VkImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImageResolve( *reinterpret_cast<ImageResolve const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImageResolve & operator=( ImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImageResolve & operator=( VkImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageResolve const *>( &rhs );
       return *this;
     }
 
-    ImageResolve & operator=( ImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImageResolve ) );
-      return *this;
-    }
-
     ImageResolve & setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT
     {
       srcSubresource = srcSubresource_;
@@ -34013,23 +33308,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImageResolve2KHR( ImageResolve2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImageResolve2KHR( VkImageResolve2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImageResolve2KHR( *reinterpret_cast<ImageResolve2KHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImageResolve2KHR & operator=( ImageResolve2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImageResolve2KHR & operator=( VkImageResolve2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageResolve2KHR const *>( &rhs );
       return *this;
     }
 
-    ImageResolve2KHR & operator=( ImageResolve2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImageResolve2KHR ) );
-      return *this;
-    }
-
     ImageResolve2KHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -34101,7 +33391,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageResolve2KHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageResolve2KHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {};
     VULKAN_HPP_NAMESPACE::Offset3D srcOffset = {};
@@ -34132,9 +33422,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ResolveImageInfo2KHR( ResolveImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ResolveImageInfo2KHR( VkResolveImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ResolveImageInfo2KHR( *reinterpret_cast<ResolveImageInfo2KHR const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     ResolveImageInfo2KHR( VULKAN_HPP_NAMESPACE::Image srcImage_, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_, VULKAN_HPP_NAMESPACE::Image dstImage_, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageResolve2KHR> const & regions_ )
@@ -34143,18 +33432,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2KHR & operator=( ResolveImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ResolveImageInfo2KHR & operator=( VkResolveImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ResolveImageInfo2KHR const *>( &rhs );
       return *this;
     }
 
-    ResolveImageInfo2KHR & operator=( ResolveImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ResolveImageInfo2KHR ) );
-      return *this;
-    }
-
     ResolveImageInfo2KHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -34242,7 +33527,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eResolveImageInfo2KHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eResolveImageInfo2KHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Image srcImage = {};
     VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
@@ -34274,23 +33559,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PerformanceMarkerInfoINTEL( PerformanceMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PerformanceMarkerInfoINTEL( VkPerformanceMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PerformanceMarkerInfoINTEL( *reinterpret_cast<PerformanceMarkerInfoINTEL const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PerformanceMarkerInfoINTEL & operator=( PerformanceMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PerformanceMarkerInfoINTEL & operator=( VkPerformanceMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL const *>( &rhs );
       return *this;
     }
 
-    PerformanceMarkerInfoINTEL & operator=( PerformanceMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PerformanceMarkerInfoINTEL ) );
-      return *this;
-    }
-
     PerformanceMarkerInfoINTEL & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -34334,7 +33614,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceMarkerInfoINTEL;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceMarkerInfoINTEL;
     const void* pNext = {};
     uint64_t marker = {};
 
@@ -34361,23 +33641,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PerformanceOverrideInfoINTEL( PerformanceOverrideInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PerformanceOverrideInfoINTEL( VkPerformanceOverrideInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PerformanceOverrideInfoINTEL( *reinterpret_cast<PerformanceOverrideInfoINTEL const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PerformanceOverrideInfoINTEL & operator=( PerformanceOverrideInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PerformanceOverrideInfoINTEL & operator=( VkPerformanceOverrideInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL const *>( &rhs );
       return *this;
     }
 
-    PerformanceOverrideInfoINTEL & operator=( PerformanceOverrideInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PerformanceOverrideInfoINTEL ) );
-      return *this;
-    }
-
     PerformanceOverrideInfoINTEL & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -34435,7 +33710,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceOverrideInfoINTEL;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceOverrideInfoINTEL;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PerformanceOverrideTypeINTEL type = VULKAN_HPP_NAMESPACE::PerformanceOverrideTypeINTEL::eNullHardware;
     VULKAN_HPP_NAMESPACE::Bool32 enable = {};
@@ -34464,23 +33739,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PerformanceStreamMarkerInfoINTEL( PerformanceStreamMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PerformanceStreamMarkerInfoINTEL( VkPerformanceStreamMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PerformanceStreamMarkerInfoINTEL( *reinterpret_cast<PerformanceStreamMarkerInfoINTEL const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PerformanceStreamMarkerInfoINTEL & operator=( PerformanceStreamMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PerformanceStreamMarkerInfoINTEL & operator=( VkPerformanceStreamMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL const *>( &rhs );
       return *this;
     }
 
-    PerformanceStreamMarkerInfoINTEL & operator=( PerformanceStreamMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PerformanceStreamMarkerInfoINTEL ) );
-      return *this;
-    }
-
     PerformanceStreamMarkerInfoINTEL & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -34524,7 +33794,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceStreamMarkerInfoINTEL;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceStreamMarkerInfoINTEL;
     const void* pNext = {};
     uint32_t marker = {};
 
@@ -34550,23 +33820,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR Viewport( Viewport const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     Viewport( VkViewport const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : Viewport( *reinterpret_cast<Viewport const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 Viewport & operator=( Viewport const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     Viewport & operator=( VkViewport const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Viewport const *>( &rhs );
       return *this;
     }
 
-    Viewport & operator=( Viewport const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( Viewport ) );
-      return *this;
-    }
-
     Viewport & setX( float x_ ) VULKAN_HPP_NOEXCEPT
     {
       x = x_;
@@ -34660,9 +33925,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ShadingRatePaletteNV( ShadingRatePaletteNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ShadingRatePaletteNV( VkShadingRatePaletteNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ShadingRatePaletteNV( *reinterpret_cast<ShadingRatePaletteNV const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     ShadingRatePaletteNV( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV> const & shadingRatePaletteEntries_ )
@@ -34671,18 +33935,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ShadingRatePaletteNV & operator=( ShadingRatePaletteNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ShadingRatePaletteNV & operator=( VkShadingRatePaletteNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV const *>( &rhs );
       return *this;
     }
 
-    ShadingRatePaletteNV & operator=( ShadingRatePaletteNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ShadingRatePaletteNV ) );
-      return *this;
-    }
-
     ShadingRatePaletteNV & setShadingRatePaletteEntryCount( uint32_t shadingRatePaletteEntryCount_ ) VULKAN_HPP_NOEXCEPT
     {
       shadingRatePaletteEntryCount = shadingRatePaletteEntryCount_;
@@ -34753,23 +34013,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ViewportWScalingNV( ViewportWScalingNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ViewportWScalingNV( VkViewportWScalingNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ViewportWScalingNV( *reinterpret_cast<ViewportWScalingNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ViewportWScalingNV & operator=( ViewportWScalingNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ViewportWScalingNV & operator=( VkViewportWScalingNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ViewportWScalingNV const *>( &rhs );
       return *this;
     }
 
-    ViewportWScalingNV & operator=( ViewportWScalingNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ViewportWScalingNV ) );
-      return *this;
-    }
-
     ViewportWScalingNV & setXcoeff( float xcoeff_ ) VULKAN_HPP_NOEXCEPT
     {
       xcoeff = xcoeff_;
@@ -34831,23 +34086,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR StridedDeviceAddressRegionKHR( StridedDeviceAddressRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     StridedDeviceAddressRegionKHR( VkStridedDeviceAddressRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : StridedDeviceAddressRegionKHR( *reinterpret_cast<StridedDeviceAddressRegionKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 StridedDeviceAddressRegionKHR & operator=( StridedDeviceAddressRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     StridedDeviceAddressRegionKHR & operator=( VkStridedDeviceAddressRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR const *>( &rhs );
       return *this;
     }
 
-    StridedDeviceAddressRegionKHR & operator=( StridedDeviceAddressRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( StridedDeviceAddressRegionKHR ) );
-      return *this;
-    }
-
     StridedDeviceAddressRegionKHR & setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT
     {
       deviceAddress = deviceAddress_;
@@ -35809,23 +35059,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR MemoryAllocateInfo( MemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     MemoryAllocateInfo( VkMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : MemoryAllocateInfo( *reinterpret_cast<MemoryAllocateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 MemoryAllocateInfo & operator=( MemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     MemoryAllocateInfo & operator=( VkMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryAllocateInfo const *>( &rhs );
       return *this;
     }
 
-    MemoryAllocateInfo & operator=( MemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( MemoryAllocateInfo ) );
-      return *this;
-    }
-
     MemoryAllocateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -35876,7 +35121,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryAllocateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryAllocateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DeviceSize allocationSize = {};
     uint32_t memoryTypeIndex = {};
@@ -36098,23 +35343,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR EventCreateInfo( EventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     EventCreateInfo( VkEventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : EventCreateInfo( *reinterpret_cast<EventCreateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 EventCreateInfo & operator=( EventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     EventCreateInfo & operator=( VkEventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::EventCreateInfo const *>( &rhs );
       return *this;
     }
 
-    EventCreateInfo & operator=( EventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( EventCreateInfo ) );
-      return *this;
-    }
-
     EventCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -36158,7 +35398,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eEventCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eEventCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::EventCreateFlags flags = {};
 
@@ -36185,23 +35425,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR FenceCreateInfo( FenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     FenceCreateInfo( VkFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : FenceCreateInfo( *reinterpret_cast<FenceCreateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 FenceCreateInfo & operator=( FenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     FenceCreateInfo & operator=( VkFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FenceCreateInfo const *>( &rhs );
       return *this;
     }
 
-    FenceCreateInfo & operator=( FenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( FenceCreateInfo ) );
-      return *this;
-    }
-
     FenceCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -36245,7 +35480,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFenceCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFenceCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::FenceCreateFlags flags = {};
 
@@ -36272,9 +35507,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR FramebufferCreateInfo( FramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     FramebufferCreateInfo( VkFramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : FramebufferCreateInfo( *reinterpret_cast<FramebufferCreateInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     FramebufferCreateInfo( VULKAN_HPP_NAMESPACE::FramebufferCreateFlags flags_, VULKAN_HPP_NAMESPACE::RenderPass renderPass_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageView> const & attachments_, uint32_t width_ = {}, uint32_t height_ = {}, uint32_t layers_ = {} )
@@ -36283,18 +35517,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & operator=( FramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     FramebufferCreateInfo & operator=( VkFramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FramebufferCreateInfo const *>( &rhs );
       return *this;
     }
 
-    FramebufferCreateInfo & operator=( FramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( FramebufferCreateInfo ) );
-      return *this;
-    }
-
     FramebufferCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -36389,7 +35619,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFramebufferCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFramebufferCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::FramebufferCreateFlags flags = {};
     VULKAN_HPP_NAMESPACE::RenderPass renderPass = {};
@@ -36421,23 +35651,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR VertexInputBindingDescription( VertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     VertexInputBindingDescription( VkVertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : VertexInputBindingDescription( *reinterpret_cast<VertexInputBindingDescription const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription & operator=( VertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     VertexInputBindingDescription & operator=( VkVertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VertexInputBindingDescription const *>( &rhs );
       return *this;
     }
 
-    VertexInputBindingDescription & operator=( VertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( VertexInputBindingDescription ) );
-      return *this;
-    }
-
     VertexInputBindingDescription & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT
     {
       binding = binding_;
@@ -36507,23 +35732,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR VertexInputAttributeDescription( VertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     VertexInputAttributeDescription( VkVertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : VertexInputAttributeDescription( *reinterpret_cast<VertexInputAttributeDescription const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription & operator=( VertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     VertexInputAttributeDescription & operator=( VkVertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription const *>( &rhs );
       return *this;
     }
 
-    VertexInputAttributeDescription & operator=( VertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( VertexInputAttributeDescription ) );
-      return *this;
-    }
-
     VertexInputAttributeDescription & setLocation( uint32_t location_ ) VULKAN_HPP_NOEXCEPT
     {
       location = location_;
@@ -36602,9 +35822,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineVertexInputStateCreateInfo( PipelineVertexInputStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineVertexInputStateCreateInfo( VkPipelineVertexInputStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineVertexInputStateCreateInfo( *reinterpret_cast<PipelineVertexInputStateCreateInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     PipelineVertexInputStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription> const & vertexBindingDescriptions_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription> const & vertexAttributeDescriptions_ = {} )
@@ -36613,18 +35832,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo & operator=( PipelineVertexInputStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineVertexInputStateCreateInfo & operator=( VkPipelineVertexInputStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo const *>( &rhs );
       return *this;
     }
 
-    PipelineVertexInputStateCreateInfo & operator=( PipelineVertexInputStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineVertexInputStateCreateInfo ) );
-      return *this;
-    }
-
     PipelineVertexInputStateCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -36714,7 +35929,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineVertexInputStateCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineVertexInputStateCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateFlags flags = {};
     uint32_t vertexBindingDescriptionCount = {};
@@ -36745,23 +35960,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineInputAssemblyStateCreateInfo( PipelineInputAssemblyStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineInputAssemblyStateCreateInfo( VkPipelineInputAssemblyStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineInputAssemblyStateCreateInfo( *reinterpret_cast<PipelineInputAssemblyStateCreateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineInputAssemblyStateCreateInfo & operator=( PipelineInputAssemblyStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineInputAssemblyStateCreateInfo & operator=( VkPipelineInputAssemblyStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo const *>( &rhs );
       return *this;
     }
 
-    PipelineInputAssemblyStateCreateInfo & operator=( PipelineInputAssemblyStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineInputAssemblyStateCreateInfo ) );
-      return *this;
-    }
-
     PipelineInputAssemblyStateCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -36819,7 +36029,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineInputAssemblyStateCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineInputAssemblyStateCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateFlags flags = {};
     VULKAN_HPP_NAMESPACE::PrimitiveTopology topology = VULKAN_HPP_NAMESPACE::PrimitiveTopology::ePointList;
@@ -36848,23 +36058,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineTessellationStateCreateInfo( PipelineTessellationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineTessellationStateCreateInfo( VkPipelineTessellationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineTessellationStateCreateInfo( *reinterpret_cast<PipelineTessellationStateCreateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineTessellationStateCreateInfo & operator=( PipelineTessellationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineTessellationStateCreateInfo & operator=( VkPipelineTessellationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo const *>( &rhs );
       return *this;
     }
 
-    PipelineTessellationStateCreateInfo & operator=( PipelineTessellationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineTessellationStateCreateInfo ) );
-      return *this;
-    }
-
     PipelineTessellationStateCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -36915,7 +36120,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineTessellationStateCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineTessellationStateCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateFlags flags = {};
     uint32_t patchControlPoints = {};
@@ -36943,9 +36148,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineViewportStateCreateInfo( PipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineViewportStateCreateInfo( VkPipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineViewportStateCreateInfo( *reinterpret_cast<PipelineViewportStateCreateInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     PipelineViewportStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Viewport> const & viewports_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & scissors_ = {} )
@@ -36954,18 +36158,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & operator=( PipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineViewportStateCreateInfo & operator=( VkPipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo const *>( &rhs );
       return *this;
     }
 
-    PipelineViewportStateCreateInfo & operator=( PipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineViewportStateCreateInfo ) );
-      return *this;
-    }
-
     PipelineViewportStateCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -37055,7 +36255,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportStateCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportStateCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateFlags flags = {};
     uint32_t viewportCount = {};
@@ -37086,23 +36286,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineRasterizationStateCreateInfo( PipelineRasterizationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineRasterizationStateCreateInfo( VkPipelineRasterizationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineRasterizationStateCreateInfo( *reinterpret_cast<PipelineRasterizationStateCreateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & operator=( PipelineRasterizationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineRasterizationStateCreateInfo & operator=( VkPipelineRasterizationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo const *>( &rhs );
       return *this;
     }
 
-    PipelineRasterizationStateCreateInfo & operator=( PipelineRasterizationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineRasterizationStateCreateInfo ) );
-      return *this;
-    }
-
     PipelineRasterizationStateCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -37216,7 +36411,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationStateCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationStateCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateFlags flags = {};
     VULKAN_HPP_NAMESPACE::Bool32 depthClampEnable = {};
@@ -37253,23 +36448,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineMultisampleStateCreateInfo( PipelineMultisampleStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineMultisampleStateCreateInfo( VkPipelineMultisampleStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineMultisampleStateCreateInfo( *reinterpret_cast<PipelineMultisampleStateCreateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & operator=( PipelineMultisampleStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineMultisampleStateCreateInfo & operator=( VkPipelineMultisampleStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo const *>( &rhs );
       return *this;
     }
 
-    PipelineMultisampleStateCreateInfo & operator=( PipelineMultisampleStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineMultisampleStateCreateInfo ) );
-      return *this;
-    }
-
     PipelineMultisampleStateCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -37355,7 +36545,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineMultisampleStateCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineMultisampleStateCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateFlags flags = {};
     VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
@@ -37387,23 +36577,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR StencilOpState( StencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     StencilOpState( VkStencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : StencilOpState( *reinterpret_cast<StencilOpState const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 StencilOpState & operator=( StencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     StencilOpState & operator=( VkStencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::StencilOpState const *>( &rhs );
       return *this;
     }
 
-    StencilOpState & operator=( StencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( StencilOpState ) );
-      return *this;
-    }
-
     StencilOpState & setFailOp( VULKAN_HPP_NAMESPACE::StencilOp failOp_ ) VULKAN_HPP_NOEXCEPT
     {
       failOp = failOp_;
@@ -37506,23 +36691,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineDepthStencilStateCreateInfo( PipelineDepthStencilStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineDepthStencilStateCreateInfo( VkPipelineDepthStencilStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineDepthStencilStateCreateInfo( *reinterpret_cast<PipelineDepthStencilStateCreateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & operator=( PipelineDepthStencilStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineDepthStencilStateCreateInfo & operator=( VkPipelineDepthStencilStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo const *>( &rhs );
       return *this;
     }
 
-    PipelineDepthStencilStateCreateInfo & operator=( PipelineDepthStencilStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineDepthStencilStateCreateInfo ) );
-      return *this;
-    }
-
     PipelineDepthStencilStateCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -37629,7 +36809,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineDepthStencilStateCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineDepthStencilStateCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateFlags flags = {};
     VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable = {};
@@ -37664,23 +36844,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineColorBlendAttachmentState( PipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineColorBlendAttachmentState( VkPipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineColorBlendAttachmentState( *reinterpret_cast<PipelineColorBlendAttachmentState const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & operator=( PipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineColorBlendAttachmentState & operator=( VkPipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState const *>( &rhs );
       return *this;
     }
 
-    PipelineColorBlendAttachmentState & operator=( PipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineColorBlendAttachmentState ) );
-      return *this;
-    }
-
     PipelineColorBlendAttachmentState & setBlendEnable( VULKAN_HPP_NAMESPACE::Bool32 blendEnable_ ) VULKAN_HPP_NOEXCEPT
     {
       blendEnable = blendEnable_;
@@ -37791,9 +36966,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo( PipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineColorBlendStateCreateInfo( VkPipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineColorBlendStateCreateInfo( *reinterpret_cast<PipelineColorBlendStateCreateInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     PipelineColorBlendStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateFlags flags_, VULKAN_HPP_NAMESPACE::Bool32 logicOpEnable_, VULKAN_HPP_NAMESPACE::LogicOp logicOp_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState> const & attachments_, std::array<float,4> const& blendConstants_ = {} )
@@ -37802,18 +36976,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & operator=( PipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineColorBlendStateCreateInfo & operator=( VkPipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo const *>( &rhs );
       return *this;
     }
 
-    PipelineColorBlendStateCreateInfo & operator=( PipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineColorBlendStateCreateInfo ) );
-      return *this;
-    }
-
     PipelineColorBlendStateCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -37901,7 +37071,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineColorBlendStateCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineColorBlendStateCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateFlags flags = {};
     VULKAN_HPP_NAMESPACE::Bool32 logicOpEnable = {};
@@ -37933,9 +37103,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineDynamicStateCreateInfo( PipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineDynamicStateCreateInfo( VkPipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineDynamicStateCreateInfo( *reinterpret_cast<PipelineDynamicStateCreateInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     PipelineDynamicStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DynamicState> const & dynamicStates_ )
@@ -37944,18 +37113,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineDynamicStateCreateInfo & operator=( PipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineDynamicStateCreateInfo & operator=( VkPipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo const *>( &rhs );
       return *this;
     }
 
-    PipelineDynamicStateCreateInfo & operator=( PipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineDynamicStateCreateInfo ) );
-      return *this;
-    }
-
     PipelineDynamicStateCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -38022,7 +37187,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineDynamicStateCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineDynamicStateCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateFlags flags = {};
     uint32_t dynamicStateCount = {};
@@ -38051,9 +37216,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo( GraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     GraphicsPipelineCreateInfo( VkGraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : GraphicsPipelineCreateInfo( *reinterpret_cast<GraphicsPipelineCreateInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     GraphicsPipelineCreateInfo( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const & stages_, const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo* pVertexInputState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo* pInputAssemblyState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo* pTessellationState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo* pViewportState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo* pRasterizationState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo* pMultisampleState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo* pDepthStencilState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo* pColorBlendState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo* pDynamicState_ = {}, VULKAN_HPP_NAMESPACE::PipelineLayout layout_ = {}, VULKAN_HPP_NAMESPACE::RenderPass renderPass_ = {}, uint32_t subpass_ = {}, VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ = {}, int32_t basePipelineIndex_ = {} )
@@ -38062,18 +37226,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & operator=( GraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     GraphicsPipelineCreateInfo & operator=( VkGraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo const *>( &rhs );
       return *this;
     }
 
-    GraphicsPipelineCreateInfo & operator=( GraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( GraphicsPipelineCreateInfo ) );
-      return *this;
-    }
-
     GraphicsPipelineCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -38238,7 +37398,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGraphicsPipelineCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGraphicsPipelineCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags = {};
     uint32_t stageCount = {};
@@ -38281,9 +37441,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImageCreateInfo( ImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImageCreateInfo( VkImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImageCreateInfo( *reinterpret_cast<ImageCreateInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     ImageCreateInfo( VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_, VULKAN_HPP_NAMESPACE::ImageType imageType_, VULKAN_HPP_NAMESPACE::Format format_, VULKAN_HPP_NAMESPACE::Extent3D extent_, uint32_t mipLevels_, uint32_t arrayLayers_, VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_, VULKAN_HPP_NAMESPACE::ImageTiling tiling_, VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_, VULKAN_HPP_NAMESPACE::SharingMode sharingMode_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_, VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined )
@@ -38292,18 +37451,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & operator=( ImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImageCreateInfo & operator=( VkImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageCreateInfo const *>( &rhs );
       return *this;
     }
 
-    ImageCreateInfo & operator=( ImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImageCreateInfo ) );
-      return *this;
-    }
-
     ImageCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -38440,7 +37595,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ImageCreateFlags flags = {};
     VULKAN_HPP_NAMESPACE::ImageType imageType = VULKAN_HPP_NAMESPACE::ImageType::e1D;
@@ -38479,23 +37634,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImageViewCreateInfo( ImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImageViewCreateInfo( VkImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImageViewCreateInfo( *reinterpret_cast<ImageViewCreateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & operator=( ImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImageViewCreateInfo & operator=( VkImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewCreateInfo const *>( &rhs );
       return *this;
     }
 
-    ImageViewCreateInfo & operator=( ImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImageViewCreateInfo ) );
-      return *this;
-    }
-
     ImageViewCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -38574,7 +37724,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageViewCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageViewCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ImageViewCreateFlags flags = {};
     VULKAN_HPP_NAMESPACE::Image image = {};
@@ -38606,9 +37756,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutTokenNV( IndirectCommandsLayoutTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     IndirectCommandsLayoutTokenNV( VkIndirectCommandsLayoutTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : IndirectCommandsLayoutTokenNV( *reinterpret_cast<IndirectCommandsLayoutTokenNV const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     IndirectCommandsLayoutTokenNV( VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV tokenType_, uint32_t stream_, uint32_t offset_, uint32_t vertexBindingUnit_, VULKAN_HPP_NAMESPACE::Bool32 vertexDynamicStride_, VULKAN_HPP_NAMESPACE::PipelineLayout pushconstantPipelineLayout_, VULKAN_HPP_NAMESPACE::ShaderStageFlags pushconstantShaderStageFlags_, uint32_t pushconstantOffset_, uint32_t pushconstantSize_, VULKAN_HPP_NAMESPACE::IndirectStateFlagsNV indirectStateFlags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::IndexType> const & indexTypes_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & indexTypeValues_ = {} )
@@ -38626,18 +37775,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & operator=( IndirectCommandsLayoutTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     IndirectCommandsLayoutTokenNV & operator=( VkIndirectCommandsLayoutTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV const *>( &rhs );
       return *this;
     }
 
-    IndirectCommandsLayoutTokenNV & operator=( IndirectCommandsLayoutTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( IndirectCommandsLayoutTokenNV ) );
-      return *this;
-    }
-
     IndirectCommandsLayoutTokenNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -38783,7 +37928,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eIndirectCommandsLayoutTokenNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eIndirectCommandsLayoutTokenNV;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV tokenType = VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV::eShaderGroup;
     uint32_t stream = {};
@@ -38822,9 +37967,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutCreateInfoNV( IndirectCommandsLayoutCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     IndirectCommandsLayoutCreateInfoNV( VkIndirectCommandsLayoutCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : IndirectCommandsLayoutCreateInfoNV( *reinterpret_cast<IndirectCommandsLayoutCreateInfoNV const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     IndirectCommandsLayoutCreateInfoNV( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsNV flags_, VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV> const & tokens_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & streamStrides_ = {} )
@@ -38833,18 +37977,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV & operator=( IndirectCommandsLayoutCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     IndirectCommandsLayoutCreateInfoNV & operator=( VkIndirectCommandsLayoutCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV const *>( &rhs );
       return *this;
     }
 
-    IndirectCommandsLayoutCreateInfoNV & operator=( IndirectCommandsLayoutCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( IndirectCommandsLayoutCreateInfoNV ) );
-      return *this;
-    }
-
     IndirectCommandsLayoutCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -38941,7 +38081,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eIndirectCommandsLayoutCreateInfoNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eIndirectCommandsLayoutCreateInfoNV;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsNV flags = {};
     VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics;
@@ -38973,9 +38113,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineCacheCreateInfo( PipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineCacheCreateInfo( VkPipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineCacheCreateInfo( *reinterpret_cast<PipelineCacheCreateInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     template <typename T>
@@ -38985,18 +38124,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineCacheCreateInfo & operator=( PipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineCacheCreateInfo & operator=( VkPipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo const *>( &rhs );
       return *this;
     }
 
-    PipelineCacheCreateInfo & operator=( PipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineCacheCreateInfo ) );
-      return *this;
-    }
-
     PipelineCacheCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -39064,7 +38199,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineCacheCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineCacheCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PipelineCacheCreateFlags flags = {};
     size_t initialDataSize = {};
@@ -39092,23 +38227,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PushConstantRange( PushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PushConstantRange( VkPushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PushConstantRange( *reinterpret_cast<PushConstantRange const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PushConstantRange & operator=( PushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PushConstantRange & operator=( VkPushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PushConstantRange const *>( &rhs );
       return *this;
     }
 
-    PushConstantRange & operator=( PushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PushConstantRange ) );
-      return *this;
-    }
-
     PushConstantRange & setStageFlags( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ ) VULKAN_HPP_NOEXCEPT
     {
       stageFlags = stageFlags_;
@@ -39179,9 +38309,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineLayoutCreateInfo( PipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineLayoutCreateInfo( VkPipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineLayoutCreateInfo( *reinterpret_cast<PipelineLayoutCreateInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     PipelineLayoutCreateInfo( VULKAN_HPP_NAMESPACE::PipelineLayoutCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayout> const & setLayouts_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PushConstantRange> const & pushConstantRanges_ = {} )
@@ -39190,18 +38319,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & operator=( PipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineLayoutCreateInfo & operator=( VkPipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo const *>( &rhs );
       return *this;
     }
 
-    PipelineLayoutCreateInfo & operator=( PipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineLayoutCreateInfo ) );
-      return *this;
-    }
-
     PipelineLayoutCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -39291,7 +38416,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineLayoutCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineLayoutCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PipelineLayoutCreateFlags flags = {};
     uint32_t setLayoutCount = {};
@@ -39322,23 +38447,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PrivateDataSlotCreateInfoEXT( PrivateDataSlotCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PrivateDataSlotCreateInfoEXT( VkPrivateDataSlotCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PrivateDataSlotCreateInfoEXT( *reinterpret_cast<PrivateDataSlotCreateInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PrivateDataSlotCreateInfoEXT & operator=( PrivateDataSlotCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PrivateDataSlotCreateInfoEXT & operator=( VkPrivateDataSlotCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfoEXT const *>( &rhs );
       return *this;
     }
 
-    PrivateDataSlotCreateInfoEXT & operator=( PrivateDataSlotCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PrivateDataSlotCreateInfoEXT ) );
-      return *this;
-    }
-
     PrivateDataSlotCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -39382,7 +38502,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePrivateDataSlotCreateInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePrivateDataSlotCreateInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateFlagsEXT flags = {};
 
@@ -39503,23 +38623,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR QueryPoolCreateInfo( QueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     QueryPoolCreateInfo( VkQueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : QueryPoolCreateInfo( *reinterpret_cast<QueryPoolCreateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo & operator=( QueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     QueryPoolCreateInfo & operator=( VkQueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo const *>( &rhs );
       return *this;
     }
 
-    QueryPoolCreateInfo & operator=( QueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( QueryPoolCreateInfo ) );
-      return *this;
-    }
-
     QueryPoolCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -39584,7 +38699,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eQueryPoolCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eQueryPoolCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::QueryPoolCreateFlags flags = {};
     VULKAN_HPP_NAMESPACE::QueryType queryType = VULKAN_HPP_NAMESPACE::QueryType::eOcclusion;
@@ -39614,23 +38729,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR RayTracingShaderGroupCreateInfoKHR( RayTracingShaderGroupCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     RayTracingShaderGroupCreateInfoKHR( VkRayTracingShaderGroupCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : RayTracingShaderGroupCreateInfoKHR( *reinterpret_cast<RayTracingShaderGroupCreateInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR & operator=( RayTracingShaderGroupCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     RayTracingShaderGroupCreateInfoKHR & operator=( VkRayTracingShaderGroupCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR const *>( &rhs );
       return *this;
     }
 
-    RayTracingShaderGroupCreateInfoKHR & operator=( RayTracingShaderGroupCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( RayTracingShaderGroupCreateInfoKHR ) );
-      return *this;
-    }
-
     RayTracingShaderGroupCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -39709,7 +38819,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRayTracingShaderGroupCreateInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRayTracingShaderGroupCreateInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type = VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR::eGeneral;
     uint32_t generalShader = {};
@@ -39741,9 +38851,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineLibraryCreateInfoKHR( PipelineLibraryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineLibraryCreateInfoKHR( VkPipelineLibraryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineLibraryCreateInfoKHR( *reinterpret_cast<PipelineLibraryCreateInfoKHR const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     PipelineLibraryCreateInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Pipeline> const & libraries_ )
@@ -39752,18 +38861,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineLibraryCreateInfoKHR & operator=( PipelineLibraryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineLibraryCreateInfoKHR & operator=( VkPipelineLibraryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR const *>( &rhs );
       return *this;
     }
 
-    PipelineLibraryCreateInfoKHR & operator=( PipelineLibraryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineLibraryCreateInfoKHR ) );
-      return *this;
-    }
-
     PipelineLibraryCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -39823,7 +38928,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineLibraryCreateInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineLibraryCreateInfoKHR;
     const void* pNext = {};
     uint32_t libraryCount = {};
     const VULKAN_HPP_NAMESPACE::Pipeline* pLibraries = {};
@@ -39851,23 +38956,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR RayTracingPipelineInterfaceCreateInfoKHR( RayTracingPipelineInterfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     RayTracingPipelineInterfaceCreateInfoKHR( VkRayTracingPipelineInterfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : RayTracingPipelineInterfaceCreateInfoKHR( *reinterpret_cast<RayTracingPipelineInterfaceCreateInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineInterfaceCreateInfoKHR & operator=( RayTracingPipelineInterfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     RayTracingPipelineInterfaceCreateInfoKHR & operator=( VkRayTracingPipelineInterfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR const *>( &rhs );
       return *this;
     }
 
-    RayTracingPipelineInterfaceCreateInfoKHR & operator=( RayTracingPipelineInterfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( RayTracingPipelineInterfaceCreateInfoKHR ) );
-      return *this;
-    }
-
     RayTracingPipelineInterfaceCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -39918,7 +39018,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRayTracingPipelineInterfaceCreateInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRayTracingPipelineInterfaceCreateInfoKHR;
     const void* pNext = {};
     uint32_t maxPipelineRayPayloadSize = {};
     uint32_t maxPipelineRayHitAttributeSize = {};
@@ -39946,9 +39046,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR RayTracingPipelineCreateInfoKHR( RayTracingPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     RayTracingPipelineCreateInfoKHR( VkRayTracingPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : RayTracingPipelineCreateInfoKHR( *reinterpret_cast<RayTracingPipelineCreateInfoKHR const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     RayTracingPipelineCreateInfoKHR( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const & stages_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR> const & groups_ = {}, uint32_t maxPipelineRayRecursionDepth_ = {}, const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR* pLibraryInfo_ = {}, const VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR* pLibraryInterface_ = {}, const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo* pDynamicState_ = {}, VULKAN_HPP_NAMESPACE::PipelineLayout layout_ = {}, VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ = {}, int32_t basePipelineIndex_ = {} )
@@ -39957,18 +39056,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & operator=( RayTracingPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     RayTracingPipelineCreateInfoKHR & operator=( VkRayTracingPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR const *>( &rhs );
       return *this;
     }
 
-    RayTracingPipelineCreateInfoKHR & operator=( RayTracingPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( RayTracingPipelineCreateInfoKHR ) );
-      return *this;
-    }
-
     RayTracingPipelineCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -40107,7 +39202,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRayTracingPipelineCreateInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRayTracingPipelineCreateInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags = {};
     uint32_t stageCount = {};
@@ -40145,23 +39240,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR RayTracingShaderGroupCreateInfoNV( RayTracingShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     RayTracingShaderGroupCreateInfoNV( VkRayTracingShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : RayTracingShaderGroupCreateInfoNV( *reinterpret_cast<RayTracingShaderGroupCreateInfoNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV & operator=( RayTracingShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     RayTracingShaderGroupCreateInfoNV & operator=( VkRayTracingShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV const *>( &rhs );
       return *this;
     }
 
-    RayTracingShaderGroupCreateInfoNV & operator=( RayTracingShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( RayTracingShaderGroupCreateInfoNV ) );
-      return *this;
-    }
-
     RayTracingShaderGroupCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -40233,7 +39323,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRayTracingShaderGroupCreateInfoNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRayTracingShaderGroupCreateInfoNV;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type = VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR::eGeneral;
     uint32_t generalShader = {};
@@ -40264,9 +39354,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR RayTracingPipelineCreateInfoNV( RayTracingPipelineCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     RayTracingPipelineCreateInfoNV( VkRayTracingPipelineCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : RayTracingPipelineCreateInfoNV( *reinterpret_cast<RayTracingPipelineCreateInfoNV const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     RayTracingPipelineCreateInfoNV( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const & stages_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV> const & groups_ = {}, uint32_t maxRecursionDepth_ = {}, VULKAN_HPP_NAMESPACE::PipelineLayout layout_ = {}, VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ = {}, int32_t basePipelineIndex_ = {} )
@@ -40275,18 +39364,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & operator=( RayTracingPipelineCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     RayTracingPipelineCreateInfoNV & operator=( VkRayTracingPipelineCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV const *>( &rhs );
       return *this;
     }
 
-    RayTracingPipelineCreateInfoNV & operator=( RayTracingPipelineCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( RayTracingPipelineCreateInfoNV ) );
-      return *this;
-    }
-
     RayTracingPipelineCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -40404,7 +39489,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRayTracingPipelineCreateInfoNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRayTracingPipelineCreateInfoNV;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags = {};
     uint32_t stageCount = {};
@@ -40438,9 +39523,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SubpassDescription( SubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SubpassDescription( VkSubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SubpassDescription( *reinterpret_cast<SubpassDescription const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     SubpassDescription( VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_, VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference> const & inputAttachments_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference> const & colorAttachments_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference> const & resolveAttachments_ = {}, const VULKAN_HPP_NAMESPACE::AttachmentReference* pDepthStencilAttachment_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & preserveAttachments_ = {} )
@@ -40458,18 +39542,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SubpassDescription & operator=( SubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SubpassDescription & operator=( VkSubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassDescription const *>( &rhs );
       return *this;
     }
 
-    SubpassDescription & operator=( SubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SubpassDescription ) );
-      return *this;
-    }
-
     SubpassDescription & setFlags( VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_ ) VULKAN_HPP_NOEXCEPT
     {
       flags = flags_;
@@ -40631,23 +39711,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SubpassDependency( SubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SubpassDependency( VkSubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SubpassDependency( *reinterpret_cast<SubpassDependency const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SubpassDependency & operator=( SubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SubpassDependency & operator=( VkSubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassDependency const *>( &rhs );
       return *this;
     }
 
-    SubpassDependency & operator=( SubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SubpassDependency ) );
-      return *this;
-    }
-
     SubpassDependency & setSrcSubpass( uint32_t srcSubpass_ ) VULKAN_HPP_NOEXCEPT
     {
       srcSubpass = srcSubpass_;
@@ -40750,9 +39825,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR RenderPassCreateInfo( RenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     RenderPassCreateInfo( VkRenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : RenderPassCreateInfo( *reinterpret_cast<RenderPassCreateInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     RenderPassCreateInfo( VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentDescription> const & attachments_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDescription> const & subpasses_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDependency> const & dependencies_ = {} )
@@ -40761,18 +39835,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & operator=( RenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     RenderPassCreateInfo & operator=( VkRenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassCreateInfo const *>( &rhs );
       return *this;
     }
 
-    RenderPassCreateInfo & operator=( RenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( RenderPassCreateInfo ) );
-      return *this;
-    }
-
     RenderPassCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -40885,7 +39955,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags = {};
     uint32_t attachmentCount = {};
@@ -40918,9 +39988,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SubpassDescription2( SubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SubpassDescription2( VkSubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SubpassDescription2( *reinterpret_cast<SubpassDescription2 const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     SubpassDescription2( VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_, VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_, uint32_t viewMask_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference2> const & inputAttachments_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference2> const & colorAttachments_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference2> const & resolveAttachments_ = {}, const VULKAN_HPP_NAMESPACE::AttachmentReference2* pDepthStencilAttachment_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & preserveAttachments_ = {} )
@@ -40938,18 +40007,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & operator=( SubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SubpassDescription2 & operator=( VkSubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassDescription2 const *>( &rhs );
       return *this;
     }
 
-    SubpassDescription2 & operator=( SubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SubpassDescription2 ) );
-      return *this;
-    }
-
     SubpassDescription2 & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -41099,7 +40164,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubpassDescription2;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubpassDescription2;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags = {};
     VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics;
@@ -41137,23 +40202,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SubpassDependency2( SubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SubpassDependency2( VkSubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SubpassDependency2( *reinterpret_cast<SubpassDependency2 const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & operator=( SubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SubpassDependency2 & operator=( VkSubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassDependency2 const *>( &rhs );
       return *this;
     }
 
-    SubpassDependency2 & operator=( SubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SubpassDependency2 ) );
-      return *this;
-    }
-
     SubpassDependency2 & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -41246,7 +40306,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubpassDependency2;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubpassDependency2;
     const void* pNext = {};
     uint32_t srcSubpass = {};
     uint32_t dstSubpass = {};
@@ -41281,9 +40341,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR RenderPassCreateInfo2( RenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     RenderPassCreateInfo2( VkRenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : RenderPassCreateInfo2( *reinterpret_cast<RenderPassCreateInfo2 const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     RenderPassCreateInfo2( VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentDescription2> const & attachments_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDescription2> const & subpasses_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDependency2> const & dependencies_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & correlatedViewMasks_ = {} )
@@ -41292,18 +40351,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & operator=( RenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     RenderPassCreateInfo2 & operator=( VkRenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 const *>( &rhs );
       return *this;
     }
 
-    RenderPassCreateInfo2 & operator=( RenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( RenderPassCreateInfo2 ) );
-      return *this;
-    }
-
     RenderPassCreateInfo2 & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -41439,7 +40494,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassCreateInfo2;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassCreateInfo2;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags = {};
     uint32_t attachmentCount = {};
@@ -41475,23 +40530,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SamplerCreateInfo( SamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SamplerCreateInfo( VkSamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SamplerCreateInfo( *reinterpret_cast<SamplerCreateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & operator=( SamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SamplerCreateInfo & operator=( VkSamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerCreateInfo const *>( &rhs );
       return *this;
     }
 
-    SamplerCreateInfo & operator=( SamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SamplerCreateInfo ) );
-      return *this;
-    }
-
     SamplerCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -41640,7 +40690,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::SamplerCreateFlags flags = {};
     VULKAN_HPP_NAMESPACE::Filter magFilter = VULKAN_HPP_NAMESPACE::Filter::eNearest;
@@ -41682,23 +40732,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionCreateInfo( SamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SamplerYcbcrConversionCreateInfo( VkSamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SamplerYcbcrConversionCreateInfo( *reinterpret_cast<SamplerYcbcrConversionCreateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & operator=( SamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SamplerYcbcrConversionCreateInfo & operator=( VkSamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo const *>( &rhs );
       return *this;
     }
 
-    SamplerYcbcrConversionCreateInfo & operator=( SamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SamplerYcbcrConversionCreateInfo ) );
-      return *this;
-    }
-
     SamplerYcbcrConversionCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -41791,7 +40836,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerYcbcrConversionCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerYcbcrConversionCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined;
     VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion ycbcrModel = VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity;
@@ -41927,23 +40972,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SemaphoreCreateInfo( SemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SemaphoreCreateInfo( VkSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SemaphoreCreateInfo( *reinterpret_cast<SemaphoreCreateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SemaphoreCreateInfo & operator=( SemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SemaphoreCreateInfo & operator=( VkSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo const *>( &rhs );
       return *this;
     }
 
-    SemaphoreCreateInfo & operator=( SemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SemaphoreCreateInfo ) );
-      return *this;
-    }
-
     SemaphoreCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -41987,7 +41027,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::SemaphoreCreateFlags flags = {};
 
@@ -42014,9 +41054,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ShaderModuleCreateInfo( ShaderModuleCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ShaderModuleCreateInfo( VkShaderModuleCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ShaderModuleCreateInfo( *reinterpret_cast<ShaderModuleCreateInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     ShaderModuleCreateInfo( VULKAN_HPP_NAMESPACE::ShaderModuleCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & code_ )
@@ -42025,18 +41064,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ShaderModuleCreateInfo & operator=( ShaderModuleCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ShaderModuleCreateInfo & operator=( VkShaderModuleCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo const *>( &rhs );
       return *this;
     }
 
-    ShaderModuleCreateInfo & operator=( ShaderModuleCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ShaderModuleCreateInfo ) );
-      return *this;
-    }
-
     ShaderModuleCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -42103,7 +41138,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eShaderModuleCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eShaderModuleCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ShaderModuleCreateFlags flags = {};
     size_t codeSize = {};
@@ -42232,9 +41267,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SwapchainCreateInfoKHR( SwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SwapchainCreateInfoKHR( VkSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SwapchainCreateInfoKHR( *reinterpret_cast<SwapchainCreateInfoKHR const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     SwapchainCreateInfoKHR( VULKAN_HPP_NAMESPACE::SwapchainCreateFlagsKHR flags_, VULKAN_HPP_NAMESPACE::SurfaceKHR surface_, uint32_t minImageCount_, VULKAN_HPP_NAMESPACE::Format imageFormat_, VULKAN_HPP_NAMESPACE::ColorSpaceKHR imageColorSpace_, VULKAN_HPP_NAMESPACE::Extent2D imageExtent_, uint32_t imageArrayLayers_, VULKAN_HPP_NAMESPACE::ImageUsageFlags imageUsage_, VULKAN_HPP_NAMESPACE::SharingMode imageSharingMode_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_, VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR preTransform_ = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity, VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR compositeAlpha_ = VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR::eOpaque, VULKAN_HPP_NAMESPACE::PresentModeKHR presentMode_ = VULKAN_HPP_NAMESPACE::PresentModeKHR::eImmediate, VULKAN_HPP_NAMESPACE::Bool32 clipped_ = {}, VULKAN_HPP_NAMESPACE::SwapchainKHR oldSwapchain_ = {} )
@@ -42243,18 +41277,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & operator=( SwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SwapchainCreateInfoKHR & operator=( VkSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR const *>( &rhs );
       return *this;
     }
 
-    SwapchainCreateInfoKHR & operator=( SwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SwapchainCreateInfoKHR ) );
-      return *this;
-    }
-
     SwapchainCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -42412,7 +41442,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSwapchainCreateInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSwapchainCreateInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::SwapchainCreateFlagsKHR flags = {};
     VULKAN_HPP_NAMESPACE::SurfaceKHR surface = {};
@@ -42454,9 +41484,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ValidationCacheCreateInfoEXT( ValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ValidationCacheCreateInfoEXT( VkValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ValidationCacheCreateInfoEXT( *reinterpret_cast<ValidationCacheCreateInfoEXT const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     template <typename T>
@@ -42466,18 +41495,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ValidationCacheCreateInfoEXT & operator=( ValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ValidationCacheCreateInfoEXT & operator=( VkValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT const *>( &rhs );
       return *this;
     }
 
-    ValidationCacheCreateInfoEXT & operator=( ValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ValidationCacheCreateInfoEXT ) );
-      return *this;
-    }
-
     ValidationCacheCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -42545,7 +41570,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eValidationCacheCreateInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eValidationCacheCreateInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ValidationCacheCreateFlagsEXT flags = {};
     size_t initialDataSize = {};
@@ -42674,23 +41699,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DisplayPowerInfoEXT( DisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DisplayPowerInfoEXT( VkDisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DisplayPowerInfoEXT( *reinterpret_cast<DisplayPowerInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DisplayPowerInfoEXT & operator=( DisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DisplayPowerInfoEXT & operator=( VkDisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT const *>( &rhs );
       return *this;
     }
 
-    DisplayPowerInfoEXT & operator=( DisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DisplayPowerInfoEXT ) );
-      return *this;
-    }
-
     DisplayPowerInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -42734,7 +41754,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayPowerInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayPowerInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT powerState = VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT::eOff;
 
@@ -42761,23 +41781,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR MappedMemoryRange( MappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     MappedMemoryRange( VkMappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : MappedMemoryRange( *reinterpret_cast<MappedMemoryRange const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 MappedMemoryRange & operator=( MappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     MappedMemoryRange & operator=( VkMappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MappedMemoryRange const *>( &rhs );
       return *this;
     }
 
-    MappedMemoryRange & operator=( MappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( MappedMemoryRange ) );
-      return *this;
-    }
-
     MappedMemoryRange & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -42835,7 +41850,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMappedMemoryRange;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMappedMemoryRange;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DeviceMemory memory = {};
     VULKAN_HPP_NAMESPACE::DeviceSize offset = {};
@@ -42863,23 +41878,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR MemoryRequirements( MemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     MemoryRequirements( VkMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : MemoryRequirements( *reinterpret_cast<MemoryRequirements const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 MemoryRequirements & operator=( MemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     MemoryRequirements & operator=( VkMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryRequirements const *>( &rhs );
       return *this;
     }
 
-    MemoryRequirements & operator=( MemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( MemoryRequirements ) );
-      return *this;
-    }
-
 
     operator VkMemoryRequirements const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -42932,23 +41942,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR MemoryRequirements2( MemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     MemoryRequirements2( VkMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : MemoryRequirements2( *reinterpret_cast<MemoryRequirements2 const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 MemoryRequirements2 & operator=( MemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     MemoryRequirements2 & operator=( VkMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryRequirements2 const *>( &rhs );
       return *this;
     }
 
-    MemoryRequirements2 & operator=( MemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( MemoryRequirements2 ) );
-      return *this;
-    }
-
 
     operator VkMemoryRequirements2 const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -42980,7 +41985,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryRequirements2;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryRequirements2;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::MemoryRequirements memoryRequirements = {};
 
@@ -43008,23 +42013,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentCapabilitiesKHR( DeviceGroupPresentCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DeviceGroupPresentCapabilitiesKHR( VkDeviceGroupPresentCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DeviceGroupPresentCapabilitiesKHR( *reinterpret_cast<DeviceGroupPresentCapabilitiesKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentCapabilitiesKHR & operator=( DeviceGroupPresentCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DeviceGroupPresentCapabilitiesKHR & operator=( VkDeviceGroupPresentCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR const *>( &rhs );
       return *this;
     }
 
-    DeviceGroupPresentCapabilitiesKHR & operator=( DeviceGroupPresentCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DeviceGroupPresentCapabilitiesKHR ) );
-      return *this;
-    }
-
 
     operator VkDeviceGroupPresentCapabilitiesKHR const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -43057,7 +42057,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupPresentCapabilitiesKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupPresentCapabilitiesKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, VK_MAX_DEVICE_GROUP_SIZE> presentMask = {};
     VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes = {};
@@ -43085,23 +42085,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceSurfaceInfo2KHR( PhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceSurfaceInfo2KHR( VkPhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceSurfaceInfo2KHR( *reinterpret_cast<PhysicalDeviceSurfaceInfo2KHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSurfaceInfo2KHR & operator=( PhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceSurfaceInfo2KHR & operator=( VkPhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceSurfaceInfo2KHR & operator=( PhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceSurfaceInfo2KHR ) );
-      return *this;
-    }
-
     PhysicalDeviceSurfaceInfo2KHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -43145,7 +42140,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSurfaceInfo2KHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSurfaceInfo2KHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::SurfaceKHR surface = {};
 
@@ -43172,23 +42167,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DeviceMemoryOpaqueCaptureAddressInfo( DeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DeviceMemoryOpaqueCaptureAddressInfo( VkDeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DeviceMemoryOpaqueCaptureAddressInfo( *reinterpret_cast<DeviceMemoryOpaqueCaptureAddressInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DeviceMemoryOpaqueCaptureAddressInfo & operator=( DeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DeviceMemoryOpaqueCaptureAddressInfo & operator=( VkDeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo const *>( &rhs );
       return *this;
     }
 
-    DeviceMemoryOpaqueCaptureAddressInfo & operator=( DeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DeviceMemoryOpaqueCaptureAddressInfo ) );
-      return *this;
-    }
-
     DeviceMemoryOpaqueCaptureAddressInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -43232,7 +42222,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceMemoryOpaqueCaptureAddressInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceMemoryOpaqueCaptureAddressInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DeviceMemory memory = {};
 
@@ -43260,9 +42250,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PresentInfoKHR( PresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PresentInfoKHR( VkPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PresentInfoKHR( *reinterpret_cast<PresentInfoKHR const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     PresentInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & waitSemaphores_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SwapchainKHR> const & swapchains_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & imageIndices_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::Result> const & results_ = {} )
@@ -43290,18 +42279,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & operator=( PresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PresentInfoKHR & operator=( VkPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PresentInfoKHR const *>( &rhs );
       return *this;
     }
 
-    PresentInfoKHR & operator=( PresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PresentInfoKHR ) );
-      return *this;
-    }
-
     PresentInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -43416,7 +42401,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePresentInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePresentInfoKHR;
     const void* pNext = {};
     uint32_t waitSemaphoreCount = {};
     const VULKAN_HPP_NAMESPACE::Semaphore* pWaitSemaphores = {};
@@ -43448,9 +42433,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SubmitInfo( SubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SubmitInfo( VkSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SubmitInfo( *reinterpret_cast<SubmitInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     SubmitInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & waitSemaphores_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineStageFlags> const & waitDstStageMask_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CommandBuffer> const & commandBuffers_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & signalSemaphores_ = {} )
@@ -43468,18 +42452,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SubmitInfo & operator=( SubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SubmitInfo & operator=( VkSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubmitInfo const *>( &rhs );
       return *this;
     }
 
-    SubmitInfo & operator=( SubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SubmitInfo ) );
-      return *this;
-    }
-
     SubmitInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -43601,7 +42581,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubmitInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubmitInfo;
     const void* pNext = {};
     uint32_t waitSemaphoreCount = {};
     const VULKAN_HPP_NAMESPACE::Semaphore* pWaitSemaphores = {};
@@ -43808,23 +42788,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DeviceQueueInfo2( DeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DeviceQueueInfo2( VkDeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DeviceQueueInfo2( *reinterpret_cast<DeviceQueueInfo2 const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DeviceQueueInfo2 & operator=( DeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DeviceQueueInfo2 & operator=( VkDeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceQueueInfo2 const *>( &rhs );
       return *this;
     }
 
-    DeviceQueueInfo2 & operator=( DeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DeviceQueueInfo2 ) );
-      return *this;
-    }
-
     DeviceQueueInfo2 & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -43882,7 +42857,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceQueueInfo2;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceQueueInfo2;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags = {};
     uint32_t queueFamilyIndex = {};
@@ -43911,23 +42886,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR FenceGetFdInfoKHR( FenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     FenceGetFdInfoKHR( VkFenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : FenceGetFdInfoKHR( *reinterpret_cast<FenceGetFdInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 FenceGetFdInfoKHR & operator=( FenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     FenceGetFdInfoKHR & operator=( VkFenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR const *>( &rhs );
       return *this;
     }
 
-    FenceGetFdInfoKHR & operator=( FenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( FenceGetFdInfoKHR ) );
-      return *this;
-    }
-
     FenceGetFdInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -43978,7 +42948,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFenceGetFdInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFenceGetFdInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Fence fence = {};
     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd;
@@ -44007,23 +42977,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR FenceGetWin32HandleInfoKHR( FenceGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     FenceGetWin32HandleInfoKHR( VkFenceGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : FenceGetWin32HandleInfoKHR( *reinterpret_cast<FenceGetWin32HandleInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 FenceGetWin32HandleInfoKHR & operator=( FenceGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     FenceGetWin32HandleInfoKHR & operator=( VkFenceGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR const *>( &rhs );
       return *this;
     }
 
-    FenceGetWin32HandleInfoKHR & operator=( FenceGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( FenceGetWin32HandleInfoKHR ) );
-      return *this;
-    }
-
     FenceGetWin32HandleInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -44074,7 +43039,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFenceGetWin32HandleInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFenceGetWin32HandleInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Fence fence = {};
     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd;
@@ -44103,23 +43068,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR GeneratedCommandsMemoryRequirementsInfoNV( GeneratedCommandsMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     GeneratedCommandsMemoryRequirementsInfoNV( VkGeneratedCommandsMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : GeneratedCommandsMemoryRequirementsInfoNV( *reinterpret_cast<GeneratedCommandsMemoryRequirementsInfoNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV & operator=( GeneratedCommandsMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     GeneratedCommandsMemoryRequirementsInfoNV & operator=( VkGeneratedCommandsMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV const *>( &rhs );
       return *this;
     }
 
-    GeneratedCommandsMemoryRequirementsInfoNV & operator=( GeneratedCommandsMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( GeneratedCommandsMemoryRequirementsInfoNV ) );
-      return *this;
-    }
-
     GeneratedCommandsMemoryRequirementsInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -44184,7 +43144,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGeneratedCommandsMemoryRequirementsInfoNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGeneratedCommandsMemoryRequirementsInfoNV;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics;
     VULKAN_HPP_NAMESPACE::Pipeline pipeline = {};
@@ -44214,23 +43174,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierPropertiesEXT( ImageDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImageDrmFormatModifierPropertiesEXT( VkImageDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImageDrmFormatModifierPropertiesEXT( *reinterpret_cast<ImageDrmFormatModifierPropertiesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierPropertiesEXT & operator=( ImageDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImageDrmFormatModifierPropertiesEXT & operator=( VkImageDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT const *>( &rhs );
       return *this;
     }
 
-    ImageDrmFormatModifierPropertiesEXT & operator=( ImageDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImageDrmFormatModifierPropertiesEXT ) );
-      return *this;
-    }
-
 
     operator VkImageDrmFormatModifierPropertiesEXT const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -44262,7 +43217,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageDrmFormatModifierPropertiesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageDrmFormatModifierPropertiesEXT;
     void* pNext = {};
     uint64_t drmFormatModifier = {};
 
@@ -44289,23 +43244,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImageMemoryRequirementsInfo2( ImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImageMemoryRequirementsInfo2( VkImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImageMemoryRequirementsInfo2( *reinterpret_cast<ImageMemoryRequirementsInfo2 const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImageMemoryRequirementsInfo2 & operator=( ImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImageMemoryRequirementsInfo2 & operator=( VkImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 const *>( &rhs );
       return *this;
     }
 
-    ImageMemoryRequirementsInfo2 & operator=( ImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImageMemoryRequirementsInfo2 ) );
-      return *this;
-    }
-
     ImageMemoryRequirementsInfo2 & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -44349,7 +43299,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageMemoryRequirementsInfo2;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageMemoryRequirementsInfo2;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Image image = {};
 
@@ -44376,23 +43326,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SparseImageFormatProperties( SparseImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SparseImageFormatProperties( VkSparseImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SparseImageFormatProperties( *reinterpret_cast<SparseImageFormatProperties const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SparseImageFormatProperties & operator=( SparseImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SparseImageFormatProperties & operator=( VkSparseImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties const *>( &rhs );
       return *this;
     }
 
-    SparseImageFormatProperties & operator=( SparseImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SparseImageFormatProperties ) );
-      return *this;
-    }
-
 
     operator VkSparseImageFormatProperties const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -44444,23 +43389,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SparseImageMemoryRequirements( SparseImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SparseImageMemoryRequirements( VkSparseImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SparseImageMemoryRequirements( *reinterpret_cast<SparseImageMemoryRequirements const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryRequirements & operator=( SparseImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SparseImageMemoryRequirements & operator=( VkSparseImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements const *>( &rhs );
       return *this;
     }
 
-    SparseImageMemoryRequirements & operator=( SparseImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SparseImageMemoryRequirements ) );
-      return *this;
-    }
-
 
     operator VkSparseImageMemoryRequirements const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -44517,23 +43457,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImageSparseMemoryRequirementsInfo2( ImageSparseMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImageSparseMemoryRequirementsInfo2( VkImageSparseMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImageSparseMemoryRequirementsInfo2( *reinterpret_cast<ImageSparseMemoryRequirementsInfo2 const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImageSparseMemoryRequirementsInfo2 & operator=( ImageSparseMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImageSparseMemoryRequirementsInfo2 & operator=( VkImageSparseMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 const *>( &rhs );
       return *this;
     }
 
-    ImageSparseMemoryRequirementsInfo2 & operator=( ImageSparseMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImageSparseMemoryRequirementsInfo2 ) );
-      return *this;
-    }
-
     ImageSparseMemoryRequirementsInfo2 & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -44577,7 +43512,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageSparseMemoryRequirementsInfo2;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageSparseMemoryRequirementsInfo2;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Image image = {};
 
@@ -44605,23 +43540,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SparseImageMemoryRequirements2( SparseImageMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SparseImageMemoryRequirements2( VkSparseImageMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SparseImageMemoryRequirements2( *reinterpret_cast<SparseImageMemoryRequirements2 const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryRequirements2 & operator=( SparseImageMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SparseImageMemoryRequirements2 & operator=( VkSparseImageMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2 const *>( &rhs );
       return *this;
     }
 
-    SparseImageMemoryRequirements2 & operator=( SparseImageMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SparseImageMemoryRequirements2 ) );
-      return *this;
-    }
-
 
     operator VkSparseImageMemoryRequirements2 const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -44653,7 +43583,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSparseImageMemoryRequirements2;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSparseImageMemoryRequirements2;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements memoryRequirements = {};
 
@@ -44680,23 +43610,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SubresourceLayout( SubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SubresourceLayout( VkSubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SubresourceLayout( *reinterpret_cast<SubresourceLayout const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SubresourceLayout & operator=( SubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SubresourceLayout & operator=( VkSubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubresourceLayout const *>( &rhs );
       return *this;
     }
 
-    SubresourceLayout & operator=( SubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SubresourceLayout ) );
-      return *this;
-    }
-
 
     operator VkSubresourceLayout const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -44753,23 +43678,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImageViewAddressPropertiesNVX( ImageViewAddressPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImageViewAddressPropertiesNVX( VkImageViewAddressPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImageViewAddressPropertiesNVX( *reinterpret_cast<ImageViewAddressPropertiesNVX const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImageViewAddressPropertiesNVX & operator=( ImageViewAddressPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImageViewAddressPropertiesNVX & operator=( VkImageViewAddressPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX const *>( &rhs );
       return *this;
     }
 
-    ImageViewAddressPropertiesNVX & operator=( ImageViewAddressPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImageViewAddressPropertiesNVX ) );
-      return *this;
-    }
-
 
     operator VkImageViewAddressPropertiesNVX const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -44802,7 +43722,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageViewAddressPropertiesNVX;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageViewAddressPropertiesNVX;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress = {};
     VULKAN_HPP_NAMESPACE::DeviceSize size = {};
@@ -44830,23 +43750,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImageViewHandleInfoNVX( ImageViewHandleInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImageViewHandleInfoNVX( VkImageViewHandleInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImageViewHandleInfoNVX( *reinterpret_cast<ImageViewHandleInfoNVX const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImageViewHandleInfoNVX & operator=( ImageViewHandleInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImageViewHandleInfoNVX & operator=( VkImageViewHandleInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX const *>( &rhs );
       return *this;
     }
 
-    ImageViewHandleInfoNVX & operator=( ImageViewHandleInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImageViewHandleInfoNVX ) );
-      return *this;
-    }
-
     ImageViewHandleInfoNVX & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -44904,7 +43819,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageViewHandleInfoNVX;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageViewHandleInfoNVX;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ImageView imageView = {};
     VULKAN_HPP_NAMESPACE::DescriptorType descriptorType = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler;
@@ -44934,23 +43849,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR MemoryGetAndroidHardwareBufferInfoANDROID( MemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     MemoryGetAndroidHardwareBufferInfoANDROID( VkMemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : MemoryGetAndroidHardwareBufferInfoANDROID( *reinterpret_cast<MemoryGetAndroidHardwareBufferInfoANDROID const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 MemoryGetAndroidHardwareBufferInfoANDROID & operator=( MemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     MemoryGetAndroidHardwareBufferInfoANDROID & operator=( VkMemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID const *>( &rhs );
       return *this;
     }
 
-    MemoryGetAndroidHardwareBufferInfoANDROID & operator=( MemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( MemoryGetAndroidHardwareBufferInfoANDROID ) );
-      return *this;
-    }
-
     MemoryGetAndroidHardwareBufferInfoANDROID & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -44994,7 +43904,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryGetAndroidHardwareBufferInfoANDROID;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryGetAndroidHardwareBufferInfoANDROID;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DeviceMemory memory = {};
 
@@ -45022,23 +43932,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR MemoryGetFdInfoKHR( MemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     MemoryGetFdInfoKHR( VkMemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : MemoryGetFdInfoKHR( *reinterpret_cast<MemoryGetFdInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 MemoryGetFdInfoKHR & operator=( MemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     MemoryGetFdInfoKHR & operator=( VkMemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR const *>( &rhs );
       return *this;
     }
 
-    MemoryGetFdInfoKHR & operator=( MemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( MemoryGetFdInfoKHR ) );
-      return *this;
-    }
-
     MemoryGetFdInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -45089,7 +43994,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryGetFdInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryGetFdInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DeviceMemory memory = {};
     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
@@ -45117,23 +44022,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR MemoryFdPropertiesKHR( MemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     MemoryFdPropertiesKHR( VkMemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : MemoryFdPropertiesKHR( *reinterpret_cast<MemoryFdPropertiesKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 MemoryFdPropertiesKHR & operator=( MemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     MemoryFdPropertiesKHR & operator=( VkMemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR const *>( &rhs );
       return *this;
     }
 
-    MemoryFdPropertiesKHR & operator=( MemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( MemoryFdPropertiesKHR ) );
-      return *this;
-    }
-
 
     operator VkMemoryFdPropertiesKHR const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -45165,7 +44065,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryFdPropertiesKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryFdPropertiesKHR;
     void* pNext = {};
     uint32_t memoryTypeBits = {};
 
@@ -45192,23 +44092,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR MemoryHostPointerPropertiesEXT( MemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     MemoryHostPointerPropertiesEXT( VkMemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : MemoryHostPointerPropertiesEXT( *reinterpret_cast<MemoryHostPointerPropertiesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 MemoryHostPointerPropertiesEXT & operator=( MemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     MemoryHostPointerPropertiesEXT & operator=( VkMemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT const *>( &rhs );
       return *this;
     }
 
-    MemoryHostPointerPropertiesEXT & operator=( MemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( MemoryHostPointerPropertiesEXT ) );
-      return *this;
-    }
-
 
     operator VkMemoryHostPointerPropertiesEXT const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -45240,7 +44135,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryHostPointerPropertiesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryHostPointerPropertiesEXT;
     void* pNext = {};
     uint32_t memoryTypeBits = {};
 
@@ -45268,23 +44163,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR MemoryGetWin32HandleInfoKHR( MemoryGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     MemoryGetWin32HandleInfoKHR( VkMemoryGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : MemoryGetWin32HandleInfoKHR( *reinterpret_cast<MemoryGetWin32HandleInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 MemoryGetWin32HandleInfoKHR & operator=( MemoryGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     MemoryGetWin32HandleInfoKHR & operator=( VkMemoryGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR const *>( &rhs );
       return *this;
     }
 
-    MemoryGetWin32HandleInfoKHR & operator=( MemoryGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( MemoryGetWin32HandleInfoKHR ) );
-      return *this;
-    }
-
     MemoryGetWin32HandleInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -45335,7 +44225,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryGetWin32HandleInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryGetWin32HandleInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DeviceMemory memory = {};
     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
@@ -45365,23 +44255,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR MemoryWin32HandlePropertiesKHR( MemoryWin32HandlePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     MemoryWin32HandlePropertiesKHR( VkMemoryWin32HandlePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : MemoryWin32HandlePropertiesKHR( *reinterpret_cast<MemoryWin32HandlePropertiesKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 MemoryWin32HandlePropertiesKHR & operator=( MemoryWin32HandlePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     MemoryWin32HandlePropertiesKHR & operator=( VkMemoryWin32HandlePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR const *>( &rhs );
       return *this;
     }
 
-    MemoryWin32HandlePropertiesKHR & operator=( MemoryWin32HandlePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( MemoryWin32HandlePropertiesKHR ) );
-      return *this;
-    }
-
 
     operator VkMemoryWin32HandlePropertiesKHR const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -45413,7 +44298,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryWin32HandlePropertiesKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryWin32HandlePropertiesKHR;
     void* pNext = {};
     uint32_t memoryTypeBits = {};
 
@@ -45440,23 +44325,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PastPresentationTimingGOOGLE( PastPresentationTimingGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PastPresentationTimingGOOGLE( VkPastPresentationTimingGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PastPresentationTimingGOOGLE( *reinterpret_cast<PastPresentationTimingGOOGLE const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PastPresentationTimingGOOGLE & operator=( PastPresentationTimingGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PastPresentationTimingGOOGLE & operator=( VkPastPresentationTimingGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE const *>( &rhs );
       return *this;
     }
 
-    PastPresentationTimingGOOGLE & operator=( PastPresentationTimingGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PastPresentationTimingGOOGLE ) );
-      return *this;
-    }
-
 
     operator VkPastPresentationTimingGOOGLE const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -45596,23 +44476,18 @@ namespace VULKAN_HPP_NAMESPACE
     PerformanceValueINTEL( PerformanceValueINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PerformanceValueINTEL( VkPerformanceValueINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PerformanceValueINTEL( *reinterpret_cast<PerformanceValueINTEL const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    PerformanceValueINTEL & operator=( PerformanceValueINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PerformanceValueINTEL & operator=( VkPerformanceValueINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceValueINTEL const *>( &rhs );
       return *this;
     }
 
-    PerformanceValueINTEL & operator=( PerformanceValueINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PerformanceValueINTEL ) );
-      return *this;
-    }
-
     PerformanceValueINTEL & setType( VULKAN_HPP_NAMESPACE::PerformanceValueTypeINTEL type_ ) VULKAN_HPP_NOEXCEPT
     {
       type = type_;
@@ -45660,23 +44535,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineExecutableInfoKHR( PipelineExecutableInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineExecutableInfoKHR( VkPipelineExecutableInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineExecutableInfoKHR( *reinterpret_cast<PipelineExecutableInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineExecutableInfoKHR & operator=( PipelineExecutableInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineExecutableInfoKHR & operator=( VkPipelineExecutableInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR const *>( &rhs );
       return *this;
     }
 
-    PipelineExecutableInfoKHR & operator=( PipelineExecutableInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineExecutableInfoKHR ) );
-      return *this;
-    }
-
     PipelineExecutableInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -45727,7 +44597,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineExecutableInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineExecutableInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Pipeline pipeline = {};
     uint32_t executableIndex = {};
@@ -45755,9 +44625,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 PipelineExecutableInternalRepresentationKHR( PipelineExecutableInternalRepresentationKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineExecutableInternalRepresentationKHR( VkPipelineExecutableInternalRepresentationKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineExecutableInternalRepresentationKHR( *reinterpret_cast<PipelineExecutableInternalRepresentationKHR const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     template <typename T>
@@ -45767,18 +44636,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineExecutableInternalRepresentationKHR & operator=( PipelineExecutableInternalRepresentationKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineExecutableInternalRepresentationKHR & operator=( VkPipelineExecutableInternalRepresentationKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR const *>( &rhs );
       return *this;
     }
 
-    PipelineExecutableInternalRepresentationKHR & operator=( PipelineExecutableInternalRepresentationKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineExecutableInternalRepresentationKHR ) );
-      return *this;
-    }
-
 
     operator VkPipelineExecutableInternalRepresentationKHR const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -45814,7 +44679,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineExecutableInternalRepresentationKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineExecutableInternalRepresentationKHR;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> name = {};
     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> description = {};
@@ -45845,23 +44710,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineInfoKHR( PipelineInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineInfoKHR( VkPipelineInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineInfoKHR( *reinterpret_cast<PipelineInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineInfoKHR & operator=( PipelineInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineInfoKHR & operator=( VkPipelineInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineInfoKHR const *>( &rhs );
       return *this;
     }
 
-    PipelineInfoKHR & operator=( PipelineInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineInfoKHR ) );
-      return *this;
-    }
-
     PipelineInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -45905,7 +44765,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Pipeline pipeline = {};
 
@@ -45932,23 +44792,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 PipelineExecutablePropertiesKHR( PipelineExecutablePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineExecutablePropertiesKHR( VkPipelineExecutablePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineExecutablePropertiesKHR( *reinterpret_cast<PipelineExecutablePropertiesKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineExecutablePropertiesKHR & operator=( PipelineExecutablePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineExecutablePropertiesKHR & operator=( VkPipelineExecutablePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR const *>( &rhs );
       return *this;
     }
 
-    PipelineExecutablePropertiesKHR & operator=( PipelineExecutablePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineExecutablePropertiesKHR ) );
-      return *this;
-    }
-
 
     operator VkPipelineExecutablePropertiesKHR const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -45983,7 +44838,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineExecutablePropertiesKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineExecutablePropertiesKHR;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::ShaderStageFlags stages = {};
     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> name = {};
@@ -46089,23 +44944,18 @@ namespace VULKAN_HPP_NAMESPACE
     PipelineExecutableStatisticKHR( PipelineExecutableStatisticKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineExecutableStatisticKHR( VkPipelineExecutableStatisticKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineExecutableStatisticKHR( *reinterpret_cast<PipelineExecutableStatisticKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    PipelineExecutableStatisticKHR & operator=( PipelineExecutableStatisticKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineExecutableStatisticKHR & operator=( VkPipelineExecutableStatisticKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR const *>( &rhs );
       return *this;
     }
 
-    PipelineExecutableStatisticKHR & operator=( PipelineExecutableStatisticKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineExecutableStatisticKHR ) );
-      return *this;
-    }
-
 
     operator VkPipelineExecutableStatisticKHR const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -46121,7 +44971,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineExecutableStatisticKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineExecutableStatisticKHR;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> name = {};
     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> description = {};
@@ -46150,23 +45000,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR RefreshCycleDurationGOOGLE( RefreshCycleDurationGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     RefreshCycleDurationGOOGLE( VkRefreshCycleDurationGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : RefreshCycleDurationGOOGLE( *reinterpret_cast<RefreshCycleDurationGOOGLE const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 RefreshCycleDurationGOOGLE & operator=( RefreshCycleDurationGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     RefreshCycleDurationGOOGLE & operator=( VkRefreshCycleDurationGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE const *>( &rhs );
       return *this;
     }
 
-    RefreshCycleDurationGOOGLE & operator=( RefreshCycleDurationGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( RefreshCycleDurationGOOGLE ) );
-      return *this;
-    }
-
 
     operator VkRefreshCycleDurationGOOGLE const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -46215,23 +45060,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SemaphoreGetFdInfoKHR( SemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SemaphoreGetFdInfoKHR( VkSemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SemaphoreGetFdInfoKHR( *reinterpret_cast<SemaphoreGetFdInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SemaphoreGetFdInfoKHR & operator=( SemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SemaphoreGetFdInfoKHR & operator=( VkSemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR const *>( &rhs );
       return *this;
     }
 
-    SemaphoreGetFdInfoKHR & operator=( SemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SemaphoreGetFdInfoKHR ) );
-      return *this;
-    }
-
     SemaphoreGetFdInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -46282,7 +45122,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreGetFdInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreGetFdInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Semaphore semaphore = {};
     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd;
@@ -46311,23 +45151,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SemaphoreGetWin32HandleInfoKHR( SemaphoreGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SemaphoreGetWin32HandleInfoKHR( VkSemaphoreGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SemaphoreGetWin32HandleInfoKHR( *reinterpret_cast<SemaphoreGetWin32HandleInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SemaphoreGetWin32HandleInfoKHR & operator=( SemaphoreGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SemaphoreGetWin32HandleInfoKHR & operator=( VkSemaphoreGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR const *>( &rhs );
       return *this;
     }
 
-    SemaphoreGetWin32HandleInfoKHR & operator=( SemaphoreGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SemaphoreGetWin32HandleInfoKHR ) );
-      return *this;
-    }
-
     SemaphoreGetWin32HandleInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -46378,7 +45213,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreGetWin32HandleInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreGetWin32HandleInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Semaphore semaphore = {};
     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd;
@@ -46407,23 +45242,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImportFenceFdInfoKHR( ImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImportFenceFdInfoKHR( VkImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImportFenceFdInfoKHR( *reinterpret_cast<ImportFenceFdInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR & operator=( ImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImportFenceFdInfoKHR & operator=( VkImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR const *>( &rhs );
       return *this;
     }
 
-    ImportFenceFdInfoKHR & operator=( ImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImportFenceFdInfoKHR ) );
-      return *this;
-    }
-
     ImportFenceFdInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -46488,7 +45318,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportFenceFdInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportFenceFdInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Fence fence = {};
     VULKAN_HPP_NAMESPACE::FenceImportFlags flags = {};
@@ -46519,23 +45349,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImportFenceWin32HandleInfoKHR( ImportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImportFenceWin32HandleInfoKHR( VkImportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImportFenceWin32HandleInfoKHR( *reinterpret_cast<ImportFenceWin32HandleInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR & operator=( ImportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImportFenceWin32HandleInfoKHR & operator=( VkImportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR const *>( &rhs );
       return *this;
     }
 
-    ImportFenceWin32HandleInfoKHR & operator=( ImportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImportFenceWin32HandleInfoKHR ) );
-      return *this;
-    }
-
     ImportFenceWin32HandleInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -46607,7 +45432,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportFenceWin32HandleInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportFenceWin32HandleInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Fence fence = {};
     VULKAN_HPP_NAMESPACE::FenceImportFlags flags = {};
@@ -46639,23 +45464,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImportSemaphoreFdInfoKHR( ImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImportSemaphoreFdInfoKHR( VkImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImportSemaphoreFdInfoKHR( *reinterpret_cast<ImportSemaphoreFdInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR & operator=( ImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImportSemaphoreFdInfoKHR & operator=( VkImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR const *>( &rhs );
       return *this;
     }
 
-    ImportSemaphoreFdInfoKHR & operator=( ImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImportSemaphoreFdInfoKHR ) );
-      return *this;
-    }
-
     ImportSemaphoreFdInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -46720,7 +45540,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportSemaphoreFdInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportSemaphoreFdInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Semaphore semaphore = {};
     VULKAN_HPP_NAMESPACE::SemaphoreImportFlags flags = {};
@@ -46751,23 +45571,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImportSemaphoreWin32HandleInfoKHR( ImportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImportSemaphoreWin32HandleInfoKHR( VkImportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImportSemaphoreWin32HandleInfoKHR( *reinterpret_cast<ImportSemaphoreWin32HandleInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR & operator=( ImportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImportSemaphoreWin32HandleInfoKHR & operator=( VkImportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR const *>( &rhs );
       return *this;
     }
 
-    ImportSemaphoreWin32HandleInfoKHR & operator=( ImportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImportSemaphoreWin32HandleInfoKHR ) );
-      return *this;
-    }
-
     ImportSemaphoreWin32HandleInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -46839,7 +45654,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportSemaphoreWin32HandleInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportSemaphoreWin32HandleInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Semaphore semaphore = {};
     VULKAN_HPP_NAMESPACE::SemaphoreImportFlags flags = {};
@@ -46871,23 +45686,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR InitializePerformanceApiInfoINTEL( InitializePerformanceApiInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     InitializePerformanceApiInfoINTEL( VkInitializePerformanceApiInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : InitializePerformanceApiInfoINTEL( *reinterpret_cast<InitializePerformanceApiInfoINTEL const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 InitializePerformanceApiInfoINTEL & operator=( InitializePerformanceApiInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     InitializePerformanceApiInfoINTEL & operator=( VkInitializePerformanceApiInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL const *>( &rhs );
       return *this;
     }
 
-    InitializePerformanceApiInfoINTEL & operator=( InitializePerformanceApiInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( InitializePerformanceApiInfoINTEL ) );
-      return *this;
-    }
-
     InitializePerformanceApiInfoINTEL & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -46931,7 +45741,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eInitializePerformanceApiInfoINTEL;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eInitializePerformanceApiInfoINTEL;
     const void* pNext = {};
     void* pUserData = {};
 
@@ -46958,23 +45768,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DisplayEventInfoEXT( DisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DisplayEventInfoEXT( VkDisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DisplayEventInfoEXT( *reinterpret_cast<DisplayEventInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DisplayEventInfoEXT & operator=( DisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DisplayEventInfoEXT & operator=( VkDisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT const *>( &rhs );
       return *this;
     }
 
-    DisplayEventInfoEXT & operator=( DisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DisplayEventInfoEXT ) );
-      return *this;
-    }
-
     DisplayEventInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -47018,7 +45823,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayEventInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayEventInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT displayEvent = VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT::eFirstPixelOut;
 
@@ -47044,23 +45849,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR XYColorEXT( XYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     XYColorEXT( VkXYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : XYColorEXT( *reinterpret_cast<XYColorEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 XYColorEXT & operator=( XYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     XYColorEXT & operator=( VkXYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::XYColorEXT const *>( &rhs );
       return *this;
     }
 
-    XYColorEXT & operator=( XYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( XYColorEXT ) );
-      return *this;
-    }
-
     XYColorEXT & setX( float x_ ) VULKAN_HPP_NOEXCEPT
     {
       x = x_;
@@ -47123,23 +45923,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR HdrMetadataEXT( HdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     HdrMetadataEXT( VkHdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : HdrMetadataEXT( *reinterpret_cast<HdrMetadataEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & operator=( HdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     HdrMetadataEXT & operator=( VkHdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::HdrMetadataEXT const *>( &rhs );
       return *this;
     }
 
-    HdrMetadataEXT & operator=( HdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( HdrMetadataEXT ) );
-      return *this;
-    }
-
     HdrMetadataEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -47232,7 +46027,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eHdrMetadataEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eHdrMetadataEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::XYColorEXT displayPrimaryRed = {};
     VULKAN_HPP_NAMESPACE::XYColorEXT displayPrimaryGreen = {};
@@ -47266,23 +46061,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SemaphoreSignalInfo( SemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SemaphoreSignalInfo( VkSemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SemaphoreSignalInfo( *reinterpret_cast<SemaphoreSignalInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SemaphoreSignalInfo & operator=( SemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SemaphoreSignalInfo & operator=( VkSemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo const *>( &rhs );
       return *this;
     }
 
-    SemaphoreSignalInfo & operator=( SemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SemaphoreSignalInfo ) );
-      return *this;
-    }
-
     SemaphoreSignalInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -47333,7 +46123,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreSignalInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreSignalInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Semaphore semaphore = {};
     uint64_t value = {};
@@ -47362,9 +46152,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SemaphoreWaitInfo( SemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SemaphoreWaitInfo( VkSemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SemaphoreWaitInfo( *reinterpret_cast<SemaphoreWaitInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     SemaphoreWaitInfo( VULKAN_HPP_NAMESPACE::SemaphoreWaitFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & semaphores_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & values_ = {} )
@@ -47382,18 +46171,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo & operator=( SemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SemaphoreWaitInfo & operator=( VkSemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo const *>( &rhs );
       return *this;
     }
 
-    SemaphoreWaitInfo & operator=( SemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SemaphoreWaitInfo ) );
-      return *this;
-    }
-
     SemaphoreWaitInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -47476,7 +46261,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreWaitInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreWaitInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::SemaphoreWaitFlags flags = {};
     uint32_t semaphoreCount = {};
@@ -48822,7 +47607,7 @@ namespace VULKAN_HPP_NAMESPACE
     void getAccelerationStructureBuildSizesKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureBuildTypeKHR buildType, const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR* pBuildInfo, const uint32_t* pMaxPrimitiveCounts, VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR* pSizeInfo, 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::AccelerationStructureBuildSizesInfoKHR getAccelerationStructureBuildSizesKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureBuildTypeKHR buildType, const AccelerationStructureBuildGeometryInfoKHR & buildInfo, ArrayProxy<const uint32_t> const & maxPrimitiveCounts, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
+    VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR getAccelerationStructureBuildSizesKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureBuildTypeKHR buildType, const AccelerationStructureBuildGeometryInfoKHR & buildInfo, ArrayProxy<const uint32_t> const & maxPrimitiveCounts VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
 
 
@@ -49853,23 +48638,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DisplayModeParametersKHR( DisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DisplayModeParametersKHR( VkDisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DisplayModeParametersKHR( *reinterpret_cast<DisplayModeParametersKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DisplayModeParametersKHR & operator=( DisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DisplayModeParametersKHR & operator=( VkDisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR const *>( &rhs );
       return *this;
     }
 
-    DisplayModeParametersKHR & operator=( DisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DisplayModeParametersKHR ) );
-      return *this;
-    }
-
     DisplayModeParametersKHR & setVisibleRegion( VULKAN_HPP_NAMESPACE::Extent2D const & visibleRegion_ ) VULKAN_HPP_NOEXCEPT
     {
       visibleRegion = visibleRegion_;
@@ -49932,23 +48712,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DisplayModeCreateInfoKHR( DisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DisplayModeCreateInfoKHR( VkDisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DisplayModeCreateInfoKHR( *reinterpret_cast<DisplayModeCreateInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DisplayModeCreateInfoKHR & operator=( DisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DisplayModeCreateInfoKHR & operator=( VkDisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR const *>( &rhs );
       return *this;
     }
 
-    DisplayModeCreateInfoKHR & operator=( DisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DisplayModeCreateInfoKHR ) );
-      return *this;
-    }
-
     DisplayModeCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -49999,7 +48774,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayModeCreateInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayModeCreateInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DisplayModeCreateFlagsKHR flags = {};
     VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR parameters = {};
@@ -50126,23 +48901,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 ExtensionProperties( ExtensionProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ExtensionProperties( VkExtensionProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ExtensionProperties( *reinterpret_cast<ExtensionProperties const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ExtensionProperties & operator=( ExtensionProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ExtensionProperties & operator=( VkExtensionProperties const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExtensionProperties const *>( &rhs );
       return *this;
     }
 
-    ExtensionProperties & operator=( ExtensionProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ExtensionProperties ) );
-      return *this;
-    }
-
 
     operator VkExtensionProperties const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -50192,23 +48962,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 LayerProperties( LayerProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     LayerProperties( VkLayerProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : LayerProperties( *reinterpret_cast<LayerProperties const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 LayerProperties & operator=( LayerProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     LayerProperties & operator=( VkLayerProperties const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::LayerProperties const *>( &rhs );
       return *this;
     }
 
-    LayerProperties & operator=( LayerProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( LayerProperties ) );
-      return *this;
-    }
-
 
     operator VkLayerProperties const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -50263,23 +49028,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterKHR( PerformanceCounterKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PerformanceCounterKHR( VkPerformanceCounterKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PerformanceCounterKHR( *reinterpret_cast<PerformanceCounterKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PerformanceCounterKHR & operator=( PerformanceCounterKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PerformanceCounterKHR & operator=( VkPerformanceCounterKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceCounterKHR const *>( &rhs );
       return *this;
     }
 
-    PerformanceCounterKHR & operator=( PerformanceCounterKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PerformanceCounterKHR ) );
-      return *this;
-    }
-
 
     operator VkPerformanceCounterKHR const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -50314,7 +49074,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceCounterKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceCounterKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PerformanceCounterUnitKHR unit = VULKAN_HPP_NAMESPACE::PerformanceCounterUnitKHR::eGeneric;
     VULKAN_HPP_NAMESPACE::PerformanceCounterScopeKHR scope = VULKAN_HPP_NAMESPACE::PerformanceCounterScopeKHR::eCommandBuffer;
@@ -50344,23 +49104,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterDescriptionKHR( PerformanceCounterDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PerformanceCounterDescriptionKHR( VkPerformanceCounterDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PerformanceCounterDescriptionKHR( *reinterpret_cast<PerformanceCounterDescriptionKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PerformanceCounterDescriptionKHR & operator=( PerformanceCounterDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PerformanceCounterDescriptionKHR & operator=( VkPerformanceCounterDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR const *>( &rhs );
       return *this;
     }
 
-    PerformanceCounterDescriptionKHR & operator=( PerformanceCounterDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PerformanceCounterDescriptionKHR ) );
-      return *this;
-    }
-
 
     operator VkPerformanceCounterDescriptionKHR const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -50395,7 +49150,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceCounterDescriptionKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceCounterDescriptionKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionFlagsKHR flags = {};
     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> name = {};
@@ -50424,23 +49179,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DisplayModePropertiesKHR( DisplayModePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DisplayModePropertiesKHR( VkDisplayModePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DisplayModePropertiesKHR( *reinterpret_cast<DisplayModePropertiesKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DisplayModePropertiesKHR & operator=( DisplayModePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DisplayModePropertiesKHR & operator=( VkDisplayModePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR const *>( &rhs );
       return *this;
     }
 
-    DisplayModePropertiesKHR & operator=( DisplayModePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DisplayModePropertiesKHR ) );
-      return *this;
-    }
-
 
     operator VkDisplayModePropertiesKHR const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -50491,23 +49241,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DisplayModeProperties2KHR( DisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DisplayModeProperties2KHR( VkDisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DisplayModeProperties2KHR( *reinterpret_cast<DisplayModeProperties2KHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DisplayModeProperties2KHR & operator=( DisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DisplayModeProperties2KHR & operator=( VkDisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR const *>( &rhs );
       return *this;
     }
 
-    DisplayModeProperties2KHR & operator=( DisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DisplayModeProperties2KHR ) );
-      return *this;
-    }
-
 
     operator VkDisplayModeProperties2KHR const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -50539,7 +49284,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayModeProperties2KHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayModeProperties2KHR;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR displayModeProperties = {};
 
@@ -50566,23 +49311,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DisplayPlaneInfo2KHR( DisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DisplayPlaneInfo2KHR( VkDisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DisplayPlaneInfo2KHR( *reinterpret_cast<DisplayPlaneInfo2KHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DisplayPlaneInfo2KHR & operator=( DisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DisplayPlaneInfo2KHR & operator=( VkDisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR const *>( &rhs );
       return *this;
     }
 
-    DisplayPlaneInfo2KHR & operator=( DisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DisplayPlaneInfo2KHR ) );
-      return *this;
-    }
-
     DisplayPlaneInfo2KHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -50633,7 +49373,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayPlaneInfo2KHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayPlaneInfo2KHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DisplayModeKHR mode = {};
     uint32_t planeIndex = {};
@@ -50660,23 +49400,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DisplayPlaneCapabilitiesKHR( DisplayPlaneCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DisplayPlaneCapabilitiesKHR( VkDisplayPlaneCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DisplayPlaneCapabilitiesKHR( *reinterpret_cast<DisplayPlaneCapabilitiesKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DisplayPlaneCapabilitiesKHR & operator=( DisplayPlaneCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DisplayPlaneCapabilitiesKHR & operator=( VkDisplayPlaneCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR const *>( &rhs );
       return *this;
     }
 
-    DisplayPlaneCapabilitiesKHR & operator=( DisplayPlaneCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DisplayPlaneCapabilitiesKHR ) );
-      return *this;
-    }
-
 
     operator VkDisplayPlaneCapabilitiesKHR const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -50741,23 +49476,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DisplayPlaneCapabilities2KHR( DisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DisplayPlaneCapabilities2KHR( VkDisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DisplayPlaneCapabilities2KHR( *reinterpret_cast<DisplayPlaneCapabilities2KHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DisplayPlaneCapabilities2KHR & operator=( DisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DisplayPlaneCapabilities2KHR & operator=( VkDisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR const *>( &rhs );
       return *this;
     }
 
-    DisplayPlaneCapabilities2KHR & operator=( DisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DisplayPlaneCapabilities2KHR ) );
-      return *this;
-    }
-
 
     operator VkDisplayPlaneCapabilities2KHR const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -50789,7 +49519,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayPlaneCapabilities2KHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayPlaneCapabilities2KHR;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR capabilities = {};
 
@@ -50815,23 +49545,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DisplayPlanePropertiesKHR( DisplayPlanePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DisplayPlanePropertiesKHR( VkDisplayPlanePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DisplayPlanePropertiesKHR( *reinterpret_cast<DisplayPlanePropertiesKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DisplayPlanePropertiesKHR & operator=( DisplayPlanePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DisplayPlanePropertiesKHR & operator=( VkDisplayPlanePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR const *>( &rhs );
       return *this;
     }
 
-    DisplayPlanePropertiesKHR & operator=( DisplayPlanePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DisplayPlanePropertiesKHR ) );
-      return *this;
-    }
-
 
     operator VkDisplayPlanePropertiesKHR const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -50882,23 +49607,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DisplayPlaneProperties2KHR( DisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DisplayPlaneProperties2KHR( VkDisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DisplayPlaneProperties2KHR( *reinterpret_cast<DisplayPlaneProperties2KHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DisplayPlaneProperties2KHR & operator=( DisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DisplayPlaneProperties2KHR & operator=( VkDisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR const *>( &rhs );
       return *this;
     }
 
-    DisplayPlaneProperties2KHR & operator=( DisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DisplayPlaneProperties2KHR ) );
-      return *this;
-    }
-
 
     operator VkDisplayPlaneProperties2KHR const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -50930,7 +49650,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayPlaneProperties2KHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayPlaneProperties2KHR;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR displayPlaneProperties = {};
 
@@ -50956,23 +49676,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DisplayPropertiesKHR( DisplayPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DisplayPropertiesKHR( VkDisplayPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DisplayPropertiesKHR( *reinterpret_cast<DisplayPropertiesKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DisplayPropertiesKHR & operator=( DisplayPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DisplayPropertiesKHR & operator=( VkDisplayPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR const *>( &rhs );
       return *this;
     }
 
-    DisplayPropertiesKHR & operator=( DisplayPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DisplayPropertiesKHR ) );
-      return *this;
-    }
-
 
     operator VkDisplayPropertiesKHR const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -51033,23 +49748,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DisplayProperties2KHR( DisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DisplayProperties2KHR( VkDisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DisplayProperties2KHR( *reinterpret_cast<DisplayProperties2KHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DisplayProperties2KHR & operator=( DisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DisplayProperties2KHR & operator=( VkDisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayProperties2KHR const *>( &rhs );
       return *this;
     }
 
-    DisplayProperties2KHR & operator=( DisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DisplayProperties2KHR ) );
-      return *this;
-    }
-
 
     operator VkDisplayProperties2KHR const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -51081,7 +49791,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayProperties2KHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayProperties2KHR;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR displayProperties = {};
 
@@ -51108,23 +49818,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalBufferInfo( PhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceExternalBufferInfo( VkPhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceExternalBufferInfo( *reinterpret_cast<PhysicalDeviceExternalBufferInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalBufferInfo & operator=( PhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceExternalBufferInfo & operator=( VkPhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceExternalBufferInfo & operator=( PhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceExternalBufferInfo ) );
-      return *this;
-    }
-
     PhysicalDeviceExternalBufferInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -51182,7 +49887,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalBufferInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalBufferInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::BufferCreateFlags flags = {};
     VULKAN_HPP_NAMESPACE::BufferUsageFlags usage = {};
@@ -51211,23 +49916,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ExternalMemoryProperties( ExternalMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ExternalMemoryProperties( VkExternalMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ExternalMemoryProperties( *reinterpret_cast<ExternalMemoryProperties const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ExternalMemoryProperties & operator=( ExternalMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ExternalMemoryProperties & operator=( VkExternalMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalMemoryProperties const *>( &rhs );
       return *this;
     }
 
-    ExternalMemoryProperties & operator=( ExternalMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ExternalMemoryProperties ) );
-      return *this;
-    }
-
 
     operator VkExternalMemoryProperties const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -51281,23 +49981,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ExternalBufferProperties( ExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ExternalBufferProperties( VkExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ExternalBufferProperties( *reinterpret_cast<ExternalBufferProperties const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ExternalBufferProperties & operator=( ExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ExternalBufferProperties & operator=( VkExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalBufferProperties const *>( &rhs );
       return *this;
     }
 
-    ExternalBufferProperties & operator=( ExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ExternalBufferProperties ) );
-      return *this;
-    }
-
 
     operator VkExternalBufferProperties const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -51329,7 +50024,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalBufferProperties;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalBufferProperties;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::ExternalMemoryProperties externalMemoryProperties = {};
 
@@ -51357,23 +50052,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalFenceInfo( PhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceExternalFenceInfo( VkPhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceExternalFenceInfo( *reinterpret_cast<PhysicalDeviceExternalFenceInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalFenceInfo & operator=( PhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceExternalFenceInfo & operator=( VkPhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceExternalFenceInfo & operator=( PhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceExternalFenceInfo ) );
-      return *this;
-    }
-
     PhysicalDeviceExternalFenceInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -51417,7 +50107,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalFenceInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalFenceInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd;
 
@@ -51445,23 +50135,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ExternalFenceProperties( ExternalFenceProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ExternalFenceProperties( VkExternalFenceProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ExternalFenceProperties( *reinterpret_cast<ExternalFenceProperties const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ExternalFenceProperties & operator=( ExternalFenceProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ExternalFenceProperties & operator=( VkExternalFenceProperties const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalFenceProperties const *>( &rhs );
       return *this;
     }
 
-    ExternalFenceProperties & operator=( ExternalFenceProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ExternalFenceProperties ) );
-      return *this;
-    }
-
 
     operator VkExternalFenceProperties const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -51495,7 +50180,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalFenceProperties;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalFenceProperties;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags exportFromImportedHandleTypes = {};
     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags compatibleHandleTypes = {};
@@ -51524,23 +50209,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImageFormatProperties( ImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImageFormatProperties( VkImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImageFormatProperties( *reinterpret_cast<ImageFormatProperties const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImageFormatProperties & operator=( ImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImageFormatProperties & operator=( VkImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageFormatProperties const *>( &rhs );
       return *this;
     }
 
-    ImageFormatProperties & operator=( ImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImageFormatProperties ) );
-      return *this;
-    }
-
 
     operator VkImageFormatProperties const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -51596,23 +50276,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ExternalImageFormatPropertiesNV( ExternalImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ExternalImageFormatPropertiesNV( VkExternalImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ExternalImageFormatPropertiesNV( *reinterpret_cast<ExternalImageFormatPropertiesNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ExternalImageFormatPropertiesNV & operator=( ExternalImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ExternalImageFormatPropertiesNV & operator=( VkExternalImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV const *>( &rhs );
       return *this;
     }
 
-    ExternalImageFormatPropertiesNV & operator=( ExternalImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ExternalImageFormatPropertiesNV ) );
-      return *this;
-    }
-
 
     operator VkExternalImageFormatPropertiesNV const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -51667,23 +50342,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalSemaphoreInfo( PhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceExternalSemaphoreInfo( VkPhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceExternalSemaphoreInfo( *reinterpret_cast<PhysicalDeviceExternalSemaphoreInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalSemaphoreInfo & operator=( PhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceExternalSemaphoreInfo & operator=( VkPhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceExternalSemaphoreInfo & operator=( PhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceExternalSemaphoreInfo ) );
-      return *this;
-    }
-
     PhysicalDeviceExternalSemaphoreInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -51727,7 +50397,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalSemaphoreInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalSemaphoreInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd;
 
@@ -51755,23 +50425,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ExternalSemaphoreProperties( ExternalSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ExternalSemaphoreProperties( VkExternalSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ExternalSemaphoreProperties( *reinterpret_cast<ExternalSemaphoreProperties const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ExternalSemaphoreProperties & operator=( ExternalSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ExternalSemaphoreProperties & operator=( VkExternalSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties const *>( &rhs );
       return *this;
     }
 
-    ExternalSemaphoreProperties & operator=( ExternalSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ExternalSemaphoreProperties ) );
-      return *this;
-    }
-
 
     operator VkExternalSemaphoreProperties const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -51805,7 +50470,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalSemaphoreProperties;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalSemaphoreProperties;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes = {};
     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags compatibleHandleTypes = {};
@@ -51835,23 +50500,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceFeatures2( PhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceFeatures2( VkPhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceFeatures2( *reinterpret_cast<PhysicalDeviceFeatures2 const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures2 & operator=( PhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceFeatures2 & operator=( VkPhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceFeatures2 & operator=( PhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceFeatures2 ) );
-      return *this;
-    }
-
     PhysicalDeviceFeatures2 & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -51895,7 +50555,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFeatures2;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFeatures2;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures features = {};
 
@@ -51922,23 +50582,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR FormatProperties( FormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     FormatProperties( VkFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : FormatProperties( *reinterpret_cast<FormatProperties const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 FormatProperties & operator=( FormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     FormatProperties & operator=( VkFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FormatProperties const *>( &rhs );
       return *this;
     }
 
-    FormatProperties & operator=( FormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( FormatProperties ) );
-      return *this;
-    }
-
 
     operator VkFormatProperties const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -51991,23 +50646,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR FormatProperties2( FormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     FormatProperties2( VkFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : FormatProperties2( *reinterpret_cast<FormatProperties2 const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 FormatProperties2 & operator=( FormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     FormatProperties2 & operator=( VkFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FormatProperties2 const *>( &rhs );
       return *this;
     }
 
-    FormatProperties2 & operator=( FormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( FormatProperties2 ) );
-      return *this;
-    }
-
 
     operator VkFormatProperties2 const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -52039,7 +50689,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFormatProperties2;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFormatProperties2;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::FormatProperties formatProperties = {};
 
@@ -52067,23 +50717,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateKHR( PhysicalDeviceFragmentShadingRateKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceFragmentShadingRateKHR( VkPhysicalDeviceFragmentShadingRateKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceFragmentShadingRateKHR( *reinterpret_cast<PhysicalDeviceFragmentShadingRateKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateKHR & operator=( PhysicalDeviceFragmentShadingRateKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceFragmentShadingRateKHR & operator=( VkPhysicalDeviceFragmentShadingRateKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceFragmentShadingRateKHR & operator=( PhysicalDeviceFragmentShadingRateKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceFragmentShadingRateKHR ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceFragmentShadingRateKHR const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -52116,7 +50761,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRateKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRateKHR;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::SampleCountFlags sampleCounts = {};
     VULKAN_HPP_NAMESPACE::Extent2D fragmentSize = {};
@@ -52144,23 +50789,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageFormatInfo2( PhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceImageFormatInfo2( VkPhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceImageFormatInfo2( *reinterpret_cast<PhysicalDeviceImageFormatInfo2 const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & operator=( PhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceImageFormatInfo2 & operator=( VkPhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceImageFormatInfo2 & operator=( PhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceImageFormatInfo2 ) );
-      return *this;
-    }
-
     PhysicalDeviceImageFormatInfo2 & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -52232,7 +50872,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceImageFormatInfo2;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceImageFormatInfo2;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined;
     VULKAN_HPP_NAMESPACE::ImageType type = VULKAN_HPP_NAMESPACE::ImageType::e1D;
@@ -52264,23 +50904,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImageFormatProperties2( ImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImageFormatProperties2( VkImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImageFormatProperties2( *reinterpret_cast<ImageFormatProperties2 const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImageFormatProperties2 & operator=( ImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImageFormatProperties2 & operator=( VkImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageFormatProperties2 const *>( &rhs );
       return *this;
     }
 
-    ImageFormatProperties2 & operator=( ImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImageFormatProperties2 ) );
-      return *this;
-    }
-
 
     operator VkImageFormatProperties2 const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -52312,7 +50947,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageFormatProperties2;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageFormatProperties2;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::ImageFormatProperties imageFormatProperties = {};
 
@@ -52339,23 +50974,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR MemoryType( MemoryType const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     MemoryType( VkMemoryType const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : MemoryType( *reinterpret_cast<MemoryType const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 MemoryType & operator=( MemoryType const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     MemoryType & operator=( VkMemoryType const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryType const *>( &rhs );
       return *this;
     }
 
-    MemoryType & operator=( MemoryType const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( MemoryType ) );
-      return *this;
-    }
-
 
     operator VkMemoryType const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -52405,23 +51035,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR MemoryHeap( MemoryHeap const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     MemoryHeap( VkMemoryHeap const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : MemoryHeap( *reinterpret_cast<MemoryHeap const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 MemoryHeap & operator=( MemoryHeap const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     MemoryHeap & operator=( VkMemoryHeap const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryHeap const *>( &rhs );
       return *this;
     }
 
-    MemoryHeap & operator=( MemoryHeap const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( MemoryHeap ) );
-      return *this;
-    }
-
 
     operator VkMemoryHeap const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -52471,23 +51096,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryProperties( PhysicalDeviceMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceMemoryProperties( VkPhysicalDeviceMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceMemoryProperties( *reinterpret_cast<PhysicalDeviceMemoryProperties const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryProperties & operator=( PhysicalDeviceMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceMemoryProperties & operator=( VkPhysicalDeviceMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceMemoryProperties & operator=( PhysicalDeviceMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceMemoryProperties ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceMemoryProperties const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -52542,23 +51162,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryProperties2( PhysicalDeviceMemoryProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceMemoryProperties2( VkPhysicalDeviceMemoryProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceMemoryProperties2( *reinterpret_cast<PhysicalDeviceMemoryProperties2 const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryProperties2 & operator=( PhysicalDeviceMemoryProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceMemoryProperties2 & operator=( VkPhysicalDeviceMemoryProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceMemoryProperties2 & operator=( PhysicalDeviceMemoryProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceMemoryProperties2 ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceMemoryProperties2 const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -52590,7 +51205,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMemoryProperties2;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMemoryProperties2;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties memoryProperties = {};
 
@@ -52618,23 +51233,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR MultisamplePropertiesEXT( MultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     MultisamplePropertiesEXT( VkMultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : MultisamplePropertiesEXT( *reinterpret_cast<MultisamplePropertiesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 MultisamplePropertiesEXT & operator=( MultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     MultisamplePropertiesEXT & operator=( VkMultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT const *>( &rhs );
       return *this;
     }
 
-    MultisamplePropertiesEXT & operator=( MultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( MultisamplePropertiesEXT ) );
-      return *this;
-    }
-
 
     operator VkMultisamplePropertiesEXT const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -52666,7 +51276,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMultisamplePropertiesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMultisamplePropertiesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Extent2D maxSampleLocationGridSize = {};
 
@@ -52692,23 +51302,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLimits( PhysicalDeviceLimits const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceLimits( VkPhysicalDeviceLimits const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceLimits( *reinterpret_cast<PhysicalDeviceLimits const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLimits & operator=( PhysicalDeviceLimits const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceLimits & operator=( VkPhysicalDeviceLimits const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceLimits & operator=( PhysicalDeviceLimits const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceLimits ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceLimits const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -52966,23 +51571,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceSparseProperties( PhysicalDeviceSparseProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceSparseProperties( VkPhysicalDeviceSparseProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceSparseProperties( *reinterpret_cast<PhysicalDeviceSparseProperties const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseProperties & operator=( PhysicalDeviceSparseProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceSparseProperties & operator=( VkPhysicalDeviceSparseProperties const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceSparseProperties & operator=( PhysicalDeviceSparseProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceSparseProperties ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceSparseProperties const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -53038,23 +51638,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProperties( PhysicalDeviceProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceProperties( VkPhysicalDeviceProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceProperties( *reinterpret_cast<PhysicalDeviceProperties const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProperties & operator=( PhysicalDeviceProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceProperties & operator=( VkPhysicalDeviceProperties const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceProperties & operator=( PhysicalDeviceProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceProperties ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceProperties const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -53119,23 +51714,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProperties2( PhysicalDeviceProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceProperties2( VkPhysicalDeviceProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceProperties2( *reinterpret_cast<PhysicalDeviceProperties2 const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProperties2 & operator=( PhysicalDeviceProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceProperties2 & operator=( VkPhysicalDeviceProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceProperties2 & operator=( PhysicalDeviceProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceProperties2 ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceProperties2 const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -53167,7 +51757,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceProperties2;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceProperties2;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties properties = {};
 
@@ -53195,9 +51785,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR QueryPoolPerformanceCreateInfoKHR( QueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     QueryPoolPerformanceCreateInfoKHR( VkQueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : QueryPoolPerformanceCreateInfoKHR( *reinterpret_cast<QueryPoolPerformanceCreateInfoKHR const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     QueryPoolPerformanceCreateInfoKHR( uint32_t queueFamilyIndex_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & counterIndices_ )
@@ -53206,18 +51795,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceCreateInfoKHR & operator=( QueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     QueryPoolPerformanceCreateInfoKHR & operator=( VkQueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR const *>( &rhs );
       return *this;
     }
 
-    QueryPoolPerformanceCreateInfoKHR & operator=( QueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( QueryPoolPerformanceCreateInfoKHR ) );
-      return *this;
-    }
-
     QueryPoolPerformanceCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -53284,7 +51869,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eQueryPoolPerformanceCreateInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eQueryPoolPerformanceCreateInfoKHR;
     const void* pNext = {};
     uint32_t queueFamilyIndex = {};
     uint32_t counterIndexCount = {};
@@ -53312,23 +51897,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR QueueFamilyProperties( QueueFamilyProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     QueueFamilyProperties( VkQueueFamilyProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : QueueFamilyProperties( *reinterpret_cast<QueueFamilyProperties const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 QueueFamilyProperties & operator=( QueueFamilyProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     QueueFamilyProperties & operator=( VkQueueFamilyProperties const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueueFamilyProperties const *>( &rhs );
       return *this;
     }
 
-    QueueFamilyProperties & operator=( QueueFamilyProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( QueueFamilyProperties ) );
-      return *this;
-    }
-
 
     operator VkQueueFamilyProperties const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -53383,23 +51963,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR QueueFamilyProperties2( QueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     QueueFamilyProperties2( VkQueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : QueueFamilyProperties2( *reinterpret_cast<QueueFamilyProperties2 const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 QueueFamilyProperties2 & operator=( QueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     QueueFamilyProperties2 & operator=( VkQueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2 const *>( &rhs );
       return *this;
     }
 
-    QueueFamilyProperties2 & operator=( QueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( QueueFamilyProperties2 ) );
-      return *this;
-    }
-
 
     operator VkQueueFamilyProperties2 const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -53431,7 +52006,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eQueueFamilyProperties2;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eQueueFamilyProperties2;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::QueueFamilyProperties queueFamilyProperties = {};
 
@@ -53459,23 +52034,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceSparseImageFormatInfo2( PhysicalDeviceSparseImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceSparseImageFormatInfo2( VkPhysicalDeviceSparseImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceSparseImageFormatInfo2( *reinterpret_cast<PhysicalDeviceSparseImageFormatInfo2 const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 & operator=( PhysicalDeviceSparseImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceSparseImageFormatInfo2 & operator=( VkPhysicalDeviceSparseImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceSparseImageFormatInfo2 & operator=( PhysicalDeviceSparseImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceSparseImageFormatInfo2 ) );
-      return *this;
-    }
-
     PhysicalDeviceSparseImageFormatInfo2 & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -53547,7 +52117,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSparseImageFormatInfo2;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSparseImageFormatInfo2;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined;
     VULKAN_HPP_NAMESPACE::ImageType type = VULKAN_HPP_NAMESPACE::ImageType::e1D;
@@ -53579,23 +52149,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SparseImageFormatProperties2( SparseImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SparseImageFormatProperties2( VkSparseImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SparseImageFormatProperties2( *reinterpret_cast<SparseImageFormatProperties2 const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SparseImageFormatProperties2 & operator=( SparseImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SparseImageFormatProperties2 & operator=( VkSparseImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2 const *>( &rhs );
       return *this;
     }
 
-    SparseImageFormatProperties2 & operator=( SparseImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SparseImageFormatProperties2 ) );
-      return *this;
-    }
-
 
     operator VkSparseImageFormatProperties2 const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -53627,7 +52192,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSparseImageFormatProperties2;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSparseImageFormatProperties2;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::SparseImageFormatProperties properties = {};
 
@@ -53655,23 +52220,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR FramebufferMixedSamplesCombinationNV( FramebufferMixedSamplesCombinationNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     FramebufferMixedSamplesCombinationNV( VkFramebufferMixedSamplesCombinationNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : FramebufferMixedSamplesCombinationNV( *reinterpret_cast<FramebufferMixedSamplesCombinationNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 FramebufferMixedSamplesCombinationNV & operator=( FramebufferMixedSamplesCombinationNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     FramebufferMixedSamplesCombinationNV & operator=( VkFramebufferMixedSamplesCombinationNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV const *>( &rhs );
       return *this;
     }
 
-    FramebufferMixedSamplesCombinationNV & operator=( FramebufferMixedSamplesCombinationNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( FramebufferMixedSamplesCombinationNV ) );
-      return *this;
-    }
-
 
     operator VkFramebufferMixedSamplesCombinationNV const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -53706,7 +52266,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFramebufferMixedSamplesCombinationNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFramebufferMixedSamplesCombinationNV;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::CoverageReductionModeNV coverageReductionMode = VULKAN_HPP_NAMESPACE::CoverageReductionModeNV::eMerge;
     VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
@@ -53736,23 +52296,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SurfaceCapabilities2EXT( SurfaceCapabilities2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SurfaceCapabilities2EXT( VkSurfaceCapabilities2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SurfaceCapabilities2EXT( *reinterpret_cast<SurfaceCapabilities2EXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SurfaceCapabilities2EXT & operator=( SurfaceCapabilities2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SurfaceCapabilities2EXT & operator=( VkSurfaceCapabilities2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT const *>( &rhs );
       return *this;
     }
 
-    SurfaceCapabilities2EXT & operator=( SurfaceCapabilities2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SurfaceCapabilities2EXT ) );
-      return *this;
-    }
-
 
     operator VkSurfaceCapabilities2EXT const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -53794,7 +52349,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceCapabilities2EXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceCapabilities2EXT;
     void* pNext = {};
     uint32_t minImageCount = {};
     uint32_t maxImageCount = {};
@@ -53830,23 +52385,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesKHR( SurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SurfaceCapabilitiesKHR( VkSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SurfaceCapabilitiesKHR( *reinterpret_cast<SurfaceCapabilitiesKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SurfaceCapabilitiesKHR & operator=( SurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SurfaceCapabilitiesKHR & operator=( VkSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR const *>( &rhs );
       return *this;
     }
 
-    SurfaceCapabilitiesKHR & operator=( SurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SurfaceCapabilitiesKHR ) );
-      return *this;
-    }
-
 
     operator VkSurfaceCapabilitiesKHR const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -53913,23 +52463,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SurfaceCapabilities2KHR( SurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SurfaceCapabilities2KHR( VkSurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SurfaceCapabilities2KHR( *reinterpret_cast<SurfaceCapabilities2KHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SurfaceCapabilities2KHR & operator=( SurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SurfaceCapabilities2KHR & operator=( VkSurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR const *>( &rhs );
       return *this;
     }
 
-    SurfaceCapabilities2KHR & operator=( SurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SurfaceCapabilities2KHR ) );
-      return *this;
-    }
-
 
     operator VkSurfaceCapabilities2KHR const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -53961,7 +52506,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceCapabilities2KHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceCapabilities2KHR;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR surfaceCapabilities = {};
 
@@ -53987,23 +52532,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SurfaceFormatKHR( SurfaceFormatKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SurfaceFormatKHR( VkSurfaceFormatKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SurfaceFormatKHR( *reinterpret_cast<SurfaceFormatKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SurfaceFormatKHR & operator=( SurfaceFormatKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SurfaceFormatKHR & operator=( VkSurfaceFormatKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceFormatKHR const *>( &rhs );
       return *this;
     }
 
-    SurfaceFormatKHR & operator=( SurfaceFormatKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SurfaceFormatKHR ) );
-      return *this;
-    }
-
 
     operator VkSurfaceFormatKHR const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -54054,23 +52594,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SurfaceFormat2KHR( SurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SurfaceFormat2KHR( VkSurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SurfaceFormat2KHR( *reinterpret_cast<SurfaceFormat2KHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SurfaceFormat2KHR & operator=( SurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SurfaceFormat2KHR & operator=( VkSurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR const *>( &rhs );
       return *this;
     }
 
-    SurfaceFormat2KHR & operator=( SurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SurfaceFormat2KHR ) );
-      return *this;
-    }
-
 
     operator VkSurfaceFormat2KHR const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -54102,7 +52637,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceFormat2KHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceFormat2KHR;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::SurfaceFormatKHR surfaceFormat = {};
 
@@ -54129,23 +52664,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceToolPropertiesEXT( PhysicalDeviceToolPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceToolPropertiesEXT( VkPhysicalDeviceToolPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceToolPropertiesEXT( *reinterpret_cast<PhysicalDeviceToolPropertiesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceToolPropertiesEXT & operator=( PhysicalDeviceToolPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceToolPropertiesEXT & operator=( VkPhysicalDeviceToolPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceToolPropertiesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceToolPropertiesEXT & operator=( PhysicalDeviceToolPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceToolPropertiesEXT ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceToolPropertiesEXT const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -54181,7 +52711,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceToolPropertiesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceToolPropertiesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> name = {};
     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> version = {};
@@ -54973,9 +53503,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DeviceGroupDeviceCreateInfo( DeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DeviceGroupDeviceCreateInfo( VkDeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DeviceGroupDeviceCreateInfo( *reinterpret_cast<DeviceGroupDeviceCreateInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     DeviceGroupDeviceCreateInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PhysicalDevice> const & physicalDevices_ )
@@ -54984,18 +53513,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DeviceGroupDeviceCreateInfo & operator=( DeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DeviceGroupDeviceCreateInfo & operator=( VkDeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo const *>( &rhs );
       return *this;
     }
 
-    DeviceGroupDeviceCreateInfo & operator=( DeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DeviceGroupDeviceCreateInfo ) );
-      return *this;
-    }
-
     DeviceGroupDeviceCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -55055,7 +53580,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupDeviceCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupDeviceCreateInfo;
     const void* pNext = {};
     uint32_t physicalDeviceCount = {};
     const VULKAN_HPP_NAMESPACE::PhysicalDevice* pPhysicalDevices = {};
@@ -55084,9 +53609,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DeviceGroupPresentInfoKHR( DeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DeviceGroupPresentInfoKHR( VkDeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DeviceGroupPresentInfoKHR( *reinterpret_cast<DeviceGroupPresentInfoKHR const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     DeviceGroupPresentInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceMasks_, VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR mode_ = VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR::eLocal )
@@ -55095,18 +53619,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentInfoKHR & operator=( DeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DeviceGroupPresentInfoKHR & operator=( VkDeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR const *>( &rhs );
       return *this;
     }
 
-    DeviceGroupPresentInfoKHR & operator=( DeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DeviceGroupPresentInfoKHR ) );
-      return *this;
-    }
-
     DeviceGroupPresentInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -55173,7 +53693,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupPresentInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupPresentInfoKHR;
     const void* pNext = {};
     uint32_t swapchainCount = {};
     const uint32_t* pDeviceMasks = {};
@@ -55202,9 +53722,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DeviceGroupRenderPassBeginInfo( DeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DeviceGroupRenderPassBeginInfo( VkDeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DeviceGroupRenderPassBeginInfo( *reinterpret_cast<DeviceGroupRenderPassBeginInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     DeviceGroupRenderPassBeginInfo( uint32_t deviceMask_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & deviceRenderAreas_ )
@@ -55213,18 +53732,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DeviceGroupRenderPassBeginInfo & operator=( DeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DeviceGroupRenderPassBeginInfo & operator=( VkDeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo const *>( &rhs );
       return *this;
     }
 
-    DeviceGroupRenderPassBeginInfo & operator=( DeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DeviceGroupRenderPassBeginInfo ) );
-      return *this;
-    }
-
     DeviceGroupRenderPassBeginInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -55291,7 +53806,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupRenderPassBeginInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupRenderPassBeginInfo;
     const void* pNext = {};
     uint32_t deviceMask = {};
     uint32_t deviceRenderAreaCount = {};
@@ -55321,9 +53836,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DeviceGroupSubmitInfo( DeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DeviceGroupSubmitInfo( VkDeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DeviceGroupSubmitInfo( *reinterpret_cast<DeviceGroupSubmitInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     DeviceGroupSubmitInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & waitSemaphoreDeviceIndices_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & commandBufferDeviceMasks_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & signalSemaphoreDeviceIndices_ = {} )
@@ -55332,18 +53846,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & operator=( DeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DeviceGroupSubmitInfo & operator=( VkDeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo const *>( &rhs );
       return *this;
     }
 
-    DeviceGroupSubmitInfo & operator=( DeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DeviceGroupSubmitInfo ) );
-      return *this;
-    }
-
     DeviceGroupSubmitInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -55449,7 +53959,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupSubmitInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupSubmitInfo;
     const void* pNext = {};
     uint32_t waitSemaphoreCount = {};
     const uint32_t* pWaitSemaphoreDeviceIndices = {};
@@ -55482,23 +53992,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DeviceGroupSwapchainCreateInfoKHR( DeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DeviceGroupSwapchainCreateInfoKHR( VkDeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DeviceGroupSwapchainCreateInfoKHR( *reinterpret_cast<DeviceGroupSwapchainCreateInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DeviceGroupSwapchainCreateInfoKHR & operator=( DeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DeviceGroupSwapchainCreateInfoKHR & operator=( VkDeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR const *>( &rhs );
       return *this;
     }
 
-    DeviceGroupSwapchainCreateInfoKHR & operator=( DeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DeviceGroupSwapchainCreateInfoKHR ) );
-      return *this;
-    }
-
     DeviceGroupSwapchainCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -55542,7 +54047,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupSwapchainCreateInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupSwapchainCreateInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes = {};
 
@@ -55569,23 +54074,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DeviceMemoryOverallocationCreateInfoAMD( DeviceMemoryOverallocationCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DeviceMemoryOverallocationCreateInfoAMD( VkDeviceMemoryOverallocationCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DeviceMemoryOverallocationCreateInfoAMD( *reinterpret_cast<DeviceMemoryOverallocationCreateInfoAMD const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DeviceMemoryOverallocationCreateInfoAMD & operator=( DeviceMemoryOverallocationCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DeviceMemoryOverallocationCreateInfoAMD & operator=( VkDeviceMemoryOverallocationCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD const *>( &rhs );
       return *this;
     }
 
-    DeviceMemoryOverallocationCreateInfoAMD & operator=( DeviceMemoryOverallocationCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DeviceMemoryOverallocationCreateInfoAMD ) );
-      return *this;
-    }
-
     DeviceMemoryOverallocationCreateInfoAMD & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -55629,7 +54129,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceMemoryOverallocationCreateInfoAMD;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceMemoryOverallocationCreateInfoAMD;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::MemoryOverallocationBehaviorAMD overallocationBehavior = VULKAN_HPP_NAMESPACE::MemoryOverallocationBehaviorAMD::eDefault;
 
@@ -55656,23 +54156,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DeviceMemoryReportCallbackDataEXT( DeviceMemoryReportCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DeviceMemoryReportCallbackDataEXT( VkDeviceMemoryReportCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DeviceMemoryReportCallbackDataEXT( *reinterpret_cast<DeviceMemoryReportCallbackDataEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DeviceMemoryReportCallbackDataEXT & operator=( DeviceMemoryReportCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DeviceMemoryReportCallbackDataEXT & operator=( VkDeviceMemoryReportCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT const *>( &rhs );
       return *this;
     }
 
-    DeviceMemoryReportCallbackDataEXT & operator=( DeviceMemoryReportCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DeviceMemoryReportCallbackDataEXT ) );
-      return *this;
-    }
-
 
     operator VkDeviceMemoryReportCallbackDataEXT const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -55710,7 +54205,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceMemoryReportCallbackDataEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceMemoryReportCallbackDataEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT flags = {};
     VULKAN_HPP_NAMESPACE::DeviceMemoryReportEventTypeEXT type = VULKAN_HPP_NAMESPACE::DeviceMemoryReportEventTypeEXT::eAllocate;
@@ -55743,23 +54238,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DevicePrivateDataCreateInfoEXT( DevicePrivateDataCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DevicePrivateDataCreateInfoEXT( VkDevicePrivateDataCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DevicePrivateDataCreateInfoEXT( *reinterpret_cast<DevicePrivateDataCreateInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DevicePrivateDataCreateInfoEXT & operator=( DevicePrivateDataCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DevicePrivateDataCreateInfoEXT & operator=( VkDevicePrivateDataCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfoEXT const *>( &rhs );
       return *this;
     }
 
-    DevicePrivateDataCreateInfoEXT & operator=( DevicePrivateDataCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DevicePrivateDataCreateInfoEXT ) );
-      return *this;
-    }
-
     DevicePrivateDataCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -55803,7 +54293,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDevicePrivateDataCreateInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDevicePrivateDataCreateInfoEXT;
     const void* pNext = {};
     uint32_t privateDataSlotRequestCount = {};
 
@@ -55830,23 +54320,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DeviceQueueGlobalPriorityCreateInfoEXT( DeviceQueueGlobalPriorityCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DeviceQueueGlobalPriorityCreateInfoEXT( VkDeviceQueueGlobalPriorityCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DeviceQueueGlobalPriorityCreateInfoEXT( *reinterpret_cast<DeviceQueueGlobalPriorityCreateInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DeviceQueueGlobalPriorityCreateInfoEXT & operator=( DeviceQueueGlobalPriorityCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DeviceQueueGlobalPriorityCreateInfoEXT & operator=( VkDeviceQueueGlobalPriorityCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfoEXT const *>( &rhs );
       return *this;
     }
 
-    DeviceQueueGlobalPriorityCreateInfoEXT & operator=( DeviceQueueGlobalPriorityCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DeviceQueueGlobalPriorityCreateInfoEXT ) );
-      return *this;
-    }
-
     DeviceQueueGlobalPriorityCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -55890,7 +54375,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceQueueGlobalPriorityCreateInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceQueueGlobalPriorityCreateInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT globalPriority = VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT::eLow;
 
@@ -55918,23 +54403,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DirectFBSurfaceCreateInfoEXT( DirectFBSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DirectFBSurfaceCreateInfoEXT( VkDirectFBSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DirectFBSurfaceCreateInfoEXT( *reinterpret_cast<DirectFBSurfaceCreateInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DirectFBSurfaceCreateInfoEXT & operator=( DirectFBSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DirectFBSurfaceCreateInfoEXT & operator=( VkDirectFBSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT const *>( &rhs );
       return *this;
     }
 
-    DirectFBSurfaceCreateInfoEXT & operator=( DirectFBSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DirectFBSurfaceCreateInfoEXT ) );
-      return *this;
-    }
-
     DirectFBSurfaceCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -55992,7 +54472,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDirectfbSurfaceCreateInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDirectfbSurfaceCreateInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateFlagsEXT flags = {};
     IDirectFB* dfb = {};
@@ -56021,23 +54501,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DispatchIndirectCommand( DispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DispatchIndirectCommand( VkDispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DispatchIndirectCommand( *reinterpret_cast<DispatchIndirectCommand const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DispatchIndirectCommand & operator=( DispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DispatchIndirectCommand & operator=( VkDispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DispatchIndirectCommand const *>( &rhs );
       return *this;
     }
 
-    DispatchIndirectCommand & operator=( DispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DispatchIndirectCommand ) );
-      return *this;
-    }
-
     DispatchIndirectCommand & setX( uint32_t x_ ) VULKAN_HPP_NOEXCEPT
     {
       x = x_;
@@ -56108,23 +54583,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DisplayNativeHdrSurfaceCapabilitiesAMD( DisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DisplayNativeHdrSurfaceCapabilitiesAMD( VkDisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DisplayNativeHdrSurfaceCapabilitiesAMD( *reinterpret_cast<DisplayNativeHdrSurfaceCapabilitiesAMD const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DisplayNativeHdrSurfaceCapabilitiesAMD & operator=( DisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DisplayNativeHdrSurfaceCapabilitiesAMD & operator=( VkDisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD const *>( &rhs );
       return *this;
     }
 
-    DisplayNativeHdrSurfaceCapabilitiesAMD & operator=( DisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DisplayNativeHdrSurfaceCapabilitiesAMD ) );
-      return *this;
-    }
-
 
     operator VkDisplayNativeHdrSurfaceCapabilitiesAMD const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -56156,7 +54626,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayNativeHdrSurfaceCapabilitiesAMD;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayNativeHdrSurfaceCapabilitiesAMD;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 localDimmingSupport = {};
 
@@ -56183,23 +54653,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DisplayPresentInfoKHR( DisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DisplayPresentInfoKHR( VkDisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DisplayPresentInfoKHR( *reinterpret_cast<DisplayPresentInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DisplayPresentInfoKHR & operator=( DisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DisplayPresentInfoKHR & operator=( VkDisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR const *>( &rhs );
       return *this;
     }
 
-    DisplayPresentInfoKHR & operator=( DisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DisplayPresentInfoKHR ) );
-      return *this;
-    }
-
     DisplayPresentInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -56257,7 +54722,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayPresentInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayPresentInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Rect2D srcRect = {};
     VULKAN_HPP_NAMESPACE::Rect2D dstRect = {};
@@ -56286,23 +54751,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DisplaySurfaceCreateInfoKHR( DisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DisplaySurfaceCreateInfoKHR( VkDisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DisplaySurfaceCreateInfoKHR( *reinterpret_cast<DisplaySurfaceCreateInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & operator=( DisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DisplaySurfaceCreateInfoKHR & operator=( VkDisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR const *>( &rhs );
       return *this;
     }
 
-    DisplaySurfaceCreateInfoKHR & operator=( DisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DisplaySurfaceCreateInfoKHR ) );
-      return *this;
-    }
-
     DisplaySurfaceCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -56395,7 +54855,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplaySurfaceCreateInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplaySurfaceCreateInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateFlagsKHR flags = {};
     VULKAN_HPP_NAMESPACE::DisplayModeKHR displayMode = {};
@@ -56428,23 +54888,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DrawIndexedIndirectCommand( DrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DrawIndexedIndirectCommand( VkDrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DrawIndexedIndirectCommand( *reinterpret_cast<DrawIndexedIndirectCommand const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & operator=( DrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DrawIndexedIndirectCommand & operator=( VkDrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand const *>( &rhs );
       return *this;
     }
 
-    DrawIndexedIndirectCommand & operator=( DrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DrawIndexedIndirectCommand ) );
-      return *this;
-    }
-
     DrawIndexedIndirectCommand & setIndexCount( uint32_t indexCount_ ) VULKAN_HPP_NOEXCEPT
     {
       indexCount = indexCount_;
@@ -56530,23 +54985,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DrawIndirectCommand( DrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DrawIndirectCommand( VkDrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DrawIndirectCommand( *reinterpret_cast<DrawIndirectCommand const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DrawIndirectCommand & operator=( DrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DrawIndirectCommand & operator=( VkDrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrawIndirectCommand const *>( &rhs );
       return *this;
     }
 
-    DrawIndirectCommand & operator=( DrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DrawIndirectCommand ) );
-      return *this;
-    }
-
     DrawIndirectCommand & setVertexCount( uint32_t vertexCount_ ) VULKAN_HPP_NOEXCEPT
     {
       vertexCount = vertexCount_;
@@ -56624,23 +55074,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DrawMeshTasksIndirectCommandNV( DrawMeshTasksIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DrawMeshTasksIndirectCommandNV( VkDrawMeshTasksIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DrawMeshTasksIndirectCommandNV( *reinterpret_cast<DrawMeshTasksIndirectCommandNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DrawMeshTasksIndirectCommandNV & operator=( DrawMeshTasksIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DrawMeshTasksIndirectCommandNV & operator=( VkDrawMeshTasksIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV const *>( &rhs );
       return *this;
     }
 
-    DrawMeshTasksIndirectCommandNV & operator=( DrawMeshTasksIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DrawMeshTasksIndirectCommandNV ) );
-      return *this;
-    }
-
     DrawMeshTasksIndirectCommandNV & setTaskCount( uint32_t taskCount_ ) VULKAN_HPP_NOEXCEPT
     {
       taskCount = taskCount_;
@@ -56702,23 +55147,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesEXT( DrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DrmFormatModifierPropertiesEXT( VkDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DrmFormatModifierPropertiesEXT( *reinterpret_cast<DrmFormatModifierPropertiesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DrmFormatModifierPropertiesEXT & operator=( DrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DrmFormatModifierPropertiesEXT & operator=( VkDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT const *>( &rhs );
       return *this;
     }
 
-    DrmFormatModifierPropertiesEXT & operator=( DrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DrmFormatModifierPropertiesEXT ) );
-      return *this;
-    }
-
 
     operator VkDrmFormatModifierPropertiesEXT const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -56771,9 +55211,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesListEXT( DrmFormatModifierPropertiesListEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     DrmFormatModifierPropertiesListEXT( VkDrmFormatModifierPropertiesListEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : DrmFormatModifierPropertiesListEXT( *reinterpret_cast<DrmFormatModifierPropertiesListEXT const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     DrmFormatModifierPropertiesListEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT> const & drmFormatModifierProperties_ )
@@ -56782,18 +55221,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 DrmFormatModifierPropertiesListEXT & operator=( DrmFormatModifierPropertiesListEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     DrmFormatModifierPropertiesListEXT & operator=( VkDrmFormatModifierPropertiesListEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT const *>( &rhs );
       return *this;
     }
 
-    DrmFormatModifierPropertiesListEXT & operator=( DrmFormatModifierPropertiesListEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( DrmFormatModifierPropertiesListEXT ) );
-      return *this;
-    }
-
 
     operator VkDrmFormatModifierPropertiesListEXT const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -56826,7 +55261,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDrmFormatModifierPropertiesListEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDrmFormatModifierPropertiesListEXT;
     void* pNext = {};
     uint32_t drmFormatModifierCount = {};
     VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT* pDrmFormatModifierProperties = {};
@@ -56854,23 +55289,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ExportFenceCreateInfo( ExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ExportFenceCreateInfo( VkExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ExportFenceCreateInfo( *reinterpret_cast<ExportFenceCreateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ExportFenceCreateInfo & operator=( ExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ExportFenceCreateInfo & operator=( VkExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo const *>( &rhs );
       return *this;
     }
 
-    ExportFenceCreateInfo & operator=( ExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ExportFenceCreateInfo ) );
-      return *this;
-    }
-
     ExportFenceCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -56914,7 +55344,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportFenceCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportFenceCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags handleTypes = {};
 
@@ -56943,23 +55373,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ExportFenceWin32HandleInfoKHR( ExportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ExportFenceWin32HandleInfoKHR( VkExportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ExportFenceWin32HandleInfoKHR( *reinterpret_cast<ExportFenceWin32HandleInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ExportFenceWin32HandleInfoKHR & operator=( ExportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ExportFenceWin32HandleInfoKHR & operator=( VkExportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR const *>( &rhs );
       return *this;
     }
 
-    ExportFenceWin32HandleInfoKHR & operator=( ExportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ExportFenceWin32HandleInfoKHR ) );
-      return *this;
-    }
-
     ExportFenceWin32HandleInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -57017,7 +55442,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportFenceWin32HandleInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportFenceWin32HandleInfoKHR;
     const void* pNext = {};
     const SECURITY_ATTRIBUTES* pAttributes = {};
     DWORD dwAccess = {};
@@ -57047,23 +55472,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ExportMemoryAllocateInfo( ExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ExportMemoryAllocateInfo( VkExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ExportMemoryAllocateInfo( *reinterpret_cast<ExportMemoryAllocateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ExportMemoryAllocateInfo & operator=( ExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ExportMemoryAllocateInfo & operator=( VkExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo const *>( &rhs );
       return *this;
     }
 
-    ExportMemoryAllocateInfo & operator=( ExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ExportMemoryAllocateInfo ) );
-      return *this;
-    }
-
     ExportMemoryAllocateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -57107,7 +55527,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportMemoryAllocateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportMemoryAllocateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes = {};
 
@@ -57135,23 +55555,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ExportMemoryAllocateInfoNV( ExportMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ExportMemoryAllocateInfoNV( VkExportMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ExportMemoryAllocateInfoNV( *reinterpret_cast<ExportMemoryAllocateInfoNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ExportMemoryAllocateInfoNV & operator=( ExportMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ExportMemoryAllocateInfoNV & operator=( VkExportMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV const *>( &rhs );
       return *this;
     }
 
-    ExportMemoryAllocateInfoNV & operator=( ExportMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ExportMemoryAllocateInfoNV ) );
-      return *this;
-    }
-
     ExportMemoryAllocateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -57195,7 +55610,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportMemoryAllocateInfoNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportMemoryAllocateInfoNV;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes = {};
 
@@ -57223,23 +55638,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ExportMemoryWin32HandleInfoKHR( ExportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ExportMemoryWin32HandleInfoKHR( VkExportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ExportMemoryWin32HandleInfoKHR( *reinterpret_cast<ExportMemoryWin32HandleInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoKHR & operator=( ExportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ExportMemoryWin32HandleInfoKHR & operator=( VkExportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR const *>( &rhs );
       return *this;
     }
 
-    ExportMemoryWin32HandleInfoKHR & operator=( ExportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ExportMemoryWin32HandleInfoKHR ) );
-      return *this;
-    }
-
     ExportMemoryWin32HandleInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -57297,7 +55707,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportMemoryWin32HandleInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportMemoryWin32HandleInfoKHR;
     const void* pNext = {};
     const SECURITY_ATTRIBUTES* pAttributes = {};
     DWORD dwAccess = {};
@@ -57328,23 +55738,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ExportMemoryWin32HandleInfoNV( ExportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ExportMemoryWin32HandleInfoNV( VkExportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ExportMemoryWin32HandleInfoNV( *reinterpret_cast<ExportMemoryWin32HandleInfoNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoNV & operator=( ExportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ExportMemoryWin32HandleInfoNV & operator=( VkExportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV const *>( &rhs );
       return *this;
     }
 
-    ExportMemoryWin32HandleInfoNV & operator=( ExportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ExportMemoryWin32HandleInfoNV ) );
-      return *this;
-    }
-
     ExportMemoryWin32HandleInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -57395,7 +55800,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportMemoryWin32HandleInfoNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportMemoryWin32HandleInfoNV;
     const void* pNext = {};
     const SECURITY_ATTRIBUTES* pAttributes = {};
     DWORD dwAccess = {};
@@ -57424,23 +55829,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ExportSemaphoreCreateInfo( ExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ExportSemaphoreCreateInfo( VkExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ExportSemaphoreCreateInfo( *reinterpret_cast<ExportSemaphoreCreateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreCreateInfo & operator=( ExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ExportSemaphoreCreateInfo & operator=( VkExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo const *>( &rhs );
       return *this;
     }
 
-    ExportSemaphoreCreateInfo & operator=( ExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ExportSemaphoreCreateInfo ) );
-      return *this;
-    }
-
     ExportSemaphoreCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -57484,7 +55884,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportSemaphoreCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportSemaphoreCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags handleTypes = {};
 
@@ -57513,23 +55913,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ExportSemaphoreWin32HandleInfoKHR( ExportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ExportSemaphoreWin32HandleInfoKHR( VkExportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ExportSemaphoreWin32HandleInfoKHR( *reinterpret_cast<ExportSemaphoreWin32HandleInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreWin32HandleInfoKHR & operator=( ExportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ExportSemaphoreWin32HandleInfoKHR & operator=( VkExportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR const *>( &rhs );
       return *this;
     }
 
-    ExportSemaphoreWin32HandleInfoKHR & operator=( ExportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ExportSemaphoreWin32HandleInfoKHR ) );
-      return *this;
-    }
-
     ExportSemaphoreWin32HandleInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -57587,7 +55982,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportSemaphoreWin32HandleInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportSemaphoreWin32HandleInfoKHR;
     const void* pNext = {};
     const SECURITY_ATTRIBUTES* pAttributes = {};
     DWORD dwAccess = {};
@@ -57618,23 +56013,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ExternalFormatANDROID( ExternalFormatANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ExternalFormatANDROID( VkExternalFormatANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ExternalFormatANDROID( *reinterpret_cast<ExternalFormatANDROID const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ExternalFormatANDROID & operator=( ExternalFormatANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ExternalFormatANDROID & operator=( VkExternalFormatANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalFormatANDROID const *>( &rhs );
       return *this;
     }
 
-    ExternalFormatANDROID & operator=( ExternalFormatANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ExternalFormatANDROID ) );
-      return *this;
-    }
-
     ExternalFormatANDROID & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -57678,7 +56068,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalFormatANDROID;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalFormatANDROID;
     void* pNext = {};
     uint64_t externalFormat = {};
 
@@ -57706,23 +56096,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ExternalImageFormatProperties( ExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ExternalImageFormatProperties( VkExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ExternalImageFormatProperties( *reinterpret_cast<ExternalImageFormatProperties const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ExternalImageFormatProperties & operator=( ExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ExternalImageFormatProperties & operator=( VkExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties const *>( &rhs );
       return *this;
     }
 
-    ExternalImageFormatProperties & operator=( ExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ExternalImageFormatProperties ) );
-      return *this;
-    }
-
 
     operator VkExternalImageFormatProperties const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -57754,7 +56139,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalImageFormatProperties;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalImageFormatProperties;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::ExternalMemoryProperties externalMemoryProperties = {};
 
@@ -57782,23 +56167,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ExternalMemoryBufferCreateInfo( ExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ExternalMemoryBufferCreateInfo( VkExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ExternalMemoryBufferCreateInfo( *reinterpret_cast<ExternalMemoryBufferCreateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ExternalMemoryBufferCreateInfo & operator=( ExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ExternalMemoryBufferCreateInfo & operator=( VkExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo const *>( &rhs );
       return *this;
     }
 
-    ExternalMemoryBufferCreateInfo & operator=( ExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ExternalMemoryBufferCreateInfo ) );
-      return *this;
-    }
-
     ExternalMemoryBufferCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -57842,7 +56222,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalMemoryBufferCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalMemoryBufferCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes = {};
 
@@ -57870,23 +56250,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ExternalMemoryImageCreateInfo( ExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ExternalMemoryImageCreateInfo( VkExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ExternalMemoryImageCreateInfo( *reinterpret_cast<ExternalMemoryImageCreateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ExternalMemoryImageCreateInfo & operator=( ExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ExternalMemoryImageCreateInfo & operator=( VkExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo const *>( &rhs );
       return *this;
     }
 
-    ExternalMemoryImageCreateInfo & operator=( ExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ExternalMemoryImageCreateInfo ) );
-      return *this;
-    }
-
     ExternalMemoryImageCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -57930,7 +56305,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalMemoryImageCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalMemoryImageCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes = {};
 
@@ -57958,23 +56333,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ExternalMemoryImageCreateInfoNV( ExternalMemoryImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ExternalMemoryImageCreateInfoNV( VkExternalMemoryImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ExternalMemoryImageCreateInfoNV( *reinterpret_cast<ExternalMemoryImageCreateInfoNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ExternalMemoryImageCreateInfoNV & operator=( ExternalMemoryImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ExternalMemoryImageCreateInfoNV & operator=( VkExternalMemoryImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV const *>( &rhs );
       return *this;
     }
 
-    ExternalMemoryImageCreateInfoNV & operator=( ExternalMemoryImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ExternalMemoryImageCreateInfoNV ) );
-      return *this;
-    }
-
     ExternalMemoryImageCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -58018,7 +56388,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalMemoryImageCreateInfoNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalMemoryImageCreateInfoNV;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes = {};
 
@@ -58045,23 +56415,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR FilterCubicImageViewImageFormatPropertiesEXT( FilterCubicImageViewImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     FilterCubicImageViewImageFormatPropertiesEXT( VkFilterCubicImageViewImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : FilterCubicImageViewImageFormatPropertiesEXT( *reinterpret_cast<FilterCubicImageViewImageFormatPropertiesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 FilterCubicImageViewImageFormatPropertiesEXT & operator=( FilterCubicImageViewImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     FilterCubicImageViewImageFormatPropertiesEXT & operator=( VkFilterCubicImageViewImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT const *>( &rhs );
       return *this;
     }
 
-    FilterCubicImageViewImageFormatPropertiesEXT & operator=( FilterCubicImageViewImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( FilterCubicImageViewImageFormatPropertiesEXT ) );
-      return *this;
-    }
-
 
     operator VkFilterCubicImageViewImageFormatPropertiesEXT const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -58094,7 +56459,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFilterCubicImageViewImageFormatPropertiesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFilterCubicImageViewImageFormatPropertiesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 filterCubic = {};
     VULKAN_HPP_NAMESPACE::Bool32 filterCubicMinmax = {};
@@ -58122,23 +56487,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR FragmentShadingRateAttachmentInfoKHR( FragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     FragmentShadingRateAttachmentInfoKHR( VkFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : FragmentShadingRateAttachmentInfoKHR( *reinterpret_cast<FragmentShadingRateAttachmentInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 FragmentShadingRateAttachmentInfoKHR & operator=( FragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     FragmentShadingRateAttachmentInfoKHR & operator=( VkFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR const *>( &rhs );
       return *this;
     }
 
-    FragmentShadingRateAttachmentInfoKHR & operator=( FragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( FragmentShadingRateAttachmentInfoKHR ) );
-      return *this;
-    }
-
     FragmentShadingRateAttachmentInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -58189,7 +56549,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFragmentShadingRateAttachmentInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFragmentShadingRateAttachmentInfoKHR;
     const void* pNext = {};
     const VULKAN_HPP_NAMESPACE::AttachmentReference2* pFragmentShadingRateAttachment = {};
     VULKAN_HPP_NAMESPACE::Extent2D shadingRateAttachmentTexelSize = {};
@@ -58217,9 +56577,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR FramebufferAttachmentImageInfo( FramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     FramebufferAttachmentImageInfo( VkFramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : FramebufferAttachmentImageInfo( *reinterpret_cast<FramebufferAttachmentImageInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     FramebufferAttachmentImageInfo( VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_, VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_, uint32_t width_, uint32_t height_, uint32_t layerCount_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & viewFormats_ )
@@ -58228,18 +56587,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & operator=( FramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     FramebufferAttachmentImageInfo & operator=( VkFramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo const *>( &rhs );
       return *this;
     }
 
-    FramebufferAttachmentImageInfo & operator=( FramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( FramebufferAttachmentImageInfo ) );
-      return *this;
-    }
-
     FramebufferAttachmentImageInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -58334,7 +56689,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFramebufferAttachmentImageInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFramebufferAttachmentImageInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ImageCreateFlags flags = {};
     VULKAN_HPP_NAMESPACE::ImageUsageFlags usage = {};
@@ -58368,9 +56723,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR FramebufferAttachmentsCreateInfo( FramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     FramebufferAttachmentsCreateInfo( VkFramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : FramebufferAttachmentsCreateInfo( *reinterpret_cast<FramebufferAttachmentsCreateInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     FramebufferAttachmentsCreateInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo> const & attachmentImageInfos_ )
@@ -58379,18 +56733,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentsCreateInfo & operator=( FramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     FramebufferAttachmentsCreateInfo & operator=( VkFramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo const *>( &rhs );
       return *this;
     }
 
-    FramebufferAttachmentsCreateInfo & operator=( FramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( FramebufferAttachmentsCreateInfo ) );
-      return *this;
-    }
-
     FramebufferAttachmentsCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -58450,7 +56800,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFramebufferAttachmentsCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFramebufferAttachmentsCreateInfo;
     const void* pNext = {};
     uint32_t attachmentImageInfoCount = {};
     const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo* pAttachmentImageInfos = {};
@@ -58479,9 +56829,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR GraphicsShaderGroupCreateInfoNV( GraphicsShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     GraphicsShaderGroupCreateInfoNV( VkGraphicsShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : GraphicsShaderGroupCreateInfoNV( *reinterpret_cast<GraphicsShaderGroupCreateInfoNV const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     GraphicsShaderGroupCreateInfoNV( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const & stages_, const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo* pVertexInputState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo* pTessellationState_ = {} )
@@ -58490,18 +56839,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV & operator=( GraphicsShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     GraphicsShaderGroupCreateInfoNV & operator=( VkGraphicsShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV const *>( &rhs );
       return *this;
     }
 
-    GraphicsShaderGroupCreateInfoNV & operator=( GraphicsShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( GraphicsShaderGroupCreateInfoNV ) );
-      return *this;
-    }
-
     GraphicsShaderGroupCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -58575,7 +56920,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGraphicsShaderGroupCreateInfoNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGraphicsShaderGroupCreateInfoNV;
     const void* pNext = {};
     uint32_t stageCount = {};
     const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo* pStages = {};
@@ -58605,9 +56950,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR GraphicsPipelineShaderGroupsCreateInfoNV( GraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     GraphicsPipelineShaderGroupsCreateInfoNV( VkGraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : GraphicsPipelineShaderGroupsCreateInfoNV( *reinterpret_cast<GraphicsPipelineShaderGroupsCreateInfoNV const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     GraphicsPipelineShaderGroupsCreateInfoNV( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV> const & groups_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Pipeline> const & pipelines_ = {} )
@@ -58616,18 +56960,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV & operator=( GraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     GraphicsPipelineShaderGroupsCreateInfoNV & operator=( VkGraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV const *>( &rhs );
       return *this;
     }
 
-    GraphicsPipelineShaderGroupsCreateInfoNV & operator=( GraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( GraphicsPipelineShaderGroupsCreateInfoNV ) );
-      return *this;
-    }
-
     GraphicsPipelineShaderGroupsCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -58710,7 +57050,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGraphicsPipelineShaderGroupsCreateInfoNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGraphicsPipelineShaderGroupsCreateInfoNV;
     const void* pNext = {};
     uint32_t groupCount = {};
     const VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV* pGroups = {};
@@ -58740,23 +57080,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR HeadlessSurfaceCreateInfoEXT( HeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     HeadlessSurfaceCreateInfoEXT( VkHeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : HeadlessSurfaceCreateInfoEXT( *reinterpret_cast<HeadlessSurfaceCreateInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 HeadlessSurfaceCreateInfoEXT & operator=( HeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     HeadlessSurfaceCreateInfoEXT & operator=( VkHeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT const *>( &rhs );
       return *this;
     }
 
-    HeadlessSurfaceCreateInfoEXT & operator=( HeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( HeadlessSurfaceCreateInfoEXT ) );
-      return *this;
-    }
-
     HeadlessSurfaceCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -58800,7 +57135,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eHeadlessSurfaceCreateInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eHeadlessSurfaceCreateInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateFlagsEXT flags = {};
 
@@ -58828,23 +57163,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR IOSSurfaceCreateInfoMVK( IOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     IOSSurfaceCreateInfoMVK( VkIOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : IOSSurfaceCreateInfoMVK( *reinterpret_cast<IOSSurfaceCreateInfoMVK const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 IOSSurfaceCreateInfoMVK & operator=( IOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     IOSSurfaceCreateInfoMVK & operator=( VkIOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK const *>( &rhs );
       return *this;
     }
 
-    IOSSurfaceCreateInfoMVK & operator=( IOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( IOSSurfaceCreateInfoMVK ) );
-      return *this;
-    }
-
     IOSSurfaceCreateInfoMVK & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -58895,7 +57225,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eIosSurfaceCreateInfoMVK;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eIosSurfaceCreateInfoMVK;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::IOSSurfaceCreateFlagsMVK flags = {};
     const void* pView = {};
@@ -58924,9 +57254,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierExplicitCreateInfoEXT( ImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImageDrmFormatModifierExplicitCreateInfoEXT( VkImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImageDrmFormatModifierExplicitCreateInfoEXT( *reinterpret_cast<ImageDrmFormatModifierExplicitCreateInfoEXT const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     ImageDrmFormatModifierExplicitCreateInfoEXT( uint64_t drmFormatModifier_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubresourceLayout> const & planeLayouts_ )
@@ -58935,18 +57264,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierExplicitCreateInfoEXT & operator=( ImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImageDrmFormatModifierExplicitCreateInfoEXT & operator=( VkImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT const *>( &rhs );
       return *this;
     }
 
-    ImageDrmFormatModifierExplicitCreateInfoEXT & operator=( ImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImageDrmFormatModifierExplicitCreateInfoEXT ) );
-      return *this;
-    }
-
     ImageDrmFormatModifierExplicitCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -59013,7 +57338,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageDrmFormatModifierExplicitCreateInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageDrmFormatModifierExplicitCreateInfoEXT;
     const void* pNext = {};
     uint64_t drmFormatModifier = {};
     uint32_t drmFormatModifierPlaneCount = {};
@@ -59042,9 +57367,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierListCreateInfoEXT( ImageDrmFormatModifierListCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImageDrmFormatModifierListCreateInfoEXT( VkImageDrmFormatModifierListCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImageDrmFormatModifierListCreateInfoEXT( *reinterpret_cast<ImageDrmFormatModifierListCreateInfoEXT const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     ImageDrmFormatModifierListCreateInfoEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & drmFormatModifiers_ )
@@ -59053,18 +57377,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierListCreateInfoEXT & operator=( ImageDrmFormatModifierListCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImageDrmFormatModifierListCreateInfoEXT & operator=( VkImageDrmFormatModifierListCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT const *>( &rhs );
       return *this;
     }
 
-    ImageDrmFormatModifierListCreateInfoEXT & operator=( ImageDrmFormatModifierListCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImageDrmFormatModifierListCreateInfoEXT ) );
-      return *this;
-    }
-
     ImageDrmFormatModifierListCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -59124,7 +57444,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageDrmFormatModifierListCreateInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageDrmFormatModifierListCreateInfoEXT;
     const void* pNext = {};
     uint32_t drmFormatModifierCount = {};
     const uint64_t* pDrmFormatModifiers = {};
@@ -59152,9 +57472,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImageFormatListCreateInfo( ImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImageFormatListCreateInfo( VkImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImageFormatListCreateInfo( *reinterpret_cast<ImageFormatListCreateInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     ImageFormatListCreateInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & viewFormats_ )
@@ -59163,18 +57482,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImageFormatListCreateInfo & operator=( ImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImageFormatListCreateInfo & operator=( VkImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo const *>( &rhs );
       return *this;
     }
 
-    ImageFormatListCreateInfo & operator=( ImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImageFormatListCreateInfo ) );
-      return *this;
-    }
-
     ImageFormatListCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -59234,7 +57549,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageFormatListCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageFormatListCreateInfo;
     const void* pNext = {};
     uint32_t viewFormatCount = {};
     const VULKAN_HPP_NAMESPACE::Format* pViewFormats = {};
@@ -59264,23 +57579,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImagePipeSurfaceCreateInfoFUCHSIA( ImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImagePipeSurfaceCreateInfoFUCHSIA( VkImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImagePipeSurfaceCreateInfoFUCHSIA( *reinterpret_cast<ImagePipeSurfaceCreateInfoFUCHSIA const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImagePipeSurfaceCreateInfoFUCHSIA & operator=( ImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImagePipeSurfaceCreateInfoFUCHSIA & operator=( VkImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA const *>( &rhs );
       return *this;
     }
 
-    ImagePipeSurfaceCreateInfoFUCHSIA & operator=( ImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImagePipeSurfaceCreateInfoFUCHSIA ) );
-      return *this;
-    }
-
     ImagePipeSurfaceCreateInfoFUCHSIA & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -59331,7 +57641,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImagepipeSurfaceCreateInfoFUCHSIA;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImagepipeSurfaceCreateInfoFUCHSIA;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateFlagsFUCHSIA flags = {};
     zx_handle_t imagePipeHandle = {};
@@ -59360,23 +57670,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImagePlaneMemoryRequirementsInfo( ImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImagePlaneMemoryRequirementsInfo( VkImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImagePlaneMemoryRequirementsInfo( *reinterpret_cast<ImagePlaneMemoryRequirementsInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImagePlaneMemoryRequirementsInfo & operator=( ImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImagePlaneMemoryRequirementsInfo & operator=( VkImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo const *>( &rhs );
       return *this;
     }
 
-    ImagePlaneMemoryRequirementsInfo & operator=( ImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImagePlaneMemoryRequirementsInfo ) );
-      return *this;
-    }
-
     ImagePlaneMemoryRequirementsInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -59420,7 +57725,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImagePlaneMemoryRequirementsInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImagePlaneMemoryRequirementsInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor;
 
@@ -59448,23 +57753,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImageStencilUsageCreateInfo( ImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImageStencilUsageCreateInfo( VkImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImageStencilUsageCreateInfo( *reinterpret_cast<ImageStencilUsageCreateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImageStencilUsageCreateInfo & operator=( ImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImageStencilUsageCreateInfo & operator=( VkImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo const *>( &rhs );
       return *this;
     }
 
-    ImageStencilUsageCreateInfo & operator=( ImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImageStencilUsageCreateInfo ) );
-      return *this;
-    }
-
     ImageStencilUsageCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -59508,7 +57808,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageStencilUsageCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageStencilUsageCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ImageUsageFlags stencilUsage = {};
 
@@ -59536,23 +57836,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImageSwapchainCreateInfoKHR( ImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImageSwapchainCreateInfoKHR( VkImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImageSwapchainCreateInfoKHR( *reinterpret_cast<ImageSwapchainCreateInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImageSwapchainCreateInfoKHR & operator=( ImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImageSwapchainCreateInfoKHR & operator=( VkImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR const *>( &rhs );
       return *this;
     }
 
-    ImageSwapchainCreateInfoKHR & operator=( ImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImageSwapchainCreateInfoKHR ) );
-      return *this;
-    }
-
     ImageSwapchainCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -59596,7 +57891,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageSwapchainCreateInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageSwapchainCreateInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain = {};
 
@@ -59623,23 +57918,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImageViewASTCDecodeModeEXT( ImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImageViewASTCDecodeModeEXT( VkImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImageViewASTCDecodeModeEXT( *reinterpret_cast<ImageViewASTCDecodeModeEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImageViewASTCDecodeModeEXT & operator=( ImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImageViewASTCDecodeModeEXT & operator=( VkImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT const *>( &rhs );
       return *this;
     }
 
-    ImageViewASTCDecodeModeEXT & operator=( ImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImageViewASTCDecodeModeEXT ) );
-      return *this;
-    }
-
     ImageViewASTCDecodeModeEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -59683,7 +57973,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageViewAstcDecodeModeEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageViewAstcDecodeModeEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Format decodeMode = VULKAN_HPP_NAMESPACE::Format::eUndefined;
 
@@ -59710,23 +58000,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImageViewUsageCreateInfo( ImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImageViewUsageCreateInfo( VkImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImageViewUsageCreateInfo( *reinterpret_cast<ImageViewUsageCreateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImageViewUsageCreateInfo & operator=( ImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImageViewUsageCreateInfo & operator=( VkImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo const *>( &rhs );
       return *this;
     }
 
-    ImageViewUsageCreateInfo & operator=( ImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImageViewUsageCreateInfo ) );
-      return *this;
-    }
-
     ImageViewUsageCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -59770,7 +58055,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageViewUsageCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageViewUsageCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ImageUsageFlags usage = {};
 
@@ -59799,23 +58084,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImportAndroidHardwareBufferInfoANDROID( ImportAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImportAndroidHardwareBufferInfoANDROID( VkImportAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImportAndroidHardwareBufferInfoANDROID( *reinterpret_cast<ImportAndroidHardwareBufferInfoANDROID const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImportAndroidHardwareBufferInfoANDROID & operator=( ImportAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImportAndroidHardwareBufferInfoANDROID & operator=( VkImportAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID const *>( &rhs );
       return *this;
     }
 
-    ImportAndroidHardwareBufferInfoANDROID & operator=( ImportAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImportAndroidHardwareBufferInfoANDROID ) );
-      return *this;
-    }
-
     ImportAndroidHardwareBufferInfoANDROID & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -59859,7 +58139,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportAndroidHardwareBufferInfoANDROID;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportAndroidHardwareBufferInfoANDROID;
     const void* pNext = {};
     struct AHardwareBuffer* buffer = {};
 
@@ -59887,23 +58167,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImportMemoryFdInfoKHR( ImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImportMemoryFdInfoKHR( VkImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImportMemoryFdInfoKHR( *reinterpret_cast<ImportMemoryFdInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImportMemoryFdInfoKHR & operator=( ImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImportMemoryFdInfoKHR & operator=( VkImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR const *>( &rhs );
       return *this;
     }
 
-    ImportMemoryFdInfoKHR & operator=( ImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImportMemoryFdInfoKHR ) );
-      return *this;
-    }
-
     ImportMemoryFdInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -59954,7 +58229,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportMemoryFdInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportMemoryFdInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
     int fd = {};
@@ -59982,23 +58257,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImportMemoryHostPointerInfoEXT( ImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImportMemoryHostPointerInfoEXT( VkImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImportMemoryHostPointerInfoEXT( *reinterpret_cast<ImportMemoryHostPointerInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImportMemoryHostPointerInfoEXT & operator=( ImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImportMemoryHostPointerInfoEXT & operator=( VkImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT const *>( &rhs );
       return *this;
     }
 
-    ImportMemoryHostPointerInfoEXT & operator=( ImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImportMemoryHostPointerInfoEXT ) );
-      return *this;
-    }
-
     ImportMemoryHostPointerInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -60049,7 +58319,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportMemoryHostPointerInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportMemoryHostPointerInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
     void* pHostPointer = {};
@@ -60078,23 +58348,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImportMemoryWin32HandleInfoKHR( ImportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImportMemoryWin32HandleInfoKHR( VkImportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImportMemoryWin32HandleInfoKHR( *reinterpret_cast<ImportMemoryWin32HandleInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoKHR & operator=( ImportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImportMemoryWin32HandleInfoKHR & operator=( VkImportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR const *>( &rhs );
       return *this;
     }
 
-    ImportMemoryWin32HandleInfoKHR & operator=( ImportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImportMemoryWin32HandleInfoKHR ) );
-      return *this;
-    }
-
     ImportMemoryWin32HandleInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -60152,7 +58417,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportMemoryWin32HandleInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportMemoryWin32HandleInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
     HANDLE handle = {};
@@ -60183,23 +58448,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ImportMemoryWin32HandleInfoNV( ImportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ImportMemoryWin32HandleInfoNV( VkImportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ImportMemoryWin32HandleInfoNV( *reinterpret_cast<ImportMemoryWin32HandleInfoNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoNV & operator=( ImportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ImportMemoryWin32HandleInfoNV & operator=( VkImportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV const *>( &rhs );
       return *this;
     }
 
-    ImportMemoryWin32HandleInfoNV & operator=( ImportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ImportMemoryWin32HandleInfoNV ) );
-      return *this;
-    }
-
     ImportMemoryWin32HandleInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -60250,7 +58510,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportMemoryWin32HandleInfoNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportMemoryWin32HandleInfoNV;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType = {};
     HANDLE handle = {};
@@ -60278,23 +58538,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR InputAttachmentAspectReference( InputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     InputAttachmentAspectReference( VkInputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : InputAttachmentAspectReference( *reinterpret_cast<InputAttachmentAspectReference const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 InputAttachmentAspectReference & operator=( InputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     InputAttachmentAspectReference & operator=( VkInputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference const *>( &rhs );
       return *this;
     }
 
-    InputAttachmentAspectReference & operator=( InputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( InputAttachmentAspectReference ) );
-      return *this;
-    }
-
     InputAttachmentAspectReference & setSubpass( uint32_t subpass_ ) VULKAN_HPP_NOEXCEPT
     {
       subpass = subpass_;
@@ -60366,9 +58621,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR InstanceCreateInfo( InstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     InstanceCreateInfo( VkInstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : InstanceCreateInfo( *reinterpret_cast<InstanceCreateInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     InstanceCreateInfo( VULKAN_HPP_NAMESPACE::InstanceCreateFlags flags_, const VULKAN_HPP_NAMESPACE::ApplicationInfo* pApplicationInfo_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char* const > const & pEnabledLayerNames_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char* const > const & pEnabledExtensionNames_ = {} )
@@ -60377,18 +58631,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & operator=( InstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     InstanceCreateInfo & operator=( VkInstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::InstanceCreateInfo const *>( &rhs );
       return *this;
     }
 
-    InstanceCreateInfo & operator=( InstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( InstanceCreateInfo ) );
-      return *this;
-    }
-
     InstanceCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -60485,7 +58735,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eInstanceCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eInstanceCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::InstanceCreateFlags flags = {};
     const VULKAN_HPP_NAMESPACE::ApplicationInfo* pApplicationInfo = {};
@@ -60518,23 +58768,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR MacOSSurfaceCreateInfoMVK( MacOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     MacOSSurfaceCreateInfoMVK( VkMacOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : MacOSSurfaceCreateInfoMVK( *reinterpret_cast<MacOSSurfaceCreateInfoMVK const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 MacOSSurfaceCreateInfoMVK & operator=( MacOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     MacOSSurfaceCreateInfoMVK & operator=( VkMacOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK const *>( &rhs );
       return *this;
     }
 
-    MacOSSurfaceCreateInfoMVK & operator=( MacOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( MacOSSurfaceCreateInfoMVK ) );
-      return *this;
-    }
-
     MacOSSurfaceCreateInfoMVK & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -60585,7 +58830,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMacosSurfaceCreateInfoMVK;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMacosSurfaceCreateInfoMVK;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateFlagsMVK flags = {};
     const void* pView = {};
@@ -60614,23 +58859,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR MemoryAllocateFlagsInfo( MemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     MemoryAllocateFlagsInfo( VkMemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : MemoryAllocateFlagsInfo( *reinterpret_cast<MemoryAllocateFlagsInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 MemoryAllocateFlagsInfo & operator=( MemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     MemoryAllocateFlagsInfo & operator=( VkMemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo const *>( &rhs );
       return *this;
     }
 
-    MemoryAllocateFlagsInfo & operator=( MemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( MemoryAllocateFlagsInfo ) );
-      return *this;
-    }
-
     MemoryAllocateFlagsInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -60681,7 +58921,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryAllocateFlagsInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryAllocateFlagsInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::MemoryAllocateFlags flags = {};
     uint32_t deviceMask = {};
@@ -60710,23 +58950,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR MemoryDedicatedAllocateInfo( MemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     MemoryDedicatedAllocateInfo( VkMemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : MemoryDedicatedAllocateInfo( *reinterpret_cast<MemoryDedicatedAllocateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 MemoryDedicatedAllocateInfo & operator=( MemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     MemoryDedicatedAllocateInfo & operator=( VkMemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo const *>( &rhs );
       return *this;
     }
 
-    MemoryDedicatedAllocateInfo & operator=( MemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( MemoryDedicatedAllocateInfo ) );
-      return *this;
-    }
-
     MemoryDedicatedAllocateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -60777,7 +59012,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryDedicatedAllocateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryDedicatedAllocateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Image image = {};
     VULKAN_HPP_NAMESPACE::Buffer buffer = {};
@@ -60806,23 +59041,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR MemoryDedicatedRequirements( MemoryDedicatedRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     MemoryDedicatedRequirements( VkMemoryDedicatedRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : MemoryDedicatedRequirements( *reinterpret_cast<MemoryDedicatedRequirements const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 MemoryDedicatedRequirements & operator=( MemoryDedicatedRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     MemoryDedicatedRequirements & operator=( VkMemoryDedicatedRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements const *>( &rhs );
       return *this;
     }
 
-    MemoryDedicatedRequirements & operator=( MemoryDedicatedRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( MemoryDedicatedRequirements ) );
-      return *this;
-    }
-
 
     operator VkMemoryDedicatedRequirements const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -60855,7 +59085,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryDedicatedRequirements;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryDedicatedRequirements;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 prefersDedicatedAllocation = {};
     VULKAN_HPP_NAMESPACE::Bool32 requiresDedicatedAllocation = {};
@@ -60884,23 +59114,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR MemoryOpaqueCaptureAddressAllocateInfo( MemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     MemoryOpaqueCaptureAddressAllocateInfo( VkMemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : MemoryOpaqueCaptureAddressAllocateInfo( *reinterpret_cast<MemoryOpaqueCaptureAddressAllocateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 MemoryOpaqueCaptureAddressAllocateInfo & operator=( MemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     MemoryOpaqueCaptureAddressAllocateInfo & operator=( VkMemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo const *>( &rhs );
       return *this;
     }
 
-    MemoryOpaqueCaptureAddressAllocateInfo & operator=( MemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( MemoryOpaqueCaptureAddressAllocateInfo ) );
-      return *this;
-    }
-
     MemoryOpaqueCaptureAddressAllocateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -60944,7 +59169,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryOpaqueCaptureAddressAllocateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryOpaqueCaptureAddressAllocateInfo;
     const void* pNext = {};
     uint64_t opaqueCaptureAddress = {};
 
@@ -60972,23 +59197,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR MemoryPriorityAllocateInfoEXT( MemoryPriorityAllocateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     MemoryPriorityAllocateInfoEXT( VkMemoryPriorityAllocateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : MemoryPriorityAllocateInfoEXT( *reinterpret_cast<MemoryPriorityAllocateInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 MemoryPriorityAllocateInfoEXT & operator=( MemoryPriorityAllocateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     MemoryPriorityAllocateInfoEXT & operator=( VkMemoryPriorityAllocateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT const *>( &rhs );
       return *this;
     }
 
-    MemoryPriorityAllocateInfoEXT & operator=( MemoryPriorityAllocateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( MemoryPriorityAllocateInfoEXT ) );
-      return *this;
-    }
-
     MemoryPriorityAllocateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -61032,7 +59252,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryPriorityAllocateInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryPriorityAllocateInfoEXT;
     const void* pNext = {};
     float priority = {};
 
@@ -61060,23 +59280,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR MetalSurfaceCreateInfoEXT( MetalSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     MetalSurfaceCreateInfoEXT( VkMetalSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : MetalSurfaceCreateInfoEXT( *reinterpret_cast<MetalSurfaceCreateInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 MetalSurfaceCreateInfoEXT & operator=( MetalSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     MetalSurfaceCreateInfoEXT & operator=( VkMetalSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT const *>( &rhs );
       return *this;
     }
 
-    MetalSurfaceCreateInfoEXT & operator=( MetalSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( MetalSurfaceCreateInfoEXT ) );
-      return *this;
-    }
-
     MetalSurfaceCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -61127,7 +59342,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMetalSurfaceCreateInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMetalSurfaceCreateInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::MetalSurfaceCreateFlagsEXT flags = {};
     const CAMetalLayer* pLayer = {};
@@ -61155,9 +59370,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR MutableDescriptorTypeListVALVE( MutableDescriptorTypeListVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     MutableDescriptorTypeListVALVE( VkMutableDescriptorTypeListVALVE const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : MutableDescriptorTypeListVALVE( *reinterpret_cast<MutableDescriptorTypeListVALVE const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     MutableDescriptorTypeListVALVE( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorType> const & descriptorTypes_ )
@@ -61166,18 +59380,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeListVALVE & operator=( MutableDescriptorTypeListVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     MutableDescriptorTypeListVALVE & operator=( VkMutableDescriptorTypeListVALVE const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE const *>( &rhs );
       return *this;
     }
 
-    MutableDescriptorTypeListVALVE & operator=( MutableDescriptorTypeListVALVE const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( MutableDescriptorTypeListVALVE ) );
-      return *this;
-    }
-
     MutableDescriptorTypeListVALVE & setDescriptorTypeCount( uint32_t descriptorTypeCount_ ) VULKAN_HPP_NOEXCEPT
     {
       descriptorTypeCount = descriptorTypeCount_;
@@ -61249,9 +59459,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR MutableDescriptorTypeCreateInfoVALVE( MutableDescriptorTypeCreateInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     MutableDescriptorTypeCreateInfoVALVE( VkMutableDescriptorTypeCreateInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : MutableDescriptorTypeCreateInfoVALVE( *reinterpret_cast<MutableDescriptorTypeCreateInfoVALVE const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     MutableDescriptorTypeCreateInfoVALVE( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE> const & mutableDescriptorTypeLists_ )
@@ -61260,18 +59469,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeCreateInfoVALVE & operator=( MutableDescriptorTypeCreateInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     MutableDescriptorTypeCreateInfoVALVE & operator=( VkMutableDescriptorTypeCreateInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoVALVE const *>( &rhs );
       return *this;
     }
 
-    MutableDescriptorTypeCreateInfoVALVE & operator=( MutableDescriptorTypeCreateInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( MutableDescriptorTypeCreateInfoVALVE ) );
-      return *this;
-    }
-
     MutableDescriptorTypeCreateInfoVALVE & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -61331,7 +59536,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMutableDescriptorTypeCreateInfoVALVE;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMutableDescriptorTypeCreateInfoVALVE;
     const void* pNext = {};
     uint32_t mutableDescriptorTypeListCount = {};
     const VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE* pMutableDescriptorTypeLists = {};
@@ -61450,23 +59655,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PerformanceQuerySubmitInfoKHR( PerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PerformanceQuerySubmitInfoKHR( VkPerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PerformanceQuerySubmitInfoKHR( *reinterpret_cast<PerformanceQuerySubmitInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PerformanceQuerySubmitInfoKHR & operator=( PerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PerformanceQuerySubmitInfoKHR & operator=( VkPerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR const *>( &rhs );
       return *this;
     }
 
-    PerformanceQuerySubmitInfoKHR & operator=( PerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PerformanceQuerySubmitInfoKHR ) );
-      return *this;
-    }
-
     PerformanceQuerySubmitInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -61510,7 +59710,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceQuerySubmitInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceQuerySubmitInfoKHR;
     const void* pNext = {};
     uint32_t counterPassIndex = {};
 
@@ -61537,23 +59737,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDevice16BitStorageFeatures( PhysicalDevice16BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDevice16BitStorageFeatures( VkPhysicalDevice16BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDevice16BitStorageFeatures( *reinterpret_cast<PhysicalDevice16BitStorageFeatures const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures & operator=( PhysicalDevice16BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDevice16BitStorageFeatures & operator=( VkPhysicalDevice16BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures const *>( &rhs );
       return *this;
     }
 
-    PhysicalDevice16BitStorageFeatures & operator=( PhysicalDevice16BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDevice16BitStorageFeatures ) );
-      return *this;
-    }
-
     PhysicalDevice16BitStorageFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -61618,7 +59813,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevice16BitStorageFeatures;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevice16BitStorageFeatures;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess = {};
     VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess = {};
@@ -61649,23 +59844,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDevice4444FormatsFeaturesEXT( PhysicalDevice4444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDevice4444FormatsFeaturesEXT( VkPhysicalDevice4444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDevice4444FormatsFeaturesEXT( *reinterpret_cast<PhysicalDevice4444FormatsFeaturesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDevice4444FormatsFeaturesEXT & operator=( PhysicalDevice4444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDevice4444FormatsFeaturesEXT & operator=( VkPhysicalDevice4444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDevice4444FormatsFeaturesEXT & operator=( PhysicalDevice4444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDevice4444FormatsFeaturesEXT ) );
-      return *this;
-    }
-
     PhysicalDevice4444FormatsFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -61716,7 +59906,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevice4444FormatsFeaturesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevice4444FormatsFeaturesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 formatA4R4G4B4 = {};
     VULKAN_HPP_NAMESPACE::Bool32 formatA4B4G4R4 = {};
@@ -61744,23 +59934,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDevice8BitStorageFeatures( PhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDevice8BitStorageFeatures( VkPhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDevice8BitStorageFeatures( *reinterpret_cast<PhysicalDevice8BitStorageFeatures const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDevice8BitStorageFeatures & operator=( PhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDevice8BitStorageFeatures & operator=( VkPhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures const *>( &rhs );
       return *this;
     }
 
-    PhysicalDevice8BitStorageFeatures & operator=( PhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDevice8BitStorageFeatures ) );
-      return *this;
-    }
-
     PhysicalDevice8BitStorageFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -61818,7 +60003,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevice8BitStorageFeatures;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevice8BitStorageFeatures;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess = {};
     VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess = {};
@@ -61848,23 +60033,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceASTCDecodeFeaturesEXT( PhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceASTCDecodeFeaturesEXT( VkPhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceASTCDecodeFeaturesEXT( *reinterpret_cast<PhysicalDeviceASTCDecodeFeaturesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceASTCDecodeFeaturesEXT & operator=( PhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceASTCDecodeFeaturesEXT & operator=( VkPhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceASTCDecodeFeaturesEXT & operator=( PhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceASTCDecodeFeaturesEXT ) );
-      return *this;
-    }
-
     PhysicalDeviceASTCDecodeFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -61908,7 +60088,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceAstcDecodeFeaturesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceAstcDecodeFeaturesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 decodeModeSharedExponent = {};
 
@@ -61935,23 +60115,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceAccelerationStructureFeaturesKHR( PhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceAccelerationStructureFeaturesKHR( VkPhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceAccelerationStructureFeaturesKHR( *reinterpret_cast<PhysicalDeviceAccelerationStructureFeaturesKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR & operator=( PhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceAccelerationStructureFeaturesKHR & operator=( VkPhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceAccelerationStructureFeaturesKHR & operator=( PhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceAccelerationStructureFeaturesKHR ) );
-      return *this;
-    }
-
     PhysicalDeviceAccelerationStructureFeaturesKHR & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -62023,7 +60198,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceAccelerationStructureFeaturesKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceAccelerationStructureFeaturesKHR;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 accelerationStructure = {};
     VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureCaptureReplay = {};
@@ -62054,23 +60229,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceAccelerationStructurePropertiesKHR( PhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceAccelerationStructurePropertiesKHR( VkPhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceAccelerationStructurePropertiesKHR( *reinterpret_cast<PhysicalDeviceAccelerationStructurePropertiesKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructurePropertiesKHR & operator=( PhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceAccelerationStructurePropertiesKHR & operator=( VkPhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceAccelerationStructurePropertiesKHR & operator=( PhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceAccelerationStructurePropertiesKHR ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceAccelerationStructurePropertiesKHR const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -62109,7 +60279,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceAccelerationStructurePropertiesKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceAccelerationStructurePropertiesKHR;
     void* pNext = {};
     uint64_t maxGeometryCount = {};
     uint64_t maxInstanceCount = {};
@@ -62143,23 +60313,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceBlendOperationAdvancedFeaturesEXT( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceBlendOperationAdvancedFeaturesEXT( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceBlendOperationAdvancedFeaturesEXT( *reinterpret_cast<PhysicalDeviceBlendOperationAdvancedFeaturesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBlendOperationAdvancedFeaturesEXT & operator=( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceBlendOperationAdvancedFeaturesEXT & operator=( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceBlendOperationAdvancedFeaturesEXT & operator=( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) );
-      return *this;
-    }
-
     PhysicalDeviceBlendOperationAdvancedFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -62203,7 +60368,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 advancedBlendCoherentOperations = {};
 
@@ -62230,23 +60395,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceBlendOperationAdvancedPropertiesEXT( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceBlendOperationAdvancedPropertiesEXT( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceBlendOperationAdvancedPropertiesEXT( *reinterpret_cast<PhysicalDeviceBlendOperationAdvancedPropertiesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBlendOperationAdvancedPropertiesEXT & operator=( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceBlendOperationAdvancedPropertiesEXT & operator=( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceBlendOperationAdvancedPropertiesEXT & operator=( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceBlendOperationAdvancedPropertiesEXT ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -62283,7 +60443,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT;
     void* pNext = {};
     uint32_t advancedBlendMaxColorAttachments = {};
     VULKAN_HPP_NAMESPACE::Bool32 advancedBlendIndependentBlend = {};
@@ -62315,23 +60475,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceBufferDeviceAddressFeatures( PhysicalDeviceBufferDeviceAddressFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceBufferDeviceAddressFeatures( VkPhysicalDeviceBufferDeviceAddressFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceBufferDeviceAddressFeatures( *reinterpret_cast<PhysicalDeviceBufferDeviceAddressFeatures const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeatures & operator=( PhysicalDeviceBufferDeviceAddressFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceBufferDeviceAddressFeatures & operator=( VkPhysicalDeviceBufferDeviceAddressFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceBufferDeviceAddressFeatures & operator=( PhysicalDeviceBufferDeviceAddressFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceBufferDeviceAddressFeatures ) );
-      return *this;
-    }
-
     PhysicalDeviceBufferDeviceAddressFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -62389,7 +60544,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceBufferDeviceAddressFeatures;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceBufferDeviceAddressFeatures;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress = {};
     VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay = {};
@@ -62419,23 +60574,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceBufferDeviceAddressFeaturesEXT( PhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceBufferDeviceAddressFeaturesEXT( VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceBufferDeviceAddressFeaturesEXT( *reinterpret_cast<PhysicalDeviceBufferDeviceAddressFeaturesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeaturesEXT & operator=( PhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceBufferDeviceAddressFeaturesEXT & operator=( VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceBufferDeviceAddressFeaturesEXT & operator=( PhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceBufferDeviceAddressFeaturesEXT ) );
-      return *this;
-    }
-
     PhysicalDeviceBufferDeviceAddressFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -62493,7 +60643,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceBufferDeviceAddressFeaturesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceBufferDeviceAddressFeaturesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress = {};
     VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay = {};
@@ -62523,23 +60673,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceCoherentMemoryFeaturesAMD( PhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceCoherentMemoryFeaturesAMD( VkPhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceCoherentMemoryFeaturesAMD( *reinterpret_cast<PhysicalDeviceCoherentMemoryFeaturesAMD const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCoherentMemoryFeaturesAMD & operator=( PhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceCoherentMemoryFeaturesAMD & operator=( VkPhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceCoherentMemoryFeaturesAMD & operator=( PhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceCoherentMemoryFeaturesAMD ) );
-      return *this;
-    }
-
     PhysicalDeviceCoherentMemoryFeaturesAMD & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -62583,7 +60728,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCoherentMemoryFeaturesAMD;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCoherentMemoryFeaturesAMD;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 deviceCoherentMemory = {};
 
@@ -62610,23 +60755,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceComputeShaderDerivativesFeaturesNV( PhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceComputeShaderDerivativesFeaturesNV( VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceComputeShaderDerivativesFeaturesNV( *reinterpret_cast<PhysicalDeviceComputeShaderDerivativesFeaturesNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceComputeShaderDerivativesFeaturesNV & operator=( PhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceComputeShaderDerivativesFeaturesNV & operator=( VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceComputeShaderDerivativesFeaturesNV & operator=( PhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceComputeShaderDerivativesFeaturesNV ) );
-      return *this;
-    }
-
     PhysicalDeviceComputeShaderDerivativesFeaturesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -62677,7 +60817,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceComputeShaderDerivativesFeaturesNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceComputeShaderDerivativesFeaturesNV;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 computeDerivativeGroupQuads = {};
     VULKAN_HPP_NAMESPACE::Bool32 computeDerivativeGroupLinear = {};
@@ -62705,23 +60845,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceConditionalRenderingFeaturesEXT( PhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceConditionalRenderingFeaturesEXT( VkPhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceConditionalRenderingFeaturesEXT( *reinterpret_cast<PhysicalDeviceConditionalRenderingFeaturesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceConditionalRenderingFeaturesEXT & operator=( PhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceConditionalRenderingFeaturesEXT & operator=( VkPhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceConditionalRenderingFeaturesEXT & operator=( PhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceConditionalRenderingFeaturesEXT ) );
-      return *this;
-    }
-
     PhysicalDeviceConditionalRenderingFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -62772,7 +60907,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceConditionalRenderingFeaturesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceConditionalRenderingFeaturesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 conditionalRendering = {};
     VULKAN_HPP_NAMESPACE::Bool32 inheritedConditionalRendering = {};
@@ -62800,23 +60935,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceConservativeRasterizationPropertiesEXT( PhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceConservativeRasterizationPropertiesEXT( VkPhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceConservativeRasterizationPropertiesEXT( *reinterpret_cast<PhysicalDeviceConservativeRasterizationPropertiesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceConservativeRasterizationPropertiesEXT & operator=( PhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceConservativeRasterizationPropertiesEXT & operator=( VkPhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceConservativeRasterizationPropertiesEXT & operator=( PhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceConservativeRasterizationPropertiesEXT ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceConservativeRasterizationPropertiesEXT const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -62856,7 +60986,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceConservativeRasterizationPropertiesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceConservativeRasterizationPropertiesEXT;
     void* pNext = {};
     float primitiveOverestimationSize = {};
     float maxExtraPrimitiveOverestimationSize = {};
@@ -62891,23 +61021,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixFeaturesNV( PhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceCooperativeMatrixFeaturesNV( VkPhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceCooperativeMatrixFeaturesNV( *reinterpret_cast<PhysicalDeviceCooperativeMatrixFeaturesNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesNV & operator=( PhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceCooperativeMatrixFeaturesNV & operator=( VkPhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceCooperativeMatrixFeaturesNV & operator=( PhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceCooperativeMatrixFeaturesNV ) );
-      return *this;
-    }
-
     PhysicalDeviceCooperativeMatrixFeaturesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -62958,7 +61083,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCooperativeMatrixFeaturesNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCooperativeMatrixFeaturesNV;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrix = {};
     VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrixRobustBufferAccess = {};
@@ -62986,23 +61111,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixPropertiesNV( PhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceCooperativeMatrixPropertiesNV( VkPhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceCooperativeMatrixPropertiesNV( *reinterpret_cast<PhysicalDeviceCooperativeMatrixPropertiesNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixPropertiesNV & operator=( PhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceCooperativeMatrixPropertiesNV & operator=( VkPhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceCooperativeMatrixPropertiesNV & operator=( PhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceCooperativeMatrixPropertiesNV ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceCooperativeMatrixPropertiesNV const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -63034,7 +61154,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCooperativeMatrixPropertiesNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCooperativeMatrixPropertiesNV;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::ShaderStageFlags cooperativeMatrixSupportedStages = {};
 
@@ -63061,23 +61181,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceCornerSampledImageFeaturesNV( PhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceCornerSampledImageFeaturesNV( VkPhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceCornerSampledImageFeaturesNV( *reinterpret_cast<PhysicalDeviceCornerSampledImageFeaturesNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCornerSampledImageFeaturesNV & operator=( PhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceCornerSampledImageFeaturesNV & operator=( VkPhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceCornerSampledImageFeaturesNV & operator=( PhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceCornerSampledImageFeaturesNV ) );
-      return *this;
-    }
-
     PhysicalDeviceCornerSampledImageFeaturesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -63121,7 +61236,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCornerSampledImageFeaturesNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCornerSampledImageFeaturesNV;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 cornerSampledImage = {};
 
@@ -63148,23 +61263,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceCoverageReductionModeFeaturesNV( PhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceCoverageReductionModeFeaturesNV( VkPhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceCoverageReductionModeFeaturesNV( *reinterpret_cast<PhysicalDeviceCoverageReductionModeFeaturesNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCoverageReductionModeFeaturesNV & operator=( PhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceCoverageReductionModeFeaturesNV & operator=( VkPhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceCoverageReductionModeFeaturesNV & operator=( PhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceCoverageReductionModeFeaturesNV ) );
-      return *this;
-    }
-
     PhysicalDeviceCoverageReductionModeFeaturesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -63208,7 +61318,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCoverageReductionModeFeaturesNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCoverageReductionModeFeaturesNV;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 coverageReductionMode = {};
 
@@ -63235,23 +61345,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceCustomBorderColorFeaturesEXT( PhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceCustomBorderColorFeaturesEXT( VkPhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceCustomBorderColorFeaturesEXT( *reinterpret_cast<PhysicalDeviceCustomBorderColorFeaturesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCustomBorderColorFeaturesEXT & operator=( PhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceCustomBorderColorFeaturesEXT & operator=( VkPhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceCustomBorderColorFeaturesEXT & operator=( PhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceCustomBorderColorFeaturesEXT ) );
-      return *this;
-    }
-
     PhysicalDeviceCustomBorderColorFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -63302,7 +61407,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCustomBorderColorFeaturesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCustomBorderColorFeaturesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 customBorderColors = {};
     VULKAN_HPP_NAMESPACE::Bool32 customBorderColorWithoutFormat = {};
@@ -63330,23 +61435,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceCustomBorderColorPropertiesEXT( PhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceCustomBorderColorPropertiesEXT( VkPhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceCustomBorderColorPropertiesEXT( *reinterpret_cast<PhysicalDeviceCustomBorderColorPropertiesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCustomBorderColorPropertiesEXT & operator=( PhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceCustomBorderColorPropertiesEXT & operator=( VkPhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceCustomBorderColorPropertiesEXT & operator=( PhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceCustomBorderColorPropertiesEXT ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceCustomBorderColorPropertiesEXT const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -63378,7 +61478,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCustomBorderColorPropertiesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCustomBorderColorPropertiesEXT;
     void* pNext = {};
     uint32_t maxCustomBorderColorSamplers = {};
 
@@ -63405,23 +61505,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV( VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV( *reinterpret_cast<PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV & operator=( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV & operator=( VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV & operator=( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV ) );
-      return *this;
-    }
-
     PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -63465,7 +61560,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocationImageAliasing = {};
 
@@ -63492,23 +61587,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClipEnableFeaturesEXT( PhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceDepthClipEnableFeaturesEXT( VkPhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceDepthClipEnableFeaturesEXT( *reinterpret_cast<PhysicalDeviceDepthClipEnableFeaturesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClipEnableFeaturesEXT & operator=( PhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceDepthClipEnableFeaturesEXT & operator=( VkPhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceDepthClipEnableFeaturesEXT & operator=( PhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceDepthClipEnableFeaturesEXT ) );
-      return *this;
-    }
-
     PhysicalDeviceDepthClipEnableFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -63552,7 +61642,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDepthClipEnableFeaturesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDepthClipEnableFeaturesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable = {};
 
@@ -63579,23 +61669,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthStencilResolveProperties( PhysicalDeviceDepthStencilResolveProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceDepthStencilResolveProperties( VkPhysicalDeviceDepthStencilResolveProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceDepthStencilResolveProperties( *reinterpret_cast<PhysicalDeviceDepthStencilResolveProperties const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthStencilResolveProperties & operator=( PhysicalDeviceDepthStencilResolveProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceDepthStencilResolveProperties & operator=( VkPhysicalDeviceDepthStencilResolveProperties const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceDepthStencilResolveProperties & operator=( PhysicalDeviceDepthStencilResolveProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceDepthStencilResolveProperties ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceDepthStencilResolveProperties const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -63630,7 +61715,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDepthStencilResolveProperties;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDepthStencilResolveProperties;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedDepthResolveModes = {};
     VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedStencilResolveModes = {};
@@ -63661,23 +61746,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorIndexingFeatures( PhysicalDeviceDescriptorIndexingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceDescriptorIndexingFeatures( VkPhysicalDeviceDescriptorIndexingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceDescriptorIndexingFeatures( *reinterpret_cast<PhysicalDeviceDescriptorIndexingFeatures const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & operator=( PhysicalDeviceDescriptorIndexingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceDescriptorIndexingFeatures & operator=( VkPhysicalDeviceDescriptorIndexingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceDescriptorIndexingFeatures & operator=( PhysicalDeviceDescriptorIndexingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceDescriptorIndexingFeatures ) );
-      return *this;
-    }
-
     PhysicalDeviceDescriptorIndexingFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -63854,7 +61934,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDescriptorIndexingFeatures;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDescriptorIndexingFeatures;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing = {};
     VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing = {};
@@ -63901,23 +61981,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorIndexingProperties( PhysicalDeviceDescriptorIndexingProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceDescriptorIndexingProperties( VkPhysicalDeviceDescriptorIndexingProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceDescriptorIndexingProperties( *reinterpret_cast<PhysicalDeviceDescriptorIndexingProperties const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingProperties & operator=( PhysicalDeviceDescriptorIndexingProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceDescriptorIndexingProperties & operator=( VkPhysicalDeviceDescriptorIndexingProperties const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceDescriptorIndexingProperties & operator=( PhysicalDeviceDescriptorIndexingProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceDescriptorIndexingProperties ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceDescriptorIndexingProperties const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -63971,7 +62046,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDescriptorIndexingProperties;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDescriptorIndexingProperties;
     void* pNext = {};
     uint32_t maxUpdateAfterBindDescriptorsInAllPools = {};
     VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexingNative = {};
@@ -64021,23 +62096,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceGeneratedCommandsFeaturesNV( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceDeviceGeneratedCommandsFeaturesNV( VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceDeviceGeneratedCommandsFeaturesNV( *reinterpret_cast<PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsFeaturesNV & operator=( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceDeviceGeneratedCommandsFeaturesNV & operator=( VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceDeviceGeneratedCommandsFeaturesNV & operator=( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV ) );
-      return *this;
-    }
-
     PhysicalDeviceDeviceGeneratedCommandsFeaturesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -64081,7 +62151,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDeviceGeneratedCommandsFeaturesNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDeviceGeneratedCommandsFeaturesNV;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedCommands = {};
 
@@ -64108,23 +62178,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceGeneratedCommandsPropertiesNV( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceDeviceGeneratedCommandsPropertiesNV( VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceDeviceGeneratedCommandsPropertiesNV( *reinterpret_cast<PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsPropertiesNV & operator=( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceDeviceGeneratedCommandsPropertiesNV & operator=( VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceDeviceGeneratedCommandsPropertiesNV & operator=( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -64164,7 +62229,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDeviceGeneratedCommandsPropertiesNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDeviceGeneratedCommandsPropertiesNV;
     void* pNext = {};
     uint32_t maxGraphicsShaderGroupCount = {};
     uint32_t maxIndirectSequenceCount = {};
@@ -64199,23 +62264,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceMemoryReportFeaturesEXT( PhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceDeviceMemoryReportFeaturesEXT( VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceDeviceMemoryReportFeaturesEXT( *reinterpret_cast<PhysicalDeviceDeviceMemoryReportFeaturesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceMemoryReportFeaturesEXT & operator=( PhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceDeviceMemoryReportFeaturesEXT & operator=( VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceDeviceMemoryReportFeaturesEXT & operator=( PhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceDeviceMemoryReportFeaturesEXT ) );
-      return *this;
-    }
-
     PhysicalDeviceDeviceMemoryReportFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -64259,7 +62319,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDeviceMemoryReportFeaturesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDeviceMemoryReportFeaturesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 deviceMemoryReport = {};
 
@@ -64286,23 +62346,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceDiagnosticsConfigFeaturesNV( PhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceDiagnosticsConfigFeaturesNV( VkPhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceDiagnosticsConfigFeaturesNV( *reinterpret_cast<PhysicalDeviceDiagnosticsConfigFeaturesNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDiagnosticsConfigFeaturesNV & operator=( PhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceDiagnosticsConfigFeaturesNV & operator=( VkPhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceDiagnosticsConfigFeaturesNV & operator=( PhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceDiagnosticsConfigFeaturesNV ) );
-      return *this;
-    }
-
     PhysicalDeviceDiagnosticsConfigFeaturesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -64346,7 +62401,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDiagnosticsConfigFeaturesNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDiagnosticsConfigFeaturesNV;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 diagnosticsConfig = {};
 
@@ -64373,23 +62428,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceDiscardRectanglePropertiesEXT( PhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceDiscardRectanglePropertiesEXT( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceDiscardRectanglePropertiesEXT( *reinterpret_cast<PhysicalDeviceDiscardRectanglePropertiesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDiscardRectanglePropertiesEXT & operator=( PhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceDiscardRectanglePropertiesEXT & operator=( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceDiscardRectanglePropertiesEXT & operator=( PhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceDiscardRectanglePropertiesEXT const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -64421,7 +62471,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT;
     void* pNext = {};
     uint32_t maxDiscardRectangles = {};
 
@@ -64448,23 +62498,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDriverProperties( PhysicalDeviceDriverProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceDriverProperties( VkPhysicalDeviceDriverProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceDriverProperties( *reinterpret_cast<PhysicalDeviceDriverProperties const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDriverProperties & operator=( PhysicalDeviceDriverProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceDriverProperties & operator=( VkPhysicalDeviceDriverProperties const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceDriverProperties & operator=( PhysicalDeviceDriverProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceDriverProperties ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceDriverProperties const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -64499,7 +62544,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDriverProperties;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDriverProperties;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::DriverId driverID = VULKAN_HPP_NAMESPACE::DriverId::eAmdProprietary;
     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_NAME_SIZE> driverName = {};
@@ -64530,23 +62575,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceExclusiveScissorFeaturesNV( PhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceExclusiveScissorFeaturesNV( VkPhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceExclusiveScissorFeaturesNV( *reinterpret_cast<PhysicalDeviceExclusiveScissorFeaturesNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExclusiveScissorFeaturesNV & operator=( PhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceExclusiveScissorFeaturesNV & operator=( VkPhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceExclusiveScissorFeaturesNV & operator=( PhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceExclusiveScissorFeaturesNV ) );
-      return *this;
-    }
-
     PhysicalDeviceExclusiveScissorFeaturesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -64590,7 +62630,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExclusiveScissorFeaturesNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExclusiveScissorFeaturesNV;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 exclusiveScissor = {};
 
@@ -64617,23 +62657,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedDynamicStateFeaturesEXT( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceExtendedDynamicStateFeaturesEXT( VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceExtendedDynamicStateFeaturesEXT( *reinterpret_cast<PhysicalDeviceExtendedDynamicStateFeaturesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicStateFeaturesEXT & operator=( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceExtendedDynamicStateFeaturesEXT & operator=( VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceExtendedDynamicStateFeaturesEXT & operator=( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceExtendedDynamicStateFeaturesEXT ) );
-      return *this;
-    }
-
     PhysicalDeviceExtendedDynamicStateFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -64677,7 +62712,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExtendedDynamicStateFeaturesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExtendedDynamicStateFeaturesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState = {};
 
@@ -64704,23 +62739,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalImageFormatInfo( PhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceExternalImageFormatInfo( VkPhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceExternalImageFormatInfo( *reinterpret_cast<PhysicalDeviceExternalImageFormatInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalImageFormatInfo & operator=( PhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceExternalImageFormatInfo & operator=( VkPhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceExternalImageFormatInfo & operator=( PhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceExternalImageFormatInfo ) );
-      return *this;
-    }
-
     PhysicalDeviceExternalImageFormatInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -64764,7 +62794,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalImageFormatInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalImageFormatInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
 
@@ -64792,23 +62822,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalMemoryHostPropertiesEXT( PhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceExternalMemoryHostPropertiesEXT( VkPhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceExternalMemoryHostPropertiesEXT( *reinterpret_cast<PhysicalDeviceExternalMemoryHostPropertiesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalMemoryHostPropertiesEXT & operator=( PhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceExternalMemoryHostPropertiesEXT & operator=( VkPhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceExternalMemoryHostPropertiesEXT & operator=( PhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceExternalMemoryHostPropertiesEXT ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceExternalMemoryHostPropertiesEXT const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -64840,7 +62865,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::DeviceSize minImportedHostPointerAlignment = {};
 
@@ -64867,23 +62892,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceFloatControlsProperties( PhysicalDeviceFloatControlsProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceFloatControlsProperties( VkPhysicalDeviceFloatControlsProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceFloatControlsProperties( *reinterpret_cast<PhysicalDeviceFloatControlsProperties const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFloatControlsProperties & operator=( PhysicalDeviceFloatControlsProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceFloatControlsProperties & operator=( VkPhysicalDeviceFloatControlsProperties const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceFloatControlsProperties & operator=( PhysicalDeviceFloatControlsProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceFloatControlsProperties ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceFloatControlsProperties const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -64931,7 +62951,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFloatControlsProperties;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFloatControlsProperties;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence denormBehaviorIndependence = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly;
     VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence roundingModeIndependence = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly;
@@ -64975,23 +62995,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMap2FeaturesEXT( PhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceFragmentDensityMap2FeaturesEXT( VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceFragmentDensityMap2FeaturesEXT( *reinterpret_cast<PhysicalDeviceFragmentDensityMap2FeaturesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMap2FeaturesEXT & operator=( PhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceFragmentDensityMap2FeaturesEXT & operator=( VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceFragmentDensityMap2FeaturesEXT & operator=( PhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceFragmentDensityMap2FeaturesEXT ) );
-      return *this;
-    }
-
     PhysicalDeviceFragmentDensityMap2FeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -65035,7 +63050,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMap2FeaturesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMap2FeaturesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapDeferred = {};
 
@@ -65062,23 +63077,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMap2PropertiesEXT( PhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceFragmentDensityMap2PropertiesEXT( VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceFragmentDensityMap2PropertiesEXT( *reinterpret_cast<PhysicalDeviceFragmentDensityMap2PropertiesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMap2PropertiesEXT & operator=( PhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceFragmentDensityMap2PropertiesEXT & operator=( VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceFragmentDensityMap2PropertiesEXT & operator=( PhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceFragmentDensityMap2PropertiesEXT ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -65113,7 +63123,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMap2PropertiesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMap2PropertiesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 subsampledLoads = {};
     VULKAN_HPP_NAMESPACE::Bool32 subsampledCoarseReconstructionEarlyAccess = {};
@@ -65143,23 +63153,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapFeaturesEXT( PhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceFragmentDensityMapFeaturesEXT( VkPhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceFragmentDensityMapFeaturesEXT( *reinterpret_cast<PhysicalDeviceFragmentDensityMapFeaturesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapFeaturesEXT & operator=( PhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceFragmentDensityMapFeaturesEXT & operator=( VkPhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceFragmentDensityMapFeaturesEXT & operator=( PhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceFragmentDensityMapFeaturesEXT ) );
-      return *this;
-    }
-
     PhysicalDeviceFragmentDensityMapFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -65217,7 +63222,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMapFeaturesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMapFeaturesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMap = {};
     VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapDynamic = {};
@@ -65246,23 +63251,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapPropertiesEXT( PhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceFragmentDensityMapPropertiesEXT( VkPhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceFragmentDensityMapPropertiesEXT( *reinterpret_cast<PhysicalDeviceFragmentDensityMapPropertiesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapPropertiesEXT & operator=( PhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceFragmentDensityMapPropertiesEXT & operator=( VkPhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceFragmentDensityMapPropertiesEXT & operator=( PhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceFragmentDensityMapPropertiesEXT ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceFragmentDensityMapPropertiesEXT const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -65296,7 +63296,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMapPropertiesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMapPropertiesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Extent2D minFragmentDensityTexelSize = {};
     VULKAN_HPP_NAMESPACE::Extent2D maxFragmentDensityTexelSize = {};
@@ -65325,23 +63325,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShaderBarycentricFeaturesNV( PhysicalDeviceFragmentShaderBarycentricFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceFragmentShaderBarycentricFeaturesNV( VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceFragmentShaderBarycentricFeaturesNV( *reinterpret_cast<PhysicalDeviceFragmentShaderBarycentricFeaturesNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderBarycentricFeaturesNV & operator=( PhysicalDeviceFragmentShaderBarycentricFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceFragmentShaderBarycentricFeaturesNV & operator=( VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesNV const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceFragmentShaderBarycentricFeaturesNV & operator=( PhysicalDeviceFragmentShaderBarycentricFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceFragmentShaderBarycentricFeaturesNV ) );
-      return *this;
-    }
-
     PhysicalDeviceFragmentShaderBarycentricFeaturesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -65385,7 +63380,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShaderBarycentricFeaturesNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShaderBarycentricFeaturesNV;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderBarycentric = {};
 
@@ -65412,23 +63407,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShaderInterlockFeaturesEXT( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceFragmentShaderInterlockFeaturesEXT( VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceFragmentShaderInterlockFeaturesEXT( *reinterpret_cast<PhysicalDeviceFragmentShaderInterlockFeaturesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderInterlockFeaturesEXT & operator=( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceFragmentShaderInterlockFeaturesEXT & operator=( VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceFragmentShaderInterlockFeaturesEXT & operator=( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceFragmentShaderInterlockFeaturesEXT ) );
-      return *this;
-    }
-
     PhysicalDeviceFragmentShaderInterlockFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -65486,7 +63476,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShaderInterlockFeaturesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShaderInterlockFeaturesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderSampleInterlock = {};
     VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderPixelInterlock = {};
@@ -65515,23 +63505,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateEnumsFeaturesNV( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceFragmentShadingRateEnumsFeaturesNV( VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceFragmentShadingRateEnumsFeaturesNV( *reinterpret_cast<PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV & operator=( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceFragmentShadingRateEnumsFeaturesNV & operator=( VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceFragmentShadingRateEnumsFeaturesNV & operator=( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV ) );
-      return *this;
-    }
-
     PhysicalDeviceFragmentShadingRateEnumsFeaturesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -65589,7 +63574,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRateEnumsFeaturesNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRateEnumsFeaturesNV;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateEnums = {};
     VULKAN_HPP_NAMESPACE::Bool32 supersampleFragmentShadingRates = {};
@@ -65618,23 +63603,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateEnumsPropertiesNV( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceFragmentShadingRateEnumsPropertiesNV( VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceFragmentShadingRateEnumsPropertiesNV( *reinterpret_cast<PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsPropertiesNV & operator=( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceFragmentShadingRateEnumsPropertiesNV & operator=( VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceFragmentShadingRateEnumsPropertiesNV & operator=( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV ) );
-      return *this;
-    }
-
     PhysicalDeviceFragmentShadingRateEnumsPropertiesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -65678,7 +63658,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRateEnumsPropertiesNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRateEnumsPropertiesNV;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::SampleCountFlagBits maxFragmentShadingRateInvocationCount = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
 
@@ -65705,23 +63685,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateFeaturesKHR( PhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceFragmentShadingRateFeaturesKHR( VkPhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceFragmentShadingRateFeaturesKHR( *reinterpret_cast<PhysicalDeviceFragmentShadingRateFeaturesKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateFeaturesKHR & operator=( PhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceFragmentShadingRateFeaturesKHR & operator=( VkPhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceFragmentShadingRateFeaturesKHR & operator=( PhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceFragmentShadingRateFeaturesKHR ) );
-      return *this;
-    }
-
     PhysicalDeviceFragmentShadingRateFeaturesKHR & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -65779,7 +63754,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRateFeaturesKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRateFeaturesKHR;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 pipelineFragmentShadingRate = {};
     VULKAN_HPP_NAMESPACE::Bool32 primitiveFragmentShadingRate = {};
@@ -65808,23 +63783,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRatePropertiesKHR( PhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceFragmentShadingRatePropertiesKHR( VkPhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceFragmentShadingRatePropertiesKHR( *reinterpret_cast<PhysicalDeviceFragmentShadingRatePropertiesKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRatePropertiesKHR & operator=( PhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceFragmentShadingRatePropertiesKHR & operator=( VkPhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceFragmentShadingRatePropertiesKHR & operator=( PhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceFragmentShadingRatePropertiesKHR ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceFragmentShadingRatePropertiesKHR const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -65872,7 +63842,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRatePropertiesKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRatePropertiesKHR;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Extent2D minFragmentShadingRateAttachmentTexelSize = {};
     VULKAN_HPP_NAMESPACE::Extent2D maxFragmentShadingRateAttachmentTexelSize = {};
@@ -65915,23 +63885,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGroupProperties( PhysicalDeviceGroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceGroupProperties( VkPhysicalDeviceGroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceGroupProperties( *reinterpret_cast<PhysicalDeviceGroupProperties const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGroupProperties & operator=( PhysicalDeviceGroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceGroupProperties & operator=( VkPhysicalDeviceGroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceGroupProperties & operator=( PhysicalDeviceGroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceGroupProperties ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceGroupProperties const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -65965,7 +63930,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceGroupProperties;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceGroupProperties;
     void* pNext = {};
     uint32_t physicalDeviceCount = {};
     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::PhysicalDevice, VK_MAX_DEVICE_GROUP_SIZE> physicalDevices = {};
@@ -65995,23 +63960,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceHostQueryResetFeatures( PhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceHostQueryResetFeatures( VkPhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceHostQueryResetFeatures( *reinterpret_cast<PhysicalDeviceHostQueryResetFeatures const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostQueryResetFeatures & operator=( PhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceHostQueryResetFeatures & operator=( VkPhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceHostQueryResetFeatures & operator=( PhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceHostQueryResetFeatures ) );
-      return *this;
-    }
-
     PhysicalDeviceHostQueryResetFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -66055,7 +64015,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceHostQueryResetFeatures;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceHostQueryResetFeatures;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset = {};
 
@@ -66083,23 +64043,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceIDProperties( PhysicalDeviceIDProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceIDProperties( VkPhysicalDeviceIDProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceIDProperties( *reinterpret_cast<PhysicalDeviceIDProperties const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceIDProperties & operator=( PhysicalDeviceIDProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceIDProperties & operator=( VkPhysicalDeviceIDProperties const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceIDProperties & operator=( PhysicalDeviceIDProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceIDProperties ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceIDProperties const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -66135,7 +64090,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceIdProperties;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceIdProperties;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> deviceUUID = {};
     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> driverUUID = {};
@@ -66167,9 +64122,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageDrmFormatModifierInfoEXT( PhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceImageDrmFormatModifierInfoEXT( VkPhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceImageDrmFormatModifierInfoEXT( *reinterpret_cast<PhysicalDeviceImageDrmFormatModifierInfoEXT const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     PhysicalDeviceImageDrmFormatModifierInfoEXT( uint64_t drmFormatModifier_, VULKAN_HPP_NAMESPACE::SharingMode sharingMode_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_ )
@@ -66178,18 +64132,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT & operator=( PhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceImageDrmFormatModifierInfoEXT & operator=( VkPhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceImageDrmFormatModifierInfoEXT & operator=( PhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceImageDrmFormatModifierInfoEXT ) );
-      return *this;
-    }
-
     PhysicalDeviceImageDrmFormatModifierInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -66263,7 +64213,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceImageDrmFormatModifierInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceImageDrmFormatModifierInfoEXT;
     const void* pNext = {};
     uint64_t drmFormatModifier = {};
     VULKAN_HPP_NAMESPACE::SharingMode sharingMode = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive;
@@ -66293,23 +64243,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageRobustnessFeaturesEXT( PhysicalDeviceImageRobustnessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceImageRobustnessFeaturesEXT( VkPhysicalDeviceImageRobustnessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceImageRobustnessFeaturesEXT( *reinterpret_cast<PhysicalDeviceImageRobustnessFeaturesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageRobustnessFeaturesEXT & operator=( PhysicalDeviceImageRobustnessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceImageRobustnessFeaturesEXT & operator=( VkPhysicalDeviceImageRobustnessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeaturesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceImageRobustnessFeaturesEXT & operator=( PhysicalDeviceImageRobustnessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceImageRobustnessFeaturesEXT ) );
-      return *this;
-    }
-
     PhysicalDeviceImageRobustnessFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -66353,7 +64298,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceImageRobustnessFeaturesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceImageRobustnessFeaturesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess = {};
 
@@ -66380,23 +64325,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageViewImageFormatInfoEXT( PhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceImageViewImageFormatInfoEXT( VkPhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceImageViewImageFormatInfoEXT( *reinterpret_cast<PhysicalDeviceImageViewImageFormatInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageViewImageFormatInfoEXT & operator=( PhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceImageViewImageFormatInfoEXT & operator=( VkPhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceImageViewImageFormatInfoEXT & operator=( PhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceImageViewImageFormatInfoEXT ) );
-      return *this;
-    }
-
     PhysicalDeviceImageViewImageFormatInfoEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -66440,7 +64380,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceImageViewImageFormatInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceImageViewImageFormatInfoEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::ImageViewType imageViewType = VULKAN_HPP_NAMESPACE::ImageViewType::e1D;
 
@@ -66467,23 +64407,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceImagelessFramebufferFeatures( PhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceImagelessFramebufferFeatures( VkPhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceImagelessFramebufferFeatures( *reinterpret_cast<PhysicalDeviceImagelessFramebufferFeatures const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImagelessFramebufferFeatures & operator=( PhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceImagelessFramebufferFeatures & operator=( VkPhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceImagelessFramebufferFeatures & operator=( PhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceImagelessFramebufferFeatures ) );
-      return *this;
-    }
-
     PhysicalDeviceImagelessFramebufferFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -66527,7 +64462,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceImagelessFramebufferFeatures;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceImagelessFramebufferFeatures;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer = {};
 
@@ -66555,23 +64490,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceIndexTypeUint8FeaturesEXT( PhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceIndexTypeUint8FeaturesEXT( VkPhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceIndexTypeUint8FeaturesEXT( *reinterpret_cast<PhysicalDeviceIndexTypeUint8FeaturesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceIndexTypeUint8FeaturesEXT & operator=( PhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceIndexTypeUint8FeaturesEXT & operator=( VkPhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceIndexTypeUint8FeaturesEXT & operator=( PhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceIndexTypeUint8FeaturesEXT ) );
-      return *this;
-    }
-
     PhysicalDeviceIndexTypeUint8FeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -66615,7 +64545,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceIndexTypeUint8FeaturesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceIndexTypeUint8FeaturesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 indexTypeUint8 = {};
 
@@ -66642,23 +64572,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceInlineUniformBlockFeaturesEXT( PhysicalDeviceInlineUniformBlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceInlineUniformBlockFeaturesEXT( VkPhysicalDeviceInlineUniformBlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceInlineUniformBlockFeaturesEXT( *reinterpret_cast<PhysicalDeviceInlineUniformBlockFeaturesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInlineUniformBlockFeaturesEXT & operator=( PhysicalDeviceInlineUniformBlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceInlineUniformBlockFeaturesEXT & operator=( VkPhysicalDeviceInlineUniformBlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeaturesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceInlineUniformBlockFeaturesEXT & operator=( PhysicalDeviceInlineUniformBlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceInlineUniformBlockFeaturesEXT ) );
-      return *this;
-    }
-
     PhysicalDeviceInlineUniformBlockFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -66709,7 +64634,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceInlineUniformBlockFeaturesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceInlineUniformBlockFeaturesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 inlineUniformBlock = {};
     VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind = {};
@@ -66737,23 +64662,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceInlineUniformBlockPropertiesEXT( PhysicalDeviceInlineUniformBlockPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceInlineUniformBlockPropertiesEXT( VkPhysicalDeviceInlineUniformBlockPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceInlineUniformBlockPropertiesEXT( *reinterpret_cast<PhysicalDeviceInlineUniformBlockPropertiesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInlineUniformBlockPropertiesEXT & operator=( PhysicalDeviceInlineUniformBlockPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceInlineUniformBlockPropertiesEXT & operator=( VkPhysicalDeviceInlineUniformBlockPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockPropertiesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceInlineUniformBlockPropertiesEXT & operator=( PhysicalDeviceInlineUniformBlockPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceInlineUniformBlockPropertiesEXT ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceInlineUniformBlockPropertiesEXT const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -66789,7 +64709,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceInlineUniformBlockPropertiesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceInlineUniformBlockPropertiesEXT;
     void* pNext = {};
     uint32_t maxInlineUniformBlockSize = {};
     uint32_t maxPerStageDescriptorInlineUniformBlocks = {};
@@ -66820,23 +64740,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceLineRasterizationFeaturesEXT( PhysicalDeviceLineRasterizationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceLineRasterizationFeaturesEXT( VkPhysicalDeviceLineRasterizationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceLineRasterizationFeaturesEXT( *reinterpret_cast<PhysicalDeviceLineRasterizationFeaturesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeaturesEXT & operator=( PhysicalDeviceLineRasterizationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceLineRasterizationFeaturesEXT & operator=( VkPhysicalDeviceLineRasterizationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceLineRasterizationFeaturesEXT & operator=( PhysicalDeviceLineRasterizationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceLineRasterizationFeaturesEXT ) );
-      return *this;
-    }
-
     PhysicalDeviceLineRasterizationFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -66915,7 +64830,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceLineRasterizationFeaturesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceLineRasterizationFeaturesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 rectangularLines = {};
     VULKAN_HPP_NAMESPACE::Bool32 bresenhamLines = {};
@@ -66947,23 +64862,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceLineRasterizationPropertiesEXT( PhysicalDeviceLineRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceLineRasterizationPropertiesEXT( VkPhysicalDeviceLineRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceLineRasterizationPropertiesEXT( *reinterpret_cast<PhysicalDeviceLineRasterizationPropertiesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationPropertiesEXT & operator=( PhysicalDeviceLineRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceLineRasterizationPropertiesEXT & operator=( VkPhysicalDeviceLineRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceLineRasterizationPropertiesEXT & operator=( PhysicalDeviceLineRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceLineRasterizationPropertiesEXT ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceLineRasterizationPropertiesEXT const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -66995,7 +64905,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceLineRasterizationPropertiesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceLineRasterizationPropertiesEXT;
     void* pNext = {};
     uint32_t lineSubPixelPrecisionBits = {};
 
@@ -67022,23 +64932,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance3Properties( PhysicalDeviceMaintenance3Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceMaintenance3Properties( VkPhysicalDeviceMaintenance3Properties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceMaintenance3Properties( *reinterpret_cast<PhysicalDeviceMaintenance3Properties const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance3Properties & operator=( PhysicalDeviceMaintenance3Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceMaintenance3Properties & operator=( VkPhysicalDeviceMaintenance3Properties const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceMaintenance3Properties & operator=( PhysicalDeviceMaintenance3Properties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceMaintenance3Properties ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceMaintenance3Properties const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -67071,7 +64976,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMaintenance3Properties;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMaintenance3Properties;
     void* pNext = {};
     uint32_t maxPerSetDescriptors = {};
     VULKAN_HPP_NAMESPACE::DeviceSize maxMemoryAllocationSize = {};
@@ -67100,23 +65005,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryBudgetPropertiesEXT( PhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceMemoryBudgetPropertiesEXT( VkPhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceMemoryBudgetPropertiesEXT( *reinterpret_cast<PhysicalDeviceMemoryBudgetPropertiesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryBudgetPropertiesEXT & operator=( PhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceMemoryBudgetPropertiesEXT & operator=( VkPhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceMemoryBudgetPropertiesEXT & operator=( PhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceMemoryBudgetPropertiesEXT ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceMemoryBudgetPropertiesEXT const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -67149,7 +65049,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMemoryBudgetPropertiesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMemoryBudgetPropertiesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::DeviceSize, VK_MAX_MEMORY_HEAPS> heapBudget = {};
     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::DeviceSize, VK_MAX_MEMORY_HEAPS> heapUsage = {};
@@ -67177,23 +65077,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceMemoryPriorityFeaturesEXT( PhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceMemoryPriorityFeaturesEXT( VkPhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceMemoryPriorityFeaturesEXT( *reinterpret_cast<PhysicalDeviceMemoryPriorityFeaturesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryPriorityFeaturesEXT & operator=( PhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceMemoryPriorityFeaturesEXT & operator=( VkPhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceMemoryPriorityFeaturesEXT & operator=( PhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceMemoryPriorityFeaturesEXT ) );
-      return *this;
-    }
-
     PhysicalDeviceMemoryPriorityFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -67237,7 +65132,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMemoryPriorityFeaturesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMemoryPriorityFeaturesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 memoryPriority = {};
 
@@ -67264,23 +65159,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceMeshShaderFeaturesNV( PhysicalDeviceMeshShaderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceMeshShaderFeaturesNV( VkPhysicalDeviceMeshShaderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceMeshShaderFeaturesNV( *reinterpret_cast<PhysicalDeviceMeshShaderFeaturesNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesNV & operator=( PhysicalDeviceMeshShaderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceMeshShaderFeaturesNV & operator=( VkPhysicalDeviceMeshShaderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceMeshShaderFeaturesNV & operator=( PhysicalDeviceMeshShaderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceMeshShaderFeaturesNV ) );
-      return *this;
-    }
-
     PhysicalDeviceMeshShaderFeaturesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -67331,7 +65221,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMeshShaderFeaturesNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMeshShaderFeaturesNV;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 taskShader = {};
     VULKAN_HPP_NAMESPACE::Bool32 meshShader = {};
@@ -67359,23 +65249,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderPropertiesNV( PhysicalDeviceMeshShaderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceMeshShaderPropertiesNV( VkPhysicalDeviceMeshShaderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceMeshShaderPropertiesNV( *reinterpret_cast<PhysicalDeviceMeshShaderPropertiesNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderPropertiesNV & operator=( PhysicalDeviceMeshShaderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceMeshShaderPropertiesNV & operator=( VkPhysicalDeviceMeshShaderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceMeshShaderPropertiesNV & operator=( PhysicalDeviceMeshShaderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceMeshShaderPropertiesNV ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceMeshShaderPropertiesNV const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -67419,7 +65304,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMeshShaderPropertiesNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMeshShaderPropertiesNV;
     void* pNext = {};
     uint32_t maxDrawMeshTasksCount = {};
     uint32_t maxTaskWorkGroupInvocations = {};
@@ -67458,23 +65343,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewFeatures( PhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceMultiviewFeatures( VkPhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceMultiviewFeatures( *reinterpret_cast<PhysicalDeviceMultiviewFeatures const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewFeatures & operator=( PhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceMultiviewFeatures & operator=( VkPhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceMultiviewFeatures & operator=( PhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceMultiviewFeatures ) );
-      return *this;
-    }
-
     PhysicalDeviceMultiviewFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -67532,7 +65412,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMultiviewFeatures;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMultiviewFeatures;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 multiview = {};
     VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader = {};
@@ -67562,23 +65442,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX( *reinterpret_cast<PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX & operator=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX & operator=( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX & operator=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -67610,7 +65485,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 perViewPositionAllComponents = {};
 
@@ -67637,23 +65512,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewProperties( PhysicalDeviceMultiviewProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceMultiviewProperties( VkPhysicalDeviceMultiviewProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceMultiviewProperties( *reinterpret_cast<PhysicalDeviceMultiviewProperties const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewProperties & operator=( PhysicalDeviceMultiviewProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceMultiviewProperties & operator=( VkPhysicalDeviceMultiviewProperties const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceMultiviewProperties & operator=( PhysicalDeviceMultiviewProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceMultiviewProperties ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceMultiviewProperties const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -67686,7 +65556,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMultiviewProperties;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMultiviewProperties;
     void* pNext = {};
     uint32_t maxMultiviewViewCount = {};
     uint32_t maxMultiviewInstanceIndex = {};
@@ -67715,23 +65585,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceMutableDescriptorTypeFeaturesVALVE( PhysicalDeviceMutableDescriptorTypeFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceMutableDescriptorTypeFeaturesVALVE( VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceMutableDescriptorTypeFeaturesVALVE( *reinterpret_cast<PhysicalDeviceMutableDescriptorTypeFeaturesVALVE const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMutableDescriptorTypeFeaturesVALVE & operator=( PhysicalDeviceMutableDescriptorTypeFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceMutableDescriptorTypeFeaturesVALVE & operator=( VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesVALVE const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceMutableDescriptorTypeFeaturesVALVE & operator=( PhysicalDeviceMutableDescriptorTypeFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceMutableDescriptorTypeFeaturesVALVE ) );
-      return *this;
-    }
-
     PhysicalDeviceMutableDescriptorTypeFeaturesVALVE & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -67775,7 +65640,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMutableDescriptorTypeFeaturesVALVE;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMutableDescriptorTypeFeaturesVALVE;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 mutableDescriptorType = {};
 
@@ -67802,23 +65667,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDevicePCIBusInfoPropertiesEXT( PhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDevicePCIBusInfoPropertiesEXT( VkPhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDevicePCIBusInfoPropertiesEXT( *reinterpret_cast<PhysicalDevicePCIBusInfoPropertiesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePCIBusInfoPropertiesEXT & operator=( PhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDevicePCIBusInfoPropertiesEXT & operator=( VkPhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDevicePCIBusInfoPropertiesEXT & operator=( PhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDevicePCIBusInfoPropertiesEXT ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDevicePCIBusInfoPropertiesEXT const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -67853,7 +65713,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePciBusInfoPropertiesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePciBusInfoPropertiesEXT;
     void* pNext = {};
     uint32_t pciDomain = {};
     uint32_t pciBus = {};
@@ -67883,23 +65743,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceQueryFeaturesKHR( PhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDevicePerformanceQueryFeaturesKHR( VkPhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDevicePerformanceQueryFeaturesKHR( *reinterpret_cast<PhysicalDevicePerformanceQueryFeaturesKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerformanceQueryFeaturesKHR & operator=( PhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDevicePerformanceQueryFeaturesKHR & operator=( VkPhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR const *>( &rhs );
       return *this;
     }
 
-    PhysicalDevicePerformanceQueryFeaturesKHR & operator=( PhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDevicePerformanceQueryFeaturesKHR ) );
-      return *this;
-    }
-
     PhysicalDevicePerformanceQueryFeaturesKHR & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -67950,7 +65805,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePerformanceQueryFeaturesKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePerformanceQueryFeaturesKHR;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 performanceCounterQueryPools = {};
     VULKAN_HPP_NAMESPACE::Bool32 performanceCounterMultipleQueryPools = {};
@@ -67978,23 +65833,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceQueryPropertiesKHR( PhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDevicePerformanceQueryPropertiesKHR( VkPhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDevicePerformanceQueryPropertiesKHR( *reinterpret_cast<PhysicalDevicePerformanceQueryPropertiesKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerformanceQueryPropertiesKHR & operator=( PhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDevicePerformanceQueryPropertiesKHR & operator=( VkPhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR const *>( &rhs );
       return *this;
     }
 
-    PhysicalDevicePerformanceQueryPropertiesKHR & operator=( PhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDevicePerformanceQueryPropertiesKHR ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDevicePerformanceQueryPropertiesKHR const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -68026,7 +65876,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePerformanceQueryPropertiesKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePerformanceQueryPropertiesKHR;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 allowCommandBufferQueryCopies = {};
 
@@ -68053,23 +65903,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineCreationCacheControlFeaturesEXT( PhysicalDevicePipelineCreationCacheControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDevicePipelineCreationCacheControlFeaturesEXT( VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDevicePipelineCreationCacheControlFeaturesEXT( *reinterpret_cast<PhysicalDevicePipelineCreationCacheControlFeaturesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineCreationCacheControlFeaturesEXT & operator=( PhysicalDevicePipelineCreationCacheControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDevicePipelineCreationCacheControlFeaturesEXT & operator=( VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeaturesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDevicePipelineCreationCacheControlFeaturesEXT & operator=( PhysicalDevicePipelineCreationCacheControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDevicePipelineCreationCacheControlFeaturesEXT ) );
-      return *this;
-    }
-
     PhysicalDevicePipelineCreationCacheControlFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -68113,7 +65958,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePipelineCreationCacheControlFeaturesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePipelineCreationCacheControlFeaturesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 pipelineCreationCacheControl = {};
 
@@ -68140,23 +65985,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineExecutablePropertiesFeaturesKHR( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDevicePipelineExecutablePropertiesFeaturesKHR( VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDevicePipelineExecutablePropertiesFeaturesKHR( *reinterpret_cast<PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineExecutablePropertiesFeaturesKHR & operator=( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDevicePipelineExecutablePropertiesFeaturesKHR & operator=( VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const *>( &rhs );
       return *this;
     }
 
-    PhysicalDevicePipelineExecutablePropertiesFeaturesKHR & operator=( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR ) );
-      return *this;
-    }
-
     PhysicalDevicePipelineExecutablePropertiesFeaturesKHR & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -68200,7 +66040,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePipelineExecutablePropertiesFeaturesKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePipelineExecutablePropertiesFeaturesKHR;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 pipelineExecutableInfo = {};
 
@@ -68227,23 +66067,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDevicePointClippingProperties( PhysicalDevicePointClippingProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDevicePointClippingProperties( VkPhysicalDevicePointClippingProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDevicePointClippingProperties( *reinterpret_cast<PhysicalDevicePointClippingProperties const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePointClippingProperties & operator=( PhysicalDevicePointClippingProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDevicePointClippingProperties & operator=( VkPhysicalDevicePointClippingProperties const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties const *>( &rhs );
       return *this;
     }
 
-    PhysicalDevicePointClippingProperties & operator=( PhysicalDevicePointClippingProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDevicePointClippingProperties ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDevicePointClippingProperties const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -68275,7 +66110,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePointClippingProperties;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePointClippingProperties;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::PointClippingBehavior pointClippingBehavior = VULKAN_HPP_NAMESPACE::PointClippingBehavior::eAllClipPlanes;
 
@@ -68304,23 +66139,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDevicePortabilitySubsetFeaturesKHR( PhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDevicePortabilitySubsetFeaturesKHR( VkPhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDevicePortabilitySubsetFeaturesKHR( *reinterpret_cast<PhysicalDevicePortabilitySubsetFeaturesKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & operator=( PhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDevicePortabilitySubsetFeaturesKHR & operator=( VkPhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR const *>( &rhs );
       return *this;
     }
 
-    PhysicalDevicePortabilitySubsetFeaturesKHR & operator=( PhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDevicePortabilitySubsetFeaturesKHR ) );
-      return *this;
-    }
-
     PhysicalDevicePortabilitySubsetFeaturesKHR & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -68462,7 +66292,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePortabilitySubsetFeaturesKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePortabilitySubsetFeaturesKHR;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 constantAlphaColorBlendFactors = {};
     VULKAN_HPP_NAMESPACE::Bool32 events = {};
@@ -68505,23 +66335,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDevicePortabilitySubsetPropertiesKHR( PhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDevicePortabilitySubsetPropertiesKHR( VkPhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDevicePortabilitySubsetPropertiesKHR( *reinterpret_cast<PhysicalDevicePortabilitySubsetPropertiesKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetPropertiesKHR & operator=( PhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDevicePortabilitySubsetPropertiesKHR & operator=( VkPhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR const *>( &rhs );
       return *this;
     }
 
-    PhysicalDevicePortabilitySubsetPropertiesKHR & operator=( PhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDevicePortabilitySubsetPropertiesKHR ) );
-      return *this;
-    }
-
     PhysicalDevicePortabilitySubsetPropertiesKHR & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -68565,7 +66390,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePortabilitySubsetPropertiesKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePortabilitySubsetPropertiesKHR;
     void* pNext = {};
     uint32_t minVertexInputBindingStrideAlignment = {};
 
@@ -68593,23 +66418,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDevicePrivateDataFeaturesEXT( PhysicalDevicePrivateDataFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDevicePrivateDataFeaturesEXT( VkPhysicalDevicePrivateDataFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDevicePrivateDataFeaturesEXT( *reinterpret_cast<PhysicalDevicePrivateDataFeaturesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrivateDataFeaturesEXT & operator=( PhysicalDevicePrivateDataFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDevicePrivateDataFeaturesEXT & operator=( VkPhysicalDevicePrivateDataFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeaturesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDevicePrivateDataFeaturesEXT & operator=( PhysicalDevicePrivateDataFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDevicePrivateDataFeaturesEXT ) );
-      return *this;
-    }
-
     PhysicalDevicePrivateDataFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -68653,7 +66473,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePrivateDataFeaturesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePrivateDataFeaturesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 privateData = {};
 
@@ -68680,23 +66500,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceProtectedMemoryFeatures( PhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceProtectedMemoryFeatures( VkPhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceProtectedMemoryFeatures( *reinterpret_cast<PhysicalDeviceProtectedMemoryFeatures const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProtectedMemoryFeatures & operator=( PhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceProtectedMemoryFeatures & operator=( VkPhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceProtectedMemoryFeatures & operator=( PhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceProtectedMemoryFeatures ) );
-      return *this;
-    }
-
     PhysicalDeviceProtectedMemoryFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -68740,7 +66555,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceProtectedMemoryFeatures;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceProtectedMemoryFeatures;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 protectedMemory = {};
 
@@ -68767,23 +66582,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceProtectedMemoryProperties( PhysicalDeviceProtectedMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceProtectedMemoryProperties( VkPhysicalDeviceProtectedMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceProtectedMemoryProperties( *reinterpret_cast<PhysicalDeviceProtectedMemoryProperties const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProtectedMemoryProperties & operator=( PhysicalDeviceProtectedMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceProtectedMemoryProperties & operator=( VkPhysicalDeviceProtectedMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceProtectedMemoryProperties & operator=( PhysicalDeviceProtectedMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceProtectedMemoryProperties ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceProtectedMemoryProperties const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -68815,7 +66625,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceProtectedMemoryProperties;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceProtectedMemoryProperties;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 protectedNoFault = {};
 
@@ -68842,23 +66652,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDevicePushDescriptorPropertiesKHR( PhysicalDevicePushDescriptorPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDevicePushDescriptorPropertiesKHR( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDevicePushDescriptorPropertiesKHR( *reinterpret_cast<PhysicalDevicePushDescriptorPropertiesKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePushDescriptorPropertiesKHR & operator=( PhysicalDevicePushDescriptorPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDevicePushDescriptorPropertiesKHR & operator=( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorPropertiesKHR const *>( &rhs );
       return *this;
     }
 
-    PhysicalDevicePushDescriptorPropertiesKHR & operator=( PhysicalDevicePushDescriptorPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDevicePushDescriptorPropertiesKHR const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -68890,7 +66695,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePushDescriptorPropertiesKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePushDescriptorPropertiesKHR;
     void* pNext = {};
     uint32_t maxPushDescriptors = {};
 
@@ -68917,23 +66722,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayQueryFeaturesKHR( PhysicalDeviceRayQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceRayQueryFeaturesKHR( VkPhysicalDeviceRayQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceRayQueryFeaturesKHR( *reinterpret_cast<PhysicalDeviceRayQueryFeaturesKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayQueryFeaturesKHR & operator=( PhysicalDeviceRayQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceRayQueryFeaturesKHR & operator=( VkPhysicalDeviceRayQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceRayQueryFeaturesKHR & operator=( PhysicalDeviceRayQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceRayQueryFeaturesKHR ) );
-      return *this;
-    }
-
     PhysicalDeviceRayQueryFeaturesKHR & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -68977,7 +66777,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRayQueryFeaturesKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRayQueryFeaturesKHR;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 rayQuery = {};
 
@@ -69004,23 +66804,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingPipelineFeaturesKHR( PhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceRayTracingPipelineFeaturesKHR( VkPhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceRayTracingPipelineFeaturesKHR( *reinterpret_cast<PhysicalDeviceRayTracingPipelineFeaturesKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR & operator=( PhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceRayTracingPipelineFeaturesKHR & operator=( VkPhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceRayTracingPipelineFeaturesKHR & operator=( PhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceRayTracingPipelineFeaturesKHR ) );
-      return *this;
-    }
-
     PhysicalDeviceRayTracingPipelineFeaturesKHR & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -69092,7 +66887,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRayTracingPipelineFeaturesKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRayTracingPipelineFeaturesKHR;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipeline = {};
     VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineShaderGroupHandleCaptureReplay = {};
@@ -69123,23 +66918,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingPipelinePropertiesKHR( PhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceRayTracingPipelinePropertiesKHR( VkPhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceRayTracingPipelinePropertiesKHR( *reinterpret_cast<PhysicalDeviceRayTracingPipelinePropertiesKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelinePropertiesKHR & operator=( PhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceRayTracingPipelinePropertiesKHR & operator=( VkPhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceRayTracingPipelinePropertiesKHR & operator=( PhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceRayTracingPipelinePropertiesKHR ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceRayTracingPipelinePropertiesKHR const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -69178,7 +66968,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRayTracingPipelinePropertiesKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRayTracingPipelinePropertiesKHR;
     void* pNext = {};
     uint32_t shaderGroupHandleSize = {};
     uint32_t maxRayRecursionDepth = {};
@@ -69212,23 +67002,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingPropertiesNV( PhysicalDeviceRayTracingPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceRayTracingPropertiesNV( VkPhysicalDeviceRayTracingPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceRayTracingPropertiesNV( *reinterpret_cast<PhysicalDeviceRayTracingPropertiesNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPropertiesNV & operator=( PhysicalDeviceRayTracingPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceRayTracingPropertiesNV & operator=( VkPhysicalDeviceRayTracingPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceRayTracingPropertiesNV & operator=( PhysicalDeviceRayTracingPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceRayTracingPropertiesNV ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceRayTracingPropertiesNV const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -69267,7 +67052,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRayTracingPropertiesNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRayTracingPropertiesNV;
     void* pNext = {};
     uint32_t shaderGroupHandleSize = {};
     uint32_t maxRecursionDepth = {};
@@ -69301,23 +67086,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceRepresentativeFragmentTestFeaturesNV( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceRepresentativeFragmentTestFeaturesNV( VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceRepresentativeFragmentTestFeaturesNV( *reinterpret_cast<PhysicalDeviceRepresentativeFragmentTestFeaturesNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRepresentativeFragmentTestFeaturesNV & operator=( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceRepresentativeFragmentTestFeaturesNV & operator=( VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceRepresentativeFragmentTestFeaturesNV & operator=( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceRepresentativeFragmentTestFeaturesNV ) );
-      return *this;
-    }
-
     PhysicalDeviceRepresentativeFragmentTestFeaturesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -69361,7 +67141,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRepresentativeFragmentTestFeaturesNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRepresentativeFragmentTestFeaturesNV;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 representativeFragmentTest = {};
 
@@ -69388,23 +67168,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceRobustness2FeaturesEXT( PhysicalDeviceRobustness2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceRobustness2FeaturesEXT( VkPhysicalDeviceRobustness2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceRobustness2FeaturesEXT( *reinterpret_cast<PhysicalDeviceRobustness2FeaturesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2FeaturesEXT & operator=( PhysicalDeviceRobustness2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceRobustness2FeaturesEXT & operator=( VkPhysicalDeviceRobustness2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceRobustness2FeaturesEXT & operator=( PhysicalDeviceRobustness2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceRobustness2FeaturesEXT ) );
-      return *this;
-    }
-
     PhysicalDeviceRobustness2FeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -69462,7 +67237,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRobustness2FeaturesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRobustness2FeaturesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess2 = {};
     VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess2 = {};
@@ -69491,23 +67266,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceRobustness2PropertiesEXT( PhysicalDeviceRobustness2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceRobustness2PropertiesEXT( VkPhysicalDeviceRobustness2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceRobustness2PropertiesEXT( *reinterpret_cast<PhysicalDeviceRobustness2PropertiesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2PropertiesEXT & operator=( PhysicalDeviceRobustness2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceRobustness2PropertiesEXT & operator=( VkPhysicalDeviceRobustness2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceRobustness2PropertiesEXT & operator=( PhysicalDeviceRobustness2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceRobustness2PropertiesEXT ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceRobustness2PropertiesEXT const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -69540,7 +67310,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRobustness2PropertiesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRobustness2PropertiesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::DeviceSize robustStorageBufferAccessSizeAlignment = {};
     VULKAN_HPP_NAMESPACE::DeviceSize robustUniformBufferAccessSizeAlignment = {};
@@ -69568,23 +67338,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSampleLocationsPropertiesEXT( PhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceSampleLocationsPropertiesEXT( VkPhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceSampleLocationsPropertiesEXT( *reinterpret_cast<PhysicalDeviceSampleLocationsPropertiesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSampleLocationsPropertiesEXT & operator=( PhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceSampleLocationsPropertiesEXT & operator=( VkPhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceSampleLocationsPropertiesEXT & operator=( PhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceSampleLocationsPropertiesEXT ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceSampleLocationsPropertiesEXT const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -69620,7 +67385,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::SampleCountFlags sampleLocationSampleCounts = {};
     VULKAN_HPP_NAMESPACE::Extent2D maxSampleLocationGridSize = {};
@@ -69651,23 +67416,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceSamplerFilterMinmaxProperties( PhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceSamplerFilterMinmaxProperties( VkPhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceSamplerFilterMinmaxProperties( *reinterpret_cast<PhysicalDeviceSamplerFilterMinmaxProperties const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSamplerFilterMinmaxProperties & operator=( PhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceSamplerFilterMinmaxProperties & operator=( VkPhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceSamplerFilterMinmaxProperties & operator=( PhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceSamplerFilterMinmaxProperties ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceSamplerFilterMinmaxProperties const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -69700,7 +67460,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSamplerFilterMinmaxProperties;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSamplerFilterMinmaxProperties;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxSingleComponentFormats = {};
     VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxImageComponentMapping = {};
@@ -69729,23 +67489,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceSamplerYcbcrConversionFeatures( PhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceSamplerYcbcrConversionFeatures( VkPhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceSamplerYcbcrConversionFeatures( *reinterpret_cast<PhysicalDeviceSamplerYcbcrConversionFeatures const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSamplerYcbcrConversionFeatures & operator=( PhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceSamplerYcbcrConversionFeatures & operator=( VkPhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceSamplerYcbcrConversionFeatures & operator=( PhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceSamplerYcbcrConversionFeatures ) );
-      return *this;
-    }
-
     PhysicalDeviceSamplerYcbcrConversionFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -69789,7 +67544,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSamplerYcbcrConversionFeatures;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSamplerYcbcrConversionFeatures;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion = {};
 
@@ -69817,23 +67572,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceScalarBlockLayoutFeatures( PhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceScalarBlockLayoutFeatures( VkPhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceScalarBlockLayoutFeatures( *reinterpret_cast<PhysicalDeviceScalarBlockLayoutFeatures const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceScalarBlockLayoutFeatures & operator=( PhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceScalarBlockLayoutFeatures & operator=( VkPhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceScalarBlockLayoutFeatures & operator=( PhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceScalarBlockLayoutFeatures ) );
-      return *this;
-    }
-
     PhysicalDeviceScalarBlockLayoutFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -69877,7 +67627,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceScalarBlockLayoutFeatures;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceScalarBlockLayoutFeatures;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout = {};
 
@@ -69905,23 +67655,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceSeparateDepthStencilLayoutsFeatures( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceSeparateDepthStencilLayoutsFeatures( VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceSeparateDepthStencilLayoutsFeatures( *reinterpret_cast<PhysicalDeviceSeparateDepthStencilLayoutsFeatures const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSeparateDepthStencilLayoutsFeatures & operator=( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceSeparateDepthStencilLayoutsFeatures & operator=( VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceSeparateDepthStencilLayoutsFeatures & operator=( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceSeparateDepthStencilLayoutsFeatures ) );
-      return *this;
-    }
-
     PhysicalDeviceSeparateDepthStencilLayoutsFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -69965,7 +67710,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSeparateDepthStencilLayoutsFeatures;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSeparateDepthStencilLayoutsFeatures;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts = {};
 
@@ -69993,23 +67738,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicFloatFeaturesEXT( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceShaderAtomicFloatFeaturesEXT( VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceShaderAtomicFloatFeaturesEXT( *reinterpret_cast<PhysicalDeviceShaderAtomicFloatFeaturesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & operator=( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceShaderAtomicFloatFeaturesEXT & operator=( VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceShaderAtomicFloatFeaturesEXT & operator=( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceShaderAtomicFloatFeaturesEXT ) );
-      return *this;
-    }
-
     PhysicalDeviceShaderAtomicFloatFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -70130,7 +67870,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderAtomicFloatFeaturesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderAtomicFloatFeaturesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32Atomics = {};
     VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32AtomicAdd = {};
@@ -70168,23 +67908,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicInt64Features( PhysicalDeviceShaderAtomicInt64Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceShaderAtomicInt64Features( VkPhysicalDeviceShaderAtomicInt64Features const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceShaderAtomicInt64Features( *reinterpret_cast<PhysicalDeviceShaderAtomicInt64Features const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicInt64Features & operator=( PhysicalDeviceShaderAtomicInt64Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceShaderAtomicInt64Features & operator=( VkPhysicalDeviceShaderAtomicInt64Features const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceShaderAtomicInt64Features & operator=( PhysicalDeviceShaderAtomicInt64Features const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceShaderAtomicInt64Features ) );
-      return *this;
-    }
-
     PhysicalDeviceShaderAtomicInt64Features & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -70235,7 +67970,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderAtomicInt64Features;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderAtomicInt64Features;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics = {};
     VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics = {};
@@ -70264,23 +67999,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderClockFeaturesKHR( PhysicalDeviceShaderClockFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceShaderClockFeaturesKHR( VkPhysicalDeviceShaderClockFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceShaderClockFeaturesKHR( *reinterpret_cast<PhysicalDeviceShaderClockFeaturesKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderClockFeaturesKHR & operator=( PhysicalDeviceShaderClockFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceShaderClockFeaturesKHR & operator=( VkPhysicalDeviceShaderClockFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceShaderClockFeaturesKHR & operator=( PhysicalDeviceShaderClockFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceShaderClockFeaturesKHR ) );
-      return *this;
-    }
-
     PhysicalDeviceShaderClockFeaturesKHR & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -70331,7 +68061,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderClockFeaturesKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderClockFeaturesKHR;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupClock = {};
     VULKAN_HPP_NAMESPACE::Bool32 shaderDeviceClock = {};
@@ -70359,23 +68089,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCoreProperties2AMD( PhysicalDeviceShaderCoreProperties2AMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceShaderCoreProperties2AMD( VkPhysicalDeviceShaderCoreProperties2AMD const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceShaderCoreProperties2AMD( *reinterpret_cast<PhysicalDeviceShaderCoreProperties2AMD const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderCoreProperties2AMD & operator=( PhysicalDeviceShaderCoreProperties2AMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceShaderCoreProperties2AMD & operator=( VkPhysicalDeviceShaderCoreProperties2AMD const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceShaderCoreProperties2AMD & operator=( PhysicalDeviceShaderCoreProperties2AMD const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceShaderCoreProperties2AMD ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceShaderCoreProperties2AMD const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -70408,7 +68133,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderCoreProperties2AMD;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderCoreProperties2AMD;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::ShaderCorePropertiesFlagsAMD shaderCoreFeatures = {};
     uint32_t activeComputeUnitCount = {};
@@ -70436,23 +68161,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCorePropertiesAMD( PhysicalDeviceShaderCorePropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceShaderCorePropertiesAMD( VkPhysicalDeviceShaderCorePropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceShaderCorePropertiesAMD( *reinterpret_cast<PhysicalDeviceShaderCorePropertiesAMD const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderCorePropertiesAMD & operator=( PhysicalDeviceShaderCorePropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceShaderCorePropertiesAMD & operator=( VkPhysicalDeviceShaderCorePropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceShaderCorePropertiesAMD & operator=( PhysicalDeviceShaderCorePropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceShaderCorePropertiesAMD ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceShaderCorePropertiesAMD const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -70497,7 +68217,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderCorePropertiesAMD;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderCorePropertiesAMD;
     void* pNext = {};
     uint32_t shaderEngineCount = {};
     uint32_t shaderArraysPerEngineCount = {};
@@ -70537,23 +68257,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT( PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT( VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT( *reinterpret_cast<PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT & operator=( PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT & operator=( VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT & operator=( PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT ) );
-      return *this;
-    }
-
     PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -70597,7 +68312,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 shaderDemoteToHelperInvocation = {};
 
@@ -70624,23 +68339,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderDrawParametersFeatures( PhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceShaderDrawParametersFeatures( VkPhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceShaderDrawParametersFeatures( *reinterpret_cast<PhysicalDeviceShaderDrawParametersFeatures const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDrawParametersFeatures & operator=( PhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceShaderDrawParametersFeatures & operator=( VkPhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceShaderDrawParametersFeatures & operator=( PhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceShaderDrawParametersFeatures ) );
-      return *this;
-    }
-
     PhysicalDeviceShaderDrawParametersFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -70684,7 +68394,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderDrawParametersFeatures;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderDrawParametersFeatures;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters = {};
 
@@ -70712,23 +68422,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderFloat16Int8Features( PhysicalDeviceShaderFloat16Int8Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceShaderFloat16Int8Features( VkPhysicalDeviceShaderFloat16Int8Features const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceShaderFloat16Int8Features( *reinterpret_cast<PhysicalDeviceShaderFloat16Int8Features const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloat16Int8Features & operator=( PhysicalDeviceShaderFloat16Int8Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceShaderFloat16Int8Features & operator=( VkPhysicalDeviceShaderFloat16Int8Features const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceShaderFloat16Int8Features & operator=( PhysicalDeviceShaderFloat16Int8Features const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceShaderFloat16Int8Features ) );
-      return *this;
-    }
-
     PhysicalDeviceShaderFloat16Int8Features & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -70779,7 +68484,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderFloat16Int8Features;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderFloat16Int8Features;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16 = {};
     VULKAN_HPP_NAMESPACE::Bool32 shaderInt8 = {};
@@ -70809,23 +68514,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderImageAtomicInt64FeaturesEXT( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceShaderImageAtomicInt64FeaturesEXT( VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceShaderImageAtomicInt64FeaturesEXT( *reinterpret_cast<PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageAtomicInt64FeaturesEXT & operator=( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceShaderImageAtomicInt64FeaturesEXT & operator=( VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceShaderImageAtomicInt64FeaturesEXT & operator=( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT ) );
-      return *this;
-    }
-
     PhysicalDeviceShaderImageAtomicInt64FeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -70876,7 +68576,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderImageAtomicInt64FeaturesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderImageAtomicInt64FeaturesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 shaderImageInt64Atomics = {};
     VULKAN_HPP_NAMESPACE::Bool32 sparseImageInt64Atomics = {};
@@ -70904,23 +68604,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderImageFootprintFeaturesNV( PhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceShaderImageFootprintFeaturesNV( VkPhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceShaderImageFootprintFeaturesNV( *reinterpret_cast<PhysicalDeviceShaderImageFootprintFeaturesNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageFootprintFeaturesNV & operator=( PhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceShaderImageFootprintFeaturesNV & operator=( VkPhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceShaderImageFootprintFeaturesNV & operator=( PhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceShaderImageFootprintFeaturesNV ) );
-      return *this;
-    }
-
     PhysicalDeviceShaderImageFootprintFeaturesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -70964,7 +68659,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderImageFootprintFeaturesNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderImageFootprintFeaturesNV;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 imageFootprint = {};
 
@@ -70991,23 +68686,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL( VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL( *reinterpret_cast<PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL & operator=( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL & operator=( VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL & operator=( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL ) );
-      return *this;
-    }
-
     PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -71051,7 +68741,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderIntegerFunctions2FeaturesINTEL;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderIntegerFunctions2FeaturesINTEL;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerFunctions2 = {};
 
@@ -71078,23 +68768,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSMBuiltinsFeaturesNV( PhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceShaderSMBuiltinsFeaturesNV( VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceShaderSMBuiltinsFeaturesNV( *reinterpret_cast<PhysicalDeviceShaderSMBuiltinsFeaturesNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSMBuiltinsFeaturesNV & operator=( PhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceShaderSMBuiltinsFeaturesNV & operator=( VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceShaderSMBuiltinsFeaturesNV & operator=( PhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceShaderSMBuiltinsFeaturesNV ) );
-      return *this;
-    }
-
     PhysicalDeviceShaderSMBuiltinsFeaturesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -71138,7 +68823,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderSmBuiltinsFeaturesNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderSmBuiltinsFeaturesNV;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 shaderSMBuiltins = {};
 
@@ -71165,23 +68850,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSMBuiltinsPropertiesNV( PhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceShaderSMBuiltinsPropertiesNV( VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceShaderSMBuiltinsPropertiesNV( *reinterpret_cast<PhysicalDeviceShaderSMBuiltinsPropertiesNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSMBuiltinsPropertiesNV & operator=( PhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceShaderSMBuiltinsPropertiesNV & operator=( VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceShaderSMBuiltinsPropertiesNV & operator=( PhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceShaderSMBuiltinsPropertiesNV ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -71214,7 +68894,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderSmBuiltinsPropertiesNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderSmBuiltinsPropertiesNV;
     void* pNext = {};
     uint32_t shaderSMCount = {};
     uint32_t shaderWarpsPerSM = {};
@@ -71242,23 +68922,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSubgroupExtendedTypesFeatures( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceShaderSubgroupExtendedTypesFeatures( VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceShaderSubgroupExtendedTypesFeatures( *reinterpret_cast<PhysicalDeviceShaderSubgroupExtendedTypesFeatures const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupExtendedTypesFeatures & operator=( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceShaderSubgroupExtendedTypesFeatures & operator=( VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceShaderSubgroupExtendedTypesFeatures & operator=( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceShaderSubgroupExtendedTypesFeatures ) );
-      return *this;
-    }
-
     PhysicalDeviceShaderSubgroupExtendedTypesFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -71302,7 +68977,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderSubgroupExtendedTypesFeatures;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderSubgroupExtendedTypesFeatures;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes = {};
 
@@ -71330,23 +69005,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderTerminateInvocationFeaturesKHR( PhysicalDeviceShaderTerminateInvocationFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceShaderTerminateInvocationFeaturesKHR( VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceShaderTerminateInvocationFeaturesKHR( *reinterpret_cast<PhysicalDeviceShaderTerminateInvocationFeaturesKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTerminateInvocationFeaturesKHR & operator=( PhysicalDeviceShaderTerminateInvocationFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceShaderTerminateInvocationFeaturesKHR & operator=( VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeaturesKHR const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceShaderTerminateInvocationFeaturesKHR & operator=( PhysicalDeviceShaderTerminateInvocationFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceShaderTerminateInvocationFeaturesKHR ) );
-      return *this;
-    }
-
     PhysicalDeviceShaderTerminateInvocationFeaturesKHR & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -71390,7 +69060,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderTerminateInvocationFeaturesKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderTerminateInvocationFeaturesKHR;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 shaderTerminateInvocation = {};
 
@@ -71417,23 +69087,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceShadingRateImageFeaturesNV( PhysicalDeviceShadingRateImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceShadingRateImageFeaturesNV( VkPhysicalDeviceShadingRateImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceShadingRateImageFeaturesNV( *reinterpret_cast<PhysicalDeviceShadingRateImageFeaturesNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShadingRateImageFeaturesNV & operator=( PhysicalDeviceShadingRateImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceShadingRateImageFeaturesNV & operator=( VkPhysicalDeviceShadingRateImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceShadingRateImageFeaturesNV & operator=( PhysicalDeviceShadingRateImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceShadingRateImageFeaturesNV ) );
-      return *this;
-    }
-
     PhysicalDeviceShadingRateImageFeaturesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -71484,7 +69149,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShadingRateImageFeaturesNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShadingRateImageFeaturesNV;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 shadingRateImage = {};
     VULKAN_HPP_NAMESPACE::Bool32 shadingRateCoarseSampleOrder = {};
@@ -71512,23 +69177,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceShadingRateImagePropertiesNV( PhysicalDeviceShadingRateImagePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceShadingRateImagePropertiesNV( VkPhysicalDeviceShadingRateImagePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceShadingRateImagePropertiesNV( *reinterpret_cast<PhysicalDeviceShadingRateImagePropertiesNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShadingRateImagePropertiesNV & operator=( PhysicalDeviceShadingRateImagePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceShadingRateImagePropertiesNV & operator=( VkPhysicalDeviceShadingRateImagePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceShadingRateImagePropertiesNV & operator=( PhysicalDeviceShadingRateImagePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceShadingRateImagePropertiesNV ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceShadingRateImagePropertiesNV const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -71562,7 +69222,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShadingRateImagePropertiesNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShadingRateImagePropertiesNV;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Extent2D shadingRateTexelSize = {};
     uint32_t shadingRatePaletteSize = {};
@@ -71591,23 +69251,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupProperties( PhysicalDeviceSubgroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceSubgroupProperties( VkPhysicalDeviceSubgroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceSubgroupProperties( *reinterpret_cast<PhysicalDeviceSubgroupProperties const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubgroupProperties & operator=( PhysicalDeviceSubgroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceSubgroupProperties & operator=( VkPhysicalDeviceSubgroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceSubgroupProperties & operator=( PhysicalDeviceSubgroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceSubgroupProperties ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceSubgroupProperties const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -71642,7 +69297,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSubgroupProperties;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSubgroupProperties;
     void* pNext = {};
     uint32_t subgroupSize = {};
     VULKAN_HPP_NAMESPACE::ShaderStageFlags supportedStages = {};
@@ -71672,23 +69327,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupSizeControlFeaturesEXT( PhysicalDeviceSubgroupSizeControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceSubgroupSizeControlFeaturesEXT( VkPhysicalDeviceSubgroupSizeControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceSubgroupSizeControlFeaturesEXT( *reinterpret_cast<PhysicalDeviceSubgroupSizeControlFeaturesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubgroupSizeControlFeaturesEXT & operator=( PhysicalDeviceSubgroupSizeControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceSubgroupSizeControlFeaturesEXT & operator=( VkPhysicalDeviceSubgroupSizeControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeaturesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceSubgroupSizeControlFeaturesEXT & operator=( PhysicalDeviceSubgroupSizeControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceSubgroupSizeControlFeaturesEXT ) );
-      return *this;
-    }
-
     PhysicalDeviceSubgroupSizeControlFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -71739,7 +69389,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSubgroupSizeControlFeaturesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSubgroupSizeControlFeaturesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 subgroupSizeControl = {};
     VULKAN_HPP_NAMESPACE::Bool32 computeFullSubgroups = {};
@@ -71767,23 +69417,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupSizeControlPropertiesEXT( PhysicalDeviceSubgroupSizeControlPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceSubgroupSizeControlPropertiesEXT( VkPhysicalDeviceSubgroupSizeControlPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceSubgroupSizeControlPropertiesEXT( *reinterpret_cast<PhysicalDeviceSubgroupSizeControlPropertiesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubgroupSizeControlPropertiesEXT & operator=( PhysicalDeviceSubgroupSizeControlPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceSubgroupSizeControlPropertiesEXT & operator=( VkPhysicalDeviceSubgroupSizeControlPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlPropertiesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceSubgroupSizeControlPropertiesEXT & operator=( PhysicalDeviceSubgroupSizeControlPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceSubgroupSizeControlPropertiesEXT ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceSubgroupSizeControlPropertiesEXT const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -71818,7 +69463,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSubgroupSizeControlPropertiesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSubgroupSizeControlPropertiesEXT;
     void* pNext = {};
     uint32_t minSubgroupSize = {};
     uint32_t maxSubgroupSize = {};
@@ -71848,23 +69493,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceTexelBufferAlignmentFeaturesEXT( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceTexelBufferAlignmentFeaturesEXT( VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceTexelBufferAlignmentFeaturesEXT( *reinterpret_cast<PhysicalDeviceTexelBufferAlignmentFeaturesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTexelBufferAlignmentFeaturesEXT & operator=( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceTexelBufferAlignmentFeaturesEXT & operator=( VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceTexelBufferAlignmentFeaturesEXT & operator=( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceTexelBufferAlignmentFeaturesEXT ) );
-      return *this;
-    }
-
     PhysicalDeviceTexelBufferAlignmentFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -71908,7 +69548,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTexelBufferAlignmentFeaturesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTexelBufferAlignmentFeaturesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 texelBufferAlignment = {};
 
@@ -71935,23 +69575,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceTexelBufferAlignmentPropertiesEXT( PhysicalDeviceTexelBufferAlignmentPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceTexelBufferAlignmentPropertiesEXT( VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceTexelBufferAlignmentPropertiesEXT( *reinterpret_cast<PhysicalDeviceTexelBufferAlignmentPropertiesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTexelBufferAlignmentPropertiesEXT & operator=( PhysicalDeviceTexelBufferAlignmentPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceTexelBufferAlignmentPropertiesEXT & operator=( VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentPropertiesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceTexelBufferAlignmentPropertiesEXT & operator=( PhysicalDeviceTexelBufferAlignmentPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceTexelBufferAlignmentPropertiesEXT ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -71986,7 +69621,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTexelBufferAlignmentPropertiesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTexelBufferAlignmentPropertiesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::DeviceSize storageTexelBufferOffsetAlignmentBytes = {};
     VULKAN_HPP_NAMESPACE::Bool32 storageTexelBufferOffsetSingleTexelAlignment = {};
@@ -72016,23 +69651,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT( PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT( VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT( *reinterpret_cast<PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT & operator=( PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT & operator=( VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT & operator=( PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT ) );
-      return *this;
-    }
-
     PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -72076,7 +69706,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTextureCompressionAstcHdrFeaturesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTextureCompressionAstcHdrFeaturesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_HDR = {};
 
@@ -72103,23 +69733,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceTimelineSemaphoreFeatures( PhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceTimelineSemaphoreFeatures( VkPhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceTimelineSemaphoreFeatures( *reinterpret_cast<PhysicalDeviceTimelineSemaphoreFeatures const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTimelineSemaphoreFeatures & operator=( PhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceTimelineSemaphoreFeatures & operator=( VkPhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceTimelineSemaphoreFeatures & operator=( PhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceTimelineSemaphoreFeatures ) );
-      return *this;
-    }
-
     PhysicalDeviceTimelineSemaphoreFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -72163,7 +69788,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTimelineSemaphoreFeatures;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTimelineSemaphoreFeatures;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore = {};
 
@@ -72191,23 +69816,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceTimelineSemaphoreProperties( PhysicalDeviceTimelineSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceTimelineSemaphoreProperties( VkPhysicalDeviceTimelineSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceTimelineSemaphoreProperties( *reinterpret_cast<PhysicalDeviceTimelineSemaphoreProperties const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTimelineSemaphoreProperties & operator=( PhysicalDeviceTimelineSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceTimelineSemaphoreProperties & operator=( VkPhysicalDeviceTimelineSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceTimelineSemaphoreProperties & operator=( PhysicalDeviceTimelineSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceTimelineSemaphoreProperties ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceTimelineSemaphoreProperties const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -72239,7 +69859,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTimelineSemaphoreProperties;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTimelineSemaphoreProperties;
     void* pNext = {};
     uint64_t maxTimelineSemaphoreValueDifference = {};
 
@@ -72267,23 +69887,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceTransformFeedbackFeaturesEXT( PhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceTransformFeedbackFeaturesEXT( VkPhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceTransformFeedbackFeaturesEXT( *reinterpret_cast<PhysicalDeviceTransformFeedbackFeaturesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTransformFeedbackFeaturesEXT & operator=( PhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceTransformFeedbackFeaturesEXT & operator=( VkPhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceTransformFeedbackFeaturesEXT & operator=( PhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceTransformFeedbackFeaturesEXT ) );
-      return *this;
-    }
-
     PhysicalDeviceTransformFeedbackFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -72334,7 +69949,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTransformFeedbackFeaturesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTransformFeedbackFeaturesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 transformFeedback = {};
     VULKAN_HPP_NAMESPACE::Bool32 geometryStreams = {};
@@ -72362,23 +69977,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceTransformFeedbackPropertiesEXT( PhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceTransformFeedbackPropertiesEXT( VkPhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceTransformFeedbackPropertiesEXT( *reinterpret_cast<PhysicalDeviceTransformFeedbackPropertiesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTransformFeedbackPropertiesEXT & operator=( PhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceTransformFeedbackPropertiesEXT & operator=( VkPhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceTransformFeedbackPropertiesEXT & operator=( PhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceTransformFeedbackPropertiesEXT ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceTransformFeedbackPropertiesEXT const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -72419,7 +70029,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTransformFeedbackPropertiesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTransformFeedbackPropertiesEXT;
     void* pNext = {};
     uint32_t maxTransformFeedbackStreams = {};
     uint32_t maxTransformFeedbackBuffers = {};
@@ -72455,23 +70065,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceUniformBufferStandardLayoutFeatures( PhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceUniformBufferStandardLayoutFeatures( VkPhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceUniformBufferStandardLayoutFeatures( *reinterpret_cast<PhysicalDeviceUniformBufferStandardLayoutFeatures const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceUniformBufferStandardLayoutFeatures & operator=( PhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceUniformBufferStandardLayoutFeatures & operator=( VkPhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceUniformBufferStandardLayoutFeatures & operator=( PhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceUniformBufferStandardLayoutFeatures ) );
-      return *this;
-    }
-
     PhysicalDeviceUniformBufferStandardLayoutFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -72515,7 +70120,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceUniformBufferStandardLayoutFeatures;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceUniformBufferStandardLayoutFeatures;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout = {};
 
@@ -72543,23 +70148,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceVariablePointersFeatures( PhysicalDeviceVariablePointersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceVariablePointersFeatures( VkPhysicalDeviceVariablePointersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceVariablePointersFeatures( *reinterpret_cast<PhysicalDeviceVariablePointersFeatures const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVariablePointersFeatures & operator=( PhysicalDeviceVariablePointersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceVariablePointersFeatures & operator=( VkPhysicalDeviceVariablePointersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceVariablePointersFeatures & operator=( PhysicalDeviceVariablePointersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceVariablePointersFeatures ) );
-      return *this;
-    }
-
     PhysicalDeviceVariablePointersFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -72610,7 +70210,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVariablePointersFeatures;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVariablePointersFeatures;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer = {};
     VULKAN_HPP_NAMESPACE::Bool32 variablePointers = {};
@@ -72641,23 +70241,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexAttributeDivisorFeaturesEXT( PhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceVertexAttributeDivisorFeaturesEXT( VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceVertexAttributeDivisorFeaturesEXT( *reinterpret_cast<PhysicalDeviceVertexAttributeDivisorFeaturesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexAttributeDivisorFeaturesEXT & operator=( PhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceVertexAttributeDivisorFeaturesEXT & operator=( VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceVertexAttributeDivisorFeaturesEXT & operator=( PhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceVertexAttributeDivisorFeaturesEXT ) );
-      return *this;
-    }
-
     PhysicalDeviceVertexAttributeDivisorFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -72708,7 +70303,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVertexAttributeDivisorFeaturesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVertexAttributeDivisorFeaturesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateDivisor = {};
     VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateZeroDivisor = {};
@@ -72736,23 +70331,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexAttributeDivisorPropertiesEXT( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceVertexAttributeDivisorPropertiesEXT( VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceVertexAttributeDivisorPropertiesEXT( *reinterpret_cast<PhysicalDeviceVertexAttributeDivisorPropertiesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexAttributeDivisorPropertiesEXT & operator=( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceVertexAttributeDivisorPropertiesEXT & operator=( VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceVertexAttributeDivisorPropertiesEXT & operator=( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceVertexAttributeDivisorPropertiesEXT ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -72784,7 +70374,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesEXT;
     void* pNext = {};
     uint32_t maxVertexAttribDivisor = {};
 
@@ -72811,23 +70401,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan11Features( PhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceVulkan11Features( VkPhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceVulkan11Features( *reinterpret_cast<PhysicalDeviceVulkan11Features const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & operator=( PhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceVulkan11Features & operator=( VkPhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceVulkan11Features & operator=( PhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceVulkan11Features ) );
-      return *this;
-    }
-
     PhysicalDeviceVulkan11Features & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -72948,7 +70533,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkan11Features;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkan11Features;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess = {};
     VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess = {};
@@ -72986,23 +70571,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Properties( PhysicalDeviceVulkan11Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceVulkan11Properties( VkPhysicalDeviceVulkan11Properties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceVulkan11Properties( *reinterpret_cast<PhysicalDeviceVulkan11Properties const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Properties & operator=( PhysicalDeviceVulkan11Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceVulkan11Properties & operator=( VkPhysicalDeviceVulkan11Properties const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceVulkan11Properties & operator=( PhysicalDeviceVulkan11Properties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceVulkan11Properties ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceVulkan11Properties const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -73048,7 +70628,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkan11Properties;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkan11Properties;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> deviceUUID = {};
     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> driverUUID = {};
@@ -73089,23 +70669,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan12Features( PhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceVulkan12Features( VkPhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceVulkan12Features( *reinterpret_cast<PhysicalDeviceVulkan12Features const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & operator=( PhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceVulkan12Features & operator=( VkPhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceVulkan12Features & operator=( PhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceVulkan12Features ) );
-      return *this;
-    }
-
     PhysicalDeviceVulkan12Features & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -73471,7 +71046,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkan12Features;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkan12Features;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 samplerMirrorClampToEdge = {};
     VULKAN_HPP_NAMESPACE::Bool32 drawIndirectCount = {};
@@ -73544,23 +71119,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Properties( PhysicalDeviceVulkan12Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceVulkan12Properties( VkPhysicalDeviceVulkan12Properties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceVulkan12Properties( *reinterpret_cast<PhysicalDeviceVulkan12Properties const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Properties & operator=( PhysicalDeviceVulkan12Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceVulkan12Properties & operator=( VkPhysicalDeviceVulkan12Properties const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceVulkan12Properties & operator=( PhysicalDeviceVulkan12Properties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceVulkan12Properties ) );
-      return *this;
-    }
-
 
     operator VkPhysicalDeviceVulkan12Properties const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -73643,7 +71213,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkan12Properties;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkan12Properties;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::DriverId driverID = VULKAN_HPP_NAMESPACE::DriverId::eAmdProprietary;
     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_NAME_SIZE> driverName = {};
@@ -73721,23 +71291,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkanMemoryModelFeatures( PhysicalDeviceVulkanMemoryModelFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceVulkanMemoryModelFeatures( VkPhysicalDeviceVulkanMemoryModelFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceVulkanMemoryModelFeatures( *reinterpret_cast<PhysicalDeviceVulkanMemoryModelFeatures const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanMemoryModelFeatures & operator=( PhysicalDeviceVulkanMemoryModelFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceVulkanMemoryModelFeatures & operator=( VkPhysicalDeviceVulkanMemoryModelFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceVulkanMemoryModelFeatures & operator=( PhysicalDeviceVulkanMemoryModelFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceVulkanMemoryModelFeatures ) );
-      return *this;
-    }
-
     PhysicalDeviceVulkanMemoryModelFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -73795,7 +71360,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkanMemoryModelFeatures;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkanMemoryModelFeatures;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel = {};
     VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope = {};
@@ -73825,23 +71390,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PhysicalDeviceYcbcrImageArraysFeaturesEXT( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PhysicalDeviceYcbcrImageArraysFeaturesEXT( VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PhysicalDeviceYcbcrImageArraysFeaturesEXT( *reinterpret_cast<PhysicalDeviceYcbcrImageArraysFeaturesEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcrImageArraysFeaturesEXT & operator=( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PhysicalDeviceYcbcrImageArraysFeaturesEXT & operator=( VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT const *>( &rhs );
       return *this;
     }
 
-    PhysicalDeviceYcbcrImageArraysFeaturesEXT & operator=( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PhysicalDeviceYcbcrImageArraysFeaturesEXT ) );
-      return *this;
-    }
-
     PhysicalDeviceYcbcrImageArraysFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -73885,7 +71445,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceYcbcrImageArraysFeaturesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceYcbcrImageArraysFeaturesEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 ycbcrImageArrays = {};
 
@@ -73912,23 +71472,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineColorBlendAdvancedStateCreateInfoEXT( PipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineColorBlendAdvancedStateCreateInfoEXT( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineColorBlendAdvancedStateCreateInfoEXT( *reinterpret_cast<PipelineColorBlendAdvancedStateCreateInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAdvancedStateCreateInfoEXT & operator=( PipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineColorBlendAdvancedStateCreateInfoEXT & operator=( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT const *>( &rhs );
       return *this;
     }
 
-    PipelineColorBlendAdvancedStateCreateInfoEXT & operator=( PipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) );
-      return *this;
-    }
-
     PipelineColorBlendAdvancedStateCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -73986,7 +71541,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 srcPremultiplied = {};
     VULKAN_HPP_NAMESPACE::Bool32 dstPremultiplied = {};
@@ -74015,23 +71570,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineCompilerControlCreateInfoAMD( PipelineCompilerControlCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineCompilerControlCreateInfoAMD( VkPipelineCompilerControlCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineCompilerControlCreateInfoAMD( *reinterpret_cast<PipelineCompilerControlCreateInfoAMD const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineCompilerControlCreateInfoAMD & operator=( PipelineCompilerControlCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineCompilerControlCreateInfoAMD & operator=( VkPipelineCompilerControlCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD const *>( &rhs );
       return *this;
     }
 
-    PipelineCompilerControlCreateInfoAMD & operator=( PipelineCompilerControlCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineCompilerControlCreateInfoAMD ) );
-      return *this;
-    }
-
     PipelineCompilerControlCreateInfoAMD & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -74075,7 +71625,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineCompilerControlCreateInfoAMD;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineCompilerControlCreateInfoAMD;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PipelineCompilerControlFlagsAMD compilerControlFlags = {};
 
@@ -74102,9 +71652,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineCoverageModulationStateCreateInfoNV( PipelineCoverageModulationStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineCoverageModulationStateCreateInfoNV( VkPipelineCoverageModulationStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineCoverageModulationStateCreateInfoNV( *reinterpret_cast<PipelineCoverageModulationStateCreateInfoNV const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     PipelineCoverageModulationStateCreateInfoNV( VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateFlagsNV flags_, VULKAN_HPP_NAMESPACE::CoverageModulationModeNV coverageModulationMode_, VULKAN_HPP_NAMESPACE::Bool32 coverageModulationTableEnable_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const float> const & coverageModulationTable_ )
@@ -74113,18 +71662,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV & operator=( PipelineCoverageModulationStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineCoverageModulationStateCreateInfoNV & operator=( VkPipelineCoverageModulationStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV const *>( &rhs );
       return *this;
     }
 
-    PipelineCoverageModulationStateCreateInfoNV & operator=( PipelineCoverageModulationStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineCoverageModulationStateCreateInfoNV ) );
-      return *this;
-    }
-
     PipelineCoverageModulationStateCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -74205,7 +71750,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineCoverageModulationStateCreateInfoNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineCoverageModulationStateCreateInfoNV;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateFlagsNV flags = {};
     VULKAN_HPP_NAMESPACE::CoverageModulationModeNV coverageModulationMode = VULKAN_HPP_NAMESPACE::CoverageModulationModeNV::eNone;
@@ -74236,23 +71781,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineCoverageReductionStateCreateInfoNV( PipelineCoverageReductionStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineCoverageReductionStateCreateInfoNV( VkPipelineCoverageReductionStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineCoverageReductionStateCreateInfoNV( *reinterpret_cast<PipelineCoverageReductionStateCreateInfoNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineCoverageReductionStateCreateInfoNV & operator=( PipelineCoverageReductionStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineCoverageReductionStateCreateInfoNV & operator=( VkPipelineCoverageReductionStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV const *>( &rhs );
       return *this;
     }
 
-    PipelineCoverageReductionStateCreateInfoNV & operator=( PipelineCoverageReductionStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineCoverageReductionStateCreateInfoNV ) );
-      return *this;
-    }
-
     PipelineCoverageReductionStateCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -74303,7 +71843,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineCoverageReductionStateCreateInfoNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineCoverageReductionStateCreateInfoNV;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateFlagsNV flags = {};
     VULKAN_HPP_NAMESPACE::CoverageReductionModeNV coverageReductionMode = VULKAN_HPP_NAMESPACE::CoverageReductionModeNV::eMerge;
@@ -74331,23 +71871,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineCoverageToColorStateCreateInfoNV( PipelineCoverageToColorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineCoverageToColorStateCreateInfoNV( VkPipelineCoverageToColorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineCoverageToColorStateCreateInfoNV( *reinterpret_cast<PipelineCoverageToColorStateCreateInfoNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineCoverageToColorStateCreateInfoNV & operator=( PipelineCoverageToColorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineCoverageToColorStateCreateInfoNV & operator=( VkPipelineCoverageToColorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV const *>( &rhs );
       return *this;
     }
 
-    PipelineCoverageToColorStateCreateInfoNV & operator=( PipelineCoverageToColorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineCoverageToColorStateCreateInfoNV ) );
-      return *this;
-    }
-
     PipelineCoverageToColorStateCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -74405,7 +71940,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineCoverageToColorStateCreateInfoNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineCoverageToColorStateCreateInfoNV;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateFlagsNV flags = {};
     VULKAN_HPP_NAMESPACE::Bool32 coverageToColorEnable = {};
@@ -74433,23 +71968,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineCreationFeedbackEXT( PipelineCreationFeedbackEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineCreationFeedbackEXT( VkPipelineCreationFeedbackEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineCreationFeedbackEXT( *reinterpret_cast<PipelineCreationFeedbackEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackEXT & operator=( PipelineCreationFeedbackEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineCreationFeedbackEXT & operator=( VkPipelineCreationFeedbackEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT const *>( &rhs );
       return *this;
     }
 
-    PipelineCreationFeedbackEXT & operator=( PipelineCreationFeedbackEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineCreationFeedbackEXT ) );
-      return *this;
-    }
-
 
     operator VkPipelineCreationFeedbackEXT const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -74500,9 +72030,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineCreationFeedbackCreateInfoEXT( PipelineCreationFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineCreationFeedbackCreateInfoEXT( VkPipelineCreationFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineCreationFeedbackCreateInfoEXT( *reinterpret_cast<PipelineCreationFeedbackCreateInfoEXT const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     PipelineCreationFeedbackCreateInfoEXT( VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT* pPipelineCreationFeedback_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT> const & pipelineStageCreationFeedbacks_ )
@@ -74511,18 +72040,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackCreateInfoEXT & operator=( PipelineCreationFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineCreationFeedbackCreateInfoEXT & operator=( VkPipelineCreationFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfoEXT const *>( &rhs );
       return *this;
     }
 
-    PipelineCreationFeedbackCreateInfoEXT & operator=( PipelineCreationFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineCreationFeedbackCreateInfoEXT ) );
-      return *this;
-    }
-
     PipelineCreationFeedbackCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -74589,7 +72114,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineCreationFeedbackCreateInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineCreationFeedbackCreateInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT* pPipelineCreationFeedback = {};
     uint32_t pipelineStageCreationFeedbackCount = {};
@@ -74618,9 +72143,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineDiscardRectangleStateCreateInfoEXT( PipelineDiscardRectangleStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineDiscardRectangleStateCreateInfoEXT( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineDiscardRectangleStateCreateInfoEXT( *reinterpret_cast<PipelineDiscardRectangleStateCreateInfoEXT const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     PipelineDiscardRectangleStateCreateInfoEXT( VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateFlagsEXT flags_, VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT discardRectangleMode_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & discardRectangles_ )
@@ -74629,18 +72153,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT & operator=( PipelineDiscardRectangleStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineDiscardRectangleStateCreateInfoEXT & operator=( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT const *>( &rhs );
       return *this;
     }
 
-    PipelineDiscardRectangleStateCreateInfoEXT & operator=( PipelineDiscardRectangleStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) );
-      return *this;
-    }
-
     PipelineDiscardRectangleStateCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -74714,7 +72234,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineDiscardRectangleStateCreateInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineDiscardRectangleStateCreateInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateFlagsEXT flags = {};
     VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT discardRectangleMode = VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT::eInclusive;
@@ -74744,23 +72264,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV( PipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineFragmentShadingRateEnumStateCreateInfoNV( VkPipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineFragmentShadingRateEnumStateCreateInfoNV( *reinterpret_cast<PipelineFragmentShadingRateEnumStateCreateInfoNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV & operator=( PipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineFragmentShadingRateEnumStateCreateInfoNV & operator=( VkPipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV const *>( &rhs );
       return *this;
     }
 
-    PipelineFragmentShadingRateEnumStateCreateInfoNV & operator=( PipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineFragmentShadingRateEnumStateCreateInfoNV ) );
-      return *this;
-    }
-
     PipelineFragmentShadingRateEnumStateCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -74818,7 +72333,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineFragmentShadingRateEnumStateCreateInfoNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineFragmentShadingRateEnumStateCreateInfoNV;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::FragmentShadingRateTypeNV shadingRateType = VULKAN_HPP_NAMESPACE::FragmentShadingRateTypeNV::eFragmentSize;
     VULKAN_HPP_NAMESPACE::FragmentShadingRateNV shadingRate = VULKAN_HPP_NAMESPACE::FragmentShadingRateNV::e1InvocationPerPixel;
@@ -74847,23 +72362,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR( PipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineFragmentShadingRateStateCreateInfoKHR( VkPipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineFragmentShadingRateStateCreateInfoKHR( *reinterpret_cast<PipelineFragmentShadingRateStateCreateInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR & operator=( PipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineFragmentShadingRateStateCreateInfoKHR & operator=( VkPipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR const *>( &rhs );
       return *this;
     }
 
-    PipelineFragmentShadingRateStateCreateInfoKHR & operator=( PipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineFragmentShadingRateStateCreateInfoKHR ) );
-      return *this;
-    }
-
     PipelineFragmentShadingRateStateCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -74914,7 +72424,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineFragmentShadingRateStateCreateInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineFragmentShadingRateStateCreateInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Extent2D fragmentSize = {};
     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR, 2> combinerOps = {};
@@ -74942,23 +72452,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineRasterizationConservativeStateCreateInfoEXT( PipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineRasterizationConservativeStateCreateInfoEXT( VkPipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineRasterizationConservativeStateCreateInfoEXT( *reinterpret_cast<PipelineRasterizationConservativeStateCreateInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationConservativeStateCreateInfoEXT & operator=( PipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineRasterizationConservativeStateCreateInfoEXT & operator=( VkPipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT const *>( &rhs );
       return *this;
     }
 
-    PipelineRasterizationConservativeStateCreateInfoEXT & operator=( PipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineRasterizationConservativeStateCreateInfoEXT ) );
-      return *this;
-    }
-
     PipelineRasterizationConservativeStateCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -75016,7 +72521,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationConservativeStateCreateInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationConservativeStateCreateInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateFlagsEXT flags = {};
     VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT conservativeRasterizationMode = VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT::eDisabled;
@@ -75045,23 +72550,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineRasterizationDepthClipStateCreateInfoEXT( PipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineRasterizationDepthClipStateCreateInfoEXT( VkPipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineRasterizationDepthClipStateCreateInfoEXT( *reinterpret_cast<PipelineRasterizationDepthClipStateCreateInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationDepthClipStateCreateInfoEXT & operator=( PipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineRasterizationDepthClipStateCreateInfoEXT & operator=( VkPipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT const *>( &rhs );
       return *this;
     }
 
-    PipelineRasterizationDepthClipStateCreateInfoEXT & operator=( PipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineRasterizationDepthClipStateCreateInfoEXT ) );
-      return *this;
-    }
-
     PipelineRasterizationDepthClipStateCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -75112,7 +72612,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationDepthClipStateCreateInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationDepthClipStateCreateInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateFlagsEXT flags = {};
     VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable = {};
@@ -75140,23 +72640,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineRasterizationLineStateCreateInfoEXT( PipelineRasterizationLineStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineRasterizationLineStateCreateInfoEXT( VkPipelineRasterizationLineStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineRasterizationLineStateCreateInfoEXT( *reinterpret_cast<PipelineRasterizationLineStateCreateInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfoEXT & operator=( PipelineRasterizationLineStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineRasterizationLineStateCreateInfoEXT & operator=( VkPipelineRasterizationLineStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT const *>( &rhs );
       return *this;
     }
 
-    PipelineRasterizationLineStateCreateInfoEXT & operator=( PipelineRasterizationLineStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineRasterizationLineStateCreateInfoEXT ) );
-      return *this;
-    }
-
     PipelineRasterizationLineStateCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -75221,7 +72716,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationLineStateCreateInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationLineStateCreateInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::LineRasterizationModeEXT lineRasterizationMode = VULKAN_HPP_NAMESPACE::LineRasterizationModeEXT::eDefault;
     VULKAN_HPP_NAMESPACE::Bool32 stippledLineEnable = {};
@@ -75251,23 +72746,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineRasterizationStateRasterizationOrderAMD( PipelineRasterizationStateRasterizationOrderAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineRasterizationStateRasterizationOrderAMD( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineRasterizationStateRasterizationOrderAMD( *reinterpret_cast<PipelineRasterizationStateRasterizationOrderAMD const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateRasterizationOrderAMD & operator=( PipelineRasterizationStateRasterizationOrderAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineRasterizationStateRasterizationOrderAMD & operator=( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD const *>( &rhs );
       return *this;
     }
 
-    PipelineRasterizationStateRasterizationOrderAMD & operator=( PipelineRasterizationStateRasterizationOrderAMD const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineRasterizationStateRasterizationOrderAMD ) );
-      return *this;
-    }
-
     PipelineRasterizationStateRasterizationOrderAMD & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -75311,7 +72801,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationStateRasterizationOrderAMD;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationStateRasterizationOrderAMD;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::RasterizationOrderAMD rasterizationOrder = VULKAN_HPP_NAMESPACE::RasterizationOrderAMD::eStrict;
 
@@ -75338,23 +72828,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineRasterizationStateStreamCreateInfoEXT( PipelineRasterizationStateStreamCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineRasterizationStateStreamCreateInfoEXT( VkPipelineRasterizationStateStreamCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineRasterizationStateStreamCreateInfoEXT( *reinterpret_cast<PipelineRasterizationStateStreamCreateInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateStreamCreateInfoEXT & operator=( PipelineRasterizationStateStreamCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineRasterizationStateStreamCreateInfoEXT & operator=( VkPipelineRasterizationStateStreamCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT const *>( &rhs );
       return *this;
     }
 
-    PipelineRasterizationStateStreamCreateInfoEXT & operator=( PipelineRasterizationStateStreamCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineRasterizationStateStreamCreateInfoEXT ) );
-      return *this;
-    }
-
     PipelineRasterizationStateStreamCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -75405,7 +72890,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationStateStreamCreateInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationStateStreamCreateInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateFlagsEXT flags = {};
     uint32_t rasterizationStream = {};
@@ -75433,23 +72918,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineRepresentativeFragmentTestStateCreateInfoNV( PipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineRepresentativeFragmentTestStateCreateInfoNV( VkPipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineRepresentativeFragmentTestStateCreateInfoNV( *reinterpret_cast<PipelineRepresentativeFragmentTestStateCreateInfoNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineRepresentativeFragmentTestStateCreateInfoNV & operator=( PipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineRepresentativeFragmentTestStateCreateInfoNV & operator=( VkPipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV const *>( &rhs );
       return *this;
     }
 
-    PipelineRepresentativeFragmentTestStateCreateInfoNV & operator=( PipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineRepresentativeFragmentTestStateCreateInfoNV ) );
-      return *this;
-    }
-
     PipelineRepresentativeFragmentTestStateCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -75493,7 +72973,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRepresentativeFragmentTestStateCreateInfoNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRepresentativeFragmentTestStateCreateInfoNV;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 representativeFragmentTestEnable = {};
 
@@ -75520,23 +73000,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineSampleLocationsStateCreateInfoEXT( PipelineSampleLocationsStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineSampleLocationsStateCreateInfoEXT( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineSampleLocationsStateCreateInfoEXT( *reinterpret_cast<PipelineSampleLocationsStateCreateInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineSampleLocationsStateCreateInfoEXT & operator=( PipelineSampleLocationsStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineSampleLocationsStateCreateInfoEXT & operator=( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT const *>( &rhs );
       return *this;
     }
 
-    PipelineSampleLocationsStateCreateInfoEXT & operator=( PipelineSampleLocationsStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineSampleLocationsStateCreateInfoEXT ) );
-      return *this;
-    }
-
     PipelineSampleLocationsStateCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -75587,7 +73062,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineSampleLocationsStateCreateInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineSampleLocationsStateCreateInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 sampleLocationsEnable = {};
     VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo = {};
@@ -75615,23 +73090,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT( PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT( VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT( *reinterpret_cast<PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT & operator=( PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT & operator=( VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const *>( &rhs );
       return *this;
     }
 
-    PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT & operator=( PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT ) );
-      return *this;
-    }
-
 
     operator VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -75663,7 +73133,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineShaderStageRequiredSubgroupSizeCreateInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineShaderStageRequiredSubgroupSizeCreateInfoEXT;
     void* pNext = {};
     uint32_t requiredSubgroupSize = {};
 
@@ -75690,23 +73160,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineTessellationDomainOriginStateCreateInfo( PipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineTessellationDomainOriginStateCreateInfo( VkPipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineTessellationDomainOriginStateCreateInfo( *reinterpret_cast<PipelineTessellationDomainOriginStateCreateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineTessellationDomainOriginStateCreateInfo & operator=( PipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineTessellationDomainOriginStateCreateInfo & operator=( VkPipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo const *>( &rhs );
       return *this;
     }
 
-    PipelineTessellationDomainOriginStateCreateInfo & operator=( PipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineTessellationDomainOriginStateCreateInfo ) );
-      return *this;
-    }
-
     PipelineTessellationDomainOriginStateCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -75750,7 +73215,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineTessellationDomainOriginStateCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineTessellationDomainOriginStateCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::TessellationDomainOrigin domainOrigin = VULKAN_HPP_NAMESPACE::TessellationDomainOrigin::eUpperLeft;
 
@@ -75777,23 +73242,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR VertexInputBindingDivisorDescriptionEXT( VertexInputBindingDivisorDescriptionEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     VertexInputBindingDivisorDescriptionEXT( VkVertexInputBindingDivisorDescriptionEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : VertexInputBindingDivisorDescriptionEXT( *reinterpret_cast<VertexInputBindingDivisorDescriptionEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDivisorDescriptionEXT & operator=( VertexInputBindingDivisorDescriptionEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     VertexInputBindingDivisorDescriptionEXT & operator=( VkVertexInputBindingDivisorDescriptionEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT const *>( &rhs );
       return *this;
     }
 
-    VertexInputBindingDivisorDescriptionEXT & operator=( VertexInputBindingDivisorDescriptionEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( VertexInputBindingDivisorDescriptionEXT ) );
-      return *this;
-    }
-
     VertexInputBindingDivisorDescriptionEXT & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT
     {
       binding = binding_;
@@ -75856,9 +73316,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineVertexInputDivisorStateCreateInfoEXT( PipelineVertexInputDivisorStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineVertexInputDivisorStateCreateInfoEXT( VkPipelineVertexInputDivisorStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineVertexInputDivisorStateCreateInfoEXT( *reinterpret_cast<PipelineVertexInputDivisorStateCreateInfoEXT const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     PipelineVertexInputDivisorStateCreateInfoEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT> const & vertexBindingDivisors_ )
@@ -75867,18 +73326,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputDivisorStateCreateInfoEXT & operator=( PipelineVertexInputDivisorStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineVertexInputDivisorStateCreateInfoEXT & operator=( VkPipelineVertexInputDivisorStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT const *>( &rhs );
       return *this;
     }
 
-    PipelineVertexInputDivisorStateCreateInfoEXT & operator=( PipelineVertexInputDivisorStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineVertexInputDivisorStateCreateInfoEXT ) );
-      return *this;
-    }
-
     PipelineVertexInputDivisorStateCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -75938,7 +73393,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineVertexInputDivisorStateCreateInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineVertexInputDivisorStateCreateInfoEXT;
     const void* pNext = {};
     uint32_t vertexBindingDivisorCount = {};
     const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT* pVertexBindingDivisors = {};
@@ -75966,9 +73421,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineViewportCoarseSampleOrderStateCreateInfoNV( PipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineViewportCoarseSampleOrderStateCreateInfoNV( VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineViewportCoarseSampleOrderStateCreateInfoNV( *reinterpret_cast<PipelineViewportCoarseSampleOrderStateCreateInfoNV const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     PipelineViewportCoarseSampleOrderStateCreateInfoNV( VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV> const & customSampleOrders_ )
@@ -75977,18 +73431,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineViewportCoarseSampleOrderStateCreateInfoNV & operator=( PipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineViewportCoarseSampleOrderStateCreateInfoNV & operator=( VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV const *>( &rhs );
       return *this;
     }
 
-    PipelineViewportCoarseSampleOrderStateCreateInfoNV & operator=( PipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineViewportCoarseSampleOrderStateCreateInfoNV ) );
-      return *this;
-    }
-
     PipelineViewportCoarseSampleOrderStateCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -76055,7 +73505,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportCoarseSampleOrderStateCreateInfoNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportCoarseSampleOrderStateCreateInfoNV;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType = VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV::eDefault;
     uint32_t customSampleOrderCount = {};
@@ -76084,9 +73534,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineViewportExclusiveScissorStateCreateInfoNV( PipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineViewportExclusiveScissorStateCreateInfoNV( VkPipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineViewportExclusiveScissorStateCreateInfoNV( *reinterpret_cast<PipelineViewportExclusiveScissorStateCreateInfoNV const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     PipelineViewportExclusiveScissorStateCreateInfoNV( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & exclusiveScissors_ )
@@ -76095,18 +73544,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineViewportExclusiveScissorStateCreateInfoNV & operator=( PipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineViewportExclusiveScissorStateCreateInfoNV & operator=( VkPipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV const *>( &rhs );
       return *this;
     }
 
-    PipelineViewportExclusiveScissorStateCreateInfoNV & operator=( PipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineViewportExclusiveScissorStateCreateInfoNV ) );
-      return *this;
-    }
-
     PipelineViewportExclusiveScissorStateCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -76166,7 +73611,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportExclusiveScissorStateCreateInfoNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportExclusiveScissorStateCreateInfoNV;
     const void* pNext = {};
     uint32_t exclusiveScissorCount = {};
     const VULKAN_HPP_NAMESPACE::Rect2D* pExclusiveScissors = {};
@@ -76194,9 +73639,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineViewportShadingRateImageStateCreateInfoNV( PipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineViewportShadingRateImageStateCreateInfoNV( VkPipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineViewportShadingRateImageStateCreateInfoNV( *reinterpret_cast<PipelineViewportShadingRateImageStateCreateInfoNV const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     PipelineViewportShadingRateImageStateCreateInfoNV( VULKAN_HPP_NAMESPACE::Bool32 shadingRateImageEnable_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV> const & shadingRatePalettes_ )
@@ -76205,18 +73649,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineViewportShadingRateImageStateCreateInfoNV & operator=( PipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineViewportShadingRateImageStateCreateInfoNV & operator=( VkPipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV const *>( &rhs );
       return *this;
     }
 
-    PipelineViewportShadingRateImageStateCreateInfoNV & operator=( PipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineViewportShadingRateImageStateCreateInfoNV ) );
-      return *this;
-    }
-
     PipelineViewportShadingRateImageStateCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -76283,7 +73723,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportShadingRateImageStateCreateInfoNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportShadingRateImageStateCreateInfoNV;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 shadingRateImageEnable = {};
     uint32_t viewportCount = {};
@@ -76311,23 +73751,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ViewportSwizzleNV( ViewportSwizzleNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ViewportSwizzleNV( VkViewportSwizzleNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ViewportSwizzleNV( *reinterpret_cast<ViewportSwizzleNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ViewportSwizzleNV & operator=( ViewportSwizzleNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ViewportSwizzleNV & operator=( VkViewportSwizzleNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ViewportSwizzleNV const *>( &rhs );
       return *this;
     }
 
-    ViewportSwizzleNV & operator=( ViewportSwizzleNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ViewportSwizzleNV ) );
-      return *this;
-    }
-
     ViewportSwizzleNV & setX( VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV x_ ) VULKAN_HPP_NOEXCEPT
     {
       x = x_;
@@ -76406,9 +73841,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineViewportSwizzleStateCreateInfoNV( PipelineViewportSwizzleStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineViewportSwizzleStateCreateInfoNV( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineViewportSwizzleStateCreateInfoNV( *reinterpret_cast<PipelineViewportSwizzleStateCreateInfoNV const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     PipelineViewportSwizzleStateCreateInfoNV( VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateFlagsNV flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ViewportSwizzleNV> const & viewportSwizzles_ )
@@ -76417,18 +73851,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineViewportSwizzleStateCreateInfoNV & operator=( PipelineViewportSwizzleStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineViewportSwizzleStateCreateInfoNV & operator=( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV const *>( &rhs );
       return *this;
     }
 
-    PipelineViewportSwizzleStateCreateInfoNV & operator=( PipelineViewportSwizzleStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineViewportSwizzleStateCreateInfoNV ) );
-      return *this;
-    }
-
     PipelineViewportSwizzleStateCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -76495,7 +73925,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportSwizzleStateCreateInfoNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportSwizzleStateCreateInfoNV;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateFlagsNV flags = {};
     uint32_t viewportCount = {};
@@ -76524,9 +73954,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PipelineViewportWScalingStateCreateInfoNV( PipelineViewportWScalingStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PipelineViewportWScalingStateCreateInfoNV( VkPipelineViewportWScalingStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PipelineViewportWScalingStateCreateInfoNV( *reinterpret_cast<PipelineViewportWScalingStateCreateInfoNV const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     PipelineViewportWScalingStateCreateInfoNV( VULKAN_HPP_NAMESPACE::Bool32 viewportWScalingEnable_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ViewportWScalingNV> const & viewportWScalings_ )
@@ -76535,18 +73964,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PipelineViewportWScalingStateCreateInfoNV & operator=( PipelineViewportWScalingStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PipelineViewportWScalingStateCreateInfoNV & operator=( VkPipelineViewportWScalingStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV const *>( &rhs );
       return *this;
     }
 
-    PipelineViewportWScalingStateCreateInfoNV & operator=( PipelineViewportWScalingStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PipelineViewportWScalingStateCreateInfoNV ) );
-      return *this;
-    }
-
     PipelineViewportWScalingStateCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -76613,7 +74038,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportWScalingStateCreateInfoNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportWScalingStateCreateInfoNV;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 viewportWScalingEnable = {};
     uint32_t viewportCount = {};
@@ -76643,23 +74068,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PresentFrameTokenGGP( PresentFrameTokenGGP const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PresentFrameTokenGGP( VkPresentFrameTokenGGP const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PresentFrameTokenGGP( *reinterpret_cast<PresentFrameTokenGGP const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PresentFrameTokenGGP & operator=( PresentFrameTokenGGP const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PresentFrameTokenGGP & operator=( VkPresentFrameTokenGGP const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PresentFrameTokenGGP const *>( &rhs );
       return *this;
     }
 
-    PresentFrameTokenGGP & operator=( PresentFrameTokenGGP const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PresentFrameTokenGGP ) );
-      return *this;
-    }
-
     PresentFrameTokenGGP & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -76703,7 +74123,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePresentFrameTokenGGP;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePresentFrameTokenGGP;
     const void* pNext = {};
     GgpFrameToken frameToken = {};
 
@@ -76730,9 +74150,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR RectLayerKHR( RectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     RectLayerKHR( VkRectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : RectLayerKHR( *reinterpret_cast<RectLayerKHR const *>( &rhs ) )
+    {}
 
     explicit RectLayerKHR( Rect2D const& rect2D, uint32_t layer_ = {} )
       : offset( rect2D.offset )
@@ -76741,18 +74160,14 @@ namespace VULKAN_HPP_NAMESPACE
     {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 RectLayerKHR & operator=( RectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     RectLayerKHR & operator=( VkRectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RectLayerKHR const *>( &rhs );
       return *this;
     }
 
-    RectLayerKHR & operator=( RectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( RectLayerKHR ) );
-      return *this;
-    }
-
     RectLayerKHR & setOffset( VULKAN_HPP_NAMESPACE::Offset2D const & offset_ ) VULKAN_HPP_NOEXCEPT
     {
       offset = offset_;
@@ -76822,9 +74237,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PresentRegionKHR( PresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PresentRegionKHR( VkPresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PresentRegionKHR( *reinterpret_cast<PresentRegionKHR const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     PresentRegionKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RectLayerKHR> const & rectangles_ )
@@ -76833,18 +74247,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PresentRegionKHR & operator=( PresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PresentRegionKHR & operator=( VkPresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PresentRegionKHR const *>( &rhs );
       return *this;
     }
 
-    PresentRegionKHR & operator=( PresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PresentRegionKHR ) );
-      return *this;
-    }
-
     PresentRegionKHR & setRectangleCount( uint32_t rectangleCount_ ) VULKAN_HPP_NOEXCEPT
     {
       rectangleCount = rectangleCount_;
@@ -76916,9 +74326,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PresentRegionsKHR( PresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PresentRegionsKHR( VkPresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PresentRegionsKHR( *reinterpret_cast<PresentRegionsKHR const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     PresentRegionsKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PresentRegionKHR> const & regions_ )
@@ -76927,18 +74336,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PresentRegionsKHR & operator=( PresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PresentRegionsKHR & operator=( VkPresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PresentRegionsKHR const *>( &rhs );
       return *this;
     }
 
-    PresentRegionsKHR & operator=( PresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PresentRegionsKHR ) );
-      return *this;
-    }
-
     PresentRegionsKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -76998,7 +74403,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePresentRegionsKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePresentRegionsKHR;
     const void* pNext = {};
     uint32_t swapchainCount = {};
     const VULKAN_HPP_NAMESPACE::PresentRegionKHR* pRegions = {};
@@ -77025,23 +74430,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PresentTimeGOOGLE( PresentTimeGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PresentTimeGOOGLE( VkPresentTimeGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PresentTimeGOOGLE( *reinterpret_cast<PresentTimeGOOGLE const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PresentTimeGOOGLE & operator=( PresentTimeGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PresentTimeGOOGLE & operator=( VkPresentTimeGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE const *>( &rhs );
       return *this;
     }
 
-    PresentTimeGOOGLE & operator=( PresentTimeGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PresentTimeGOOGLE ) );
-      return *this;
-    }
-
     PresentTimeGOOGLE & setPresentID( uint32_t presentID_ ) VULKAN_HPP_NOEXCEPT
     {
       presentID = presentID_;
@@ -77104,9 +74504,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR PresentTimesInfoGOOGLE( PresentTimesInfoGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     PresentTimesInfoGOOGLE( VkPresentTimesInfoGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : PresentTimesInfoGOOGLE( *reinterpret_cast<PresentTimesInfoGOOGLE const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     PresentTimesInfoGOOGLE( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE> const & times_ )
@@ -77115,18 +74514,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 PresentTimesInfoGOOGLE & operator=( PresentTimesInfoGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     PresentTimesInfoGOOGLE & operator=( VkPresentTimesInfoGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE const *>( &rhs );
       return *this;
     }
 
-    PresentTimesInfoGOOGLE & operator=( PresentTimesInfoGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( PresentTimesInfoGOOGLE ) );
-      return *this;
-    }
-
     PresentTimesInfoGOOGLE & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -77186,7 +74581,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePresentTimesInfoGOOGLE;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePresentTimesInfoGOOGLE;
     const void* pNext = {};
     uint32_t swapchainCount = {};
     const VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE* pTimes = {};
@@ -77214,23 +74609,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ProtectedSubmitInfo( ProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ProtectedSubmitInfo( VkProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ProtectedSubmitInfo( *reinterpret_cast<ProtectedSubmitInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ProtectedSubmitInfo & operator=( ProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ProtectedSubmitInfo & operator=( VkProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo const *>( &rhs );
       return *this;
     }
 
-    ProtectedSubmitInfo & operator=( ProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ProtectedSubmitInfo ) );
-      return *this;
-    }
-
     ProtectedSubmitInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -77274,7 +74664,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eProtectedSubmitInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eProtectedSubmitInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 protectedSubmit = {};
 
@@ -77301,23 +74691,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR QueryPoolPerformanceQueryCreateInfoINTEL( QueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     QueryPoolPerformanceQueryCreateInfoINTEL( VkQueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : QueryPoolPerformanceQueryCreateInfoINTEL( *reinterpret_cast<QueryPoolPerformanceQueryCreateInfoINTEL const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceQueryCreateInfoINTEL & operator=( QueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     QueryPoolPerformanceQueryCreateInfoINTEL & operator=( VkQueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL const *>( &rhs );
       return *this;
     }
 
-    QueryPoolPerformanceQueryCreateInfoINTEL & operator=( QueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( QueryPoolPerformanceQueryCreateInfoINTEL ) );
-      return *this;
-    }
-
     QueryPoolPerformanceQueryCreateInfoINTEL & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -77361,7 +74746,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eQueryPoolPerformanceQueryCreateInfoINTEL;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eQueryPoolPerformanceQueryCreateInfoINTEL;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::QueryPoolSamplingModeINTEL performanceCountersSampling = VULKAN_HPP_NAMESPACE::QueryPoolSamplingModeINTEL::eManual;
 
@@ -77389,23 +74774,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR QueueFamilyCheckpointPropertiesNV( QueueFamilyCheckpointPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     QueueFamilyCheckpointPropertiesNV( VkQueueFamilyCheckpointPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : QueueFamilyCheckpointPropertiesNV( *reinterpret_cast<QueueFamilyCheckpointPropertiesNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 QueueFamilyCheckpointPropertiesNV & operator=( QueueFamilyCheckpointPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     QueueFamilyCheckpointPropertiesNV & operator=( VkQueueFamilyCheckpointPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV const *>( &rhs );
       return *this;
     }
 
-    QueueFamilyCheckpointPropertiesNV & operator=( QueueFamilyCheckpointPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( QueueFamilyCheckpointPropertiesNV ) );
-      return *this;
-    }
-
 
     operator VkQueueFamilyCheckpointPropertiesNV const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -77437,7 +74817,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eQueueFamilyCheckpointPropertiesNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eQueueFamilyCheckpointPropertiesNV;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::PipelineStageFlags checkpointExecutionStageMask = {};
 
@@ -77464,9 +74844,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR RenderPassAttachmentBeginInfo( RenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     RenderPassAttachmentBeginInfo( VkRenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : RenderPassAttachmentBeginInfo( *reinterpret_cast<RenderPassAttachmentBeginInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     RenderPassAttachmentBeginInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageView> const & attachments_ )
@@ -77475,18 +74854,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 RenderPassAttachmentBeginInfo & operator=( RenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     RenderPassAttachmentBeginInfo & operator=( VkRenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo const *>( &rhs );
       return *this;
     }
 
-    RenderPassAttachmentBeginInfo & operator=( RenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( RenderPassAttachmentBeginInfo ) );
-      return *this;
-    }
-
     RenderPassAttachmentBeginInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -77546,7 +74921,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassAttachmentBeginInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassAttachmentBeginInfo;
     const void* pNext = {};
     uint32_t attachmentCount = {};
     const VULKAN_HPP_NAMESPACE::ImageView* pAttachments = {};
@@ -77575,23 +74950,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR RenderPassFragmentDensityMapCreateInfoEXT( RenderPassFragmentDensityMapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     RenderPassFragmentDensityMapCreateInfoEXT( VkRenderPassFragmentDensityMapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : RenderPassFragmentDensityMapCreateInfoEXT( *reinterpret_cast<RenderPassFragmentDensityMapCreateInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 RenderPassFragmentDensityMapCreateInfoEXT & operator=( RenderPassFragmentDensityMapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     RenderPassFragmentDensityMapCreateInfoEXT & operator=( VkRenderPassFragmentDensityMapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT const *>( &rhs );
       return *this;
     }
 
-    RenderPassFragmentDensityMapCreateInfoEXT & operator=( RenderPassFragmentDensityMapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( RenderPassFragmentDensityMapCreateInfoEXT ) );
-      return *this;
-    }
-
     RenderPassFragmentDensityMapCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -77635,7 +75005,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassFragmentDensityMapCreateInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassFragmentDensityMapCreateInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::AttachmentReference fragmentDensityMapAttachment = {};
 
@@ -77662,9 +75032,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR RenderPassInputAttachmentAspectCreateInfo( RenderPassInputAttachmentAspectCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     RenderPassInputAttachmentAspectCreateInfo( VkRenderPassInputAttachmentAspectCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : RenderPassInputAttachmentAspectCreateInfo( *reinterpret_cast<RenderPassInputAttachmentAspectCreateInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     RenderPassInputAttachmentAspectCreateInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference> const & aspectReferences_ )
@@ -77673,18 +75042,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 RenderPassInputAttachmentAspectCreateInfo & operator=( RenderPassInputAttachmentAspectCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     RenderPassInputAttachmentAspectCreateInfo & operator=( VkRenderPassInputAttachmentAspectCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo const *>( &rhs );
       return *this;
     }
 
-    RenderPassInputAttachmentAspectCreateInfo & operator=( RenderPassInputAttachmentAspectCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( RenderPassInputAttachmentAspectCreateInfo ) );
-      return *this;
-    }
-
     RenderPassInputAttachmentAspectCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -77744,7 +75109,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassInputAttachmentAspectCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassInputAttachmentAspectCreateInfo;
     const void* pNext = {};
     uint32_t aspectReferenceCount = {};
     const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference* pAspectReferences = {};
@@ -77773,9 +75138,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR RenderPassMultiviewCreateInfo( RenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     RenderPassMultiviewCreateInfo( VkRenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : RenderPassMultiviewCreateInfo( *reinterpret_cast<RenderPassMultiviewCreateInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     RenderPassMultiviewCreateInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & viewMasks_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const int32_t> const & viewOffsets_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & correlationMasks_ = {} )
@@ -77784,18 +75148,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & operator=( RenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     RenderPassMultiviewCreateInfo & operator=( VkRenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo const *>( &rhs );
       return *this;
     }
 
-    RenderPassMultiviewCreateInfo & operator=( RenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( RenderPassMultiviewCreateInfo ) );
-      return *this;
-    }
-
     RenderPassMultiviewCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -77901,7 +75261,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassMultiviewCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassMultiviewCreateInfo;
     const void* pNext = {};
     uint32_t subpassCount = {};
     const uint32_t* pViewMasks = {};
@@ -77933,23 +75293,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SubpassSampleLocationsEXT( SubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SubpassSampleLocationsEXT( VkSubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SubpassSampleLocationsEXT( *reinterpret_cast<SubpassSampleLocationsEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SubpassSampleLocationsEXT & operator=( SubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SubpassSampleLocationsEXT & operator=( VkSubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT const *>( &rhs );
       return *this;
     }
 
-    SubpassSampleLocationsEXT & operator=( SubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SubpassSampleLocationsEXT ) );
-      return *this;
-    }
-
     SubpassSampleLocationsEXT & setSubpassIndex( uint32_t subpassIndex_ ) VULKAN_HPP_NOEXCEPT
     {
       subpassIndex = subpassIndex_;
@@ -78012,9 +75367,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR RenderPassSampleLocationsBeginInfoEXT( RenderPassSampleLocationsBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     RenderPassSampleLocationsBeginInfoEXT( VkRenderPassSampleLocationsBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : RenderPassSampleLocationsBeginInfoEXT( *reinterpret_cast<RenderPassSampleLocationsBeginInfoEXT const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     RenderPassSampleLocationsBeginInfoEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT> const & attachmentInitialSampleLocations_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT> const & postSubpassSampleLocations_ = {} )
@@ -78023,18 +75377,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT & operator=( RenderPassSampleLocationsBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     RenderPassSampleLocationsBeginInfoEXT & operator=( VkRenderPassSampleLocationsBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT const *>( &rhs );
       return *this;
     }
 
-    RenderPassSampleLocationsBeginInfoEXT & operator=( RenderPassSampleLocationsBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( RenderPassSampleLocationsBeginInfoEXT ) );
-      return *this;
-    }
-
     RenderPassSampleLocationsBeginInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -78117,7 +75467,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassSampleLocationsBeginInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassSampleLocationsBeginInfoEXT;
     const void* pNext = {};
     uint32_t attachmentInitialSampleLocationsCount = {};
     const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations = {};
@@ -78147,23 +75497,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR RenderPassTransformBeginInfoQCOM( RenderPassTransformBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     RenderPassTransformBeginInfoQCOM( VkRenderPassTransformBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : RenderPassTransformBeginInfoQCOM( *reinterpret_cast<RenderPassTransformBeginInfoQCOM const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 RenderPassTransformBeginInfoQCOM & operator=( RenderPassTransformBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     RenderPassTransformBeginInfoQCOM & operator=( VkRenderPassTransformBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM const *>( &rhs );
       return *this;
     }
 
-    RenderPassTransformBeginInfoQCOM & operator=( RenderPassTransformBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( RenderPassTransformBeginInfoQCOM ) );
-      return *this;
-    }
-
     RenderPassTransformBeginInfoQCOM & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -78207,7 +75552,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassTransformBeginInfoQCOM;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassTransformBeginInfoQCOM;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity;
 
@@ -78234,23 +75579,18 @@ namespace VULKAN_HPP_NAMESPACE
     SamplerCustomBorderColorCreateInfoEXT( SamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SamplerCustomBorderColorCreateInfoEXT( VkSamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SamplerCustomBorderColorCreateInfoEXT( *reinterpret_cast<SamplerCustomBorderColorCreateInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    SamplerCustomBorderColorCreateInfoEXT & operator=( SamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SamplerCustomBorderColorCreateInfoEXT & operator=( VkSamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT const *>( &rhs );
       return *this;
     }
 
-    SamplerCustomBorderColorCreateInfoEXT & operator=( SamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SamplerCustomBorderColorCreateInfoEXT ) );
-      return *this;
-    }
-
     SamplerCustomBorderColorCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -78284,7 +75624,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerCustomBorderColorCreateInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerCustomBorderColorCreateInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ClearColorValue customBorderColor = {};
     VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined;
@@ -78312,23 +75652,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SamplerReductionModeCreateInfo( SamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SamplerReductionModeCreateInfo( VkSamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SamplerReductionModeCreateInfo( *reinterpret_cast<SamplerReductionModeCreateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SamplerReductionModeCreateInfo & operator=( SamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SamplerReductionModeCreateInfo & operator=( VkSamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo const *>( &rhs );
       return *this;
     }
 
-    SamplerReductionModeCreateInfo & operator=( SamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SamplerReductionModeCreateInfo ) );
-      return *this;
-    }
-
     SamplerReductionModeCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -78372,7 +75707,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerReductionModeCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerReductionModeCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::SamplerReductionMode reductionMode = VULKAN_HPP_NAMESPACE::SamplerReductionMode::eWeightedAverage;
 
@@ -78400,23 +75735,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionImageFormatProperties( SamplerYcbcrConversionImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SamplerYcbcrConversionImageFormatProperties( VkSamplerYcbcrConversionImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SamplerYcbcrConversionImageFormatProperties( *reinterpret_cast<SamplerYcbcrConversionImageFormatProperties const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionImageFormatProperties & operator=( SamplerYcbcrConversionImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SamplerYcbcrConversionImageFormatProperties & operator=( VkSamplerYcbcrConversionImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties const *>( &rhs );
       return *this;
     }
 
-    SamplerYcbcrConversionImageFormatProperties & operator=( SamplerYcbcrConversionImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SamplerYcbcrConversionImageFormatProperties ) );
-      return *this;
-    }
-
 
     operator VkSamplerYcbcrConversionImageFormatProperties const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -78448,7 +75778,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerYcbcrConversionImageFormatProperties;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerYcbcrConversionImageFormatProperties;
     void* pNext = {};
     uint32_t combinedImageSamplerDescriptorCount = {};
 
@@ -78476,23 +75806,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionInfo( SamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SamplerYcbcrConversionInfo( VkSamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SamplerYcbcrConversionInfo( *reinterpret_cast<SamplerYcbcrConversionInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionInfo & operator=( SamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SamplerYcbcrConversionInfo & operator=( VkSamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo const *>( &rhs );
       return *this;
     }
 
-    SamplerYcbcrConversionInfo & operator=( SamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SamplerYcbcrConversionInfo ) );
-      return *this;
-    }
-
     SamplerYcbcrConversionInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -78536,7 +75861,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerYcbcrConversionInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerYcbcrConversionInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion conversion = {};
 
@@ -78564,23 +75889,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SemaphoreTypeCreateInfo( SemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SemaphoreTypeCreateInfo( VkSemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SemaphoreTypeCreateInfo( *reinterpret_cast<SemaphoreTypeCreateInfo const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SemaphoreTypeCreateInfo & operator=( SemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SemaphoreTypeCreateInfo & operator=( VkSemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo const *>( &rhs );
       return *this;
     }
 
-    SemaphoreTypeCreateInfo & operator=( SemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SemaphoreTypeCreateInfo ) );
-      return *this;
-    }
-
     SemaphoreTypeCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -78631,7 +75951,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreTypeCreateInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreTypeCreateInfo;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::SemaphoreType semaphoreType = VULKAN_HPP_NAMESPACE::SemaphoreType::eBinary;
     uint64_t initialValue = {};
@@ -78659,23 +75979,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SetStateFlagsIndirectCommandNV( SetStateFlagsIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SetStateFlagsIndirectCommandNV( VkSetStateFlagsIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SetStateFlagsIndirectCommandNV( *reinterpret_cast<SetStateFlagsIndirectCommandNV const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SetStateFlagsIndirectCommandNV & operator=( SetStateFlagsIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SetStateFlagsIndirectCommandNV & operator=( VkSetStateFlagsIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV const *>( &rhs );
       return *this;
     }
 
-    SetStateFlagsIndirectCommandNV & operator=( SetStateFlagsIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SetStateFlagsIndirectCommandNV ) );
-      return *this;
-    }
-
     SetStateFlagsIndirectCommandNV & setData( uint32_t data_ ) VULKAN_HPP_NOEXCEPT
     {
       data = data_;
@@ -78730,23 +76045,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ShaderModuleValidationCacheCreateInfoEXT( ShaderModuleValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ShaderModuleValidationCacheCreateInfoEXT( VkShaderModuleValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ShaderModuleValidationCacheCreateInfoEXT( *reinterpret_cast<ShaderModuleValidationCacheCreateInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ShaderModuleValidationCacheCreateInfoEXT & operator=( ShaderModuleValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ShaderModuleValidationCacheCreateInfoEXT & operator=( VkShaderModuleValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT const *>( &rhs );
       return *this;
     }
 
-    ShaderModuleValidationCacheCreateInfoEXT & operator=( ShaderModuleValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ShaderModuleValidationCacheCreateInfoEXT ) );
-      return *this;
-    }
-
     ShaderModuleValidationCacheCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -78790,7 +76100,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eShaderModuleValidationCacheCreateInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eShaderModuleValidationCacheCreateInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache = {};
 
@@ -78816,23 +76126,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ShaderResourceUsageAMD( ShaderResourceUsageAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ShaderResourceUsageAMD( VkShaderResourceUsageAMD const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ShaderResourceUsageAMD( *reinterpret_cast<ShaderResourceUsageAMD const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ShaderResourceUsageAMD & operator=( ShaderResourceUsageAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ShaderResourceUsageAMD & operator=( VkShaderResourceUsageAMD const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD const *>( &rhs );
       return *this;
     }
 
-    ShaderResourceUsageAMD & operator=( ShaderResourceUsageAMD const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ShaderResourceUsageAMD ) );
-      return *this;
-    }
-
 
     operator VkShaderResourceUsageAMD const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -78888,23 +76193,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR_14 ShaderStatisticsInfoAMD( ShaderStatisticsInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ShaderStatisticsInfoAMD( VkShaderStatisticsInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ShaderStatisticsInfoAMD( *reinterpret_cast<ShaderStatisticsInfoAMD const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ShaderStatisticsInfoAMD & operator=( ShaderStatisticsInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ShaderStatisticsInfoAMD & operator=( VkShaderStatisticsInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD const *>( &rhs );
       return *this;
     }
 
-    ShaderStatisticsInfoAMD & operator=( ShaderStatisticsInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ShaderStatisticsInfoAMD ) );
-      return *this;
-    }
-
 
     operator VkShaderStatisticsInfoAMD const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -78965,23 +76265,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SharedPresentSurfaceCapabilitiesKHR( SharedPresentSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SharedPresentSurfaceCapabilitiesKHR( VkSharedPresentSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SharedPresentSurfaceCapabilitiesKHR( *reinterpret_cast<SharedPresentSurfaceCapabilitiesKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SharedPresentSurfaceCapabilitiesKHR & operator=( SharedPresentSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SharedPresentSurfaceCapabilitiesKHR & operator=( VkSharedPresentSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR const *>( &rhs );
       return *this;
     }
 
-    SharedPresentSurfaceCapabilitiesKHR & operator=( SharedPresentSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SharedPresentSurfaceCapabilitiesKHR ) );
-      return *this;
-    }
-
 
     operator VkSharedPresentSurfaceCapabilitiesKHR const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -79013,7 +76308,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSharedPresentSurfaceCapabilitiesKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSharedPresentSurfaceCapabilitiesKHR;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::ImageUsageFlags sharedPresentSupportedUsageFlags = {};
 
@@ -79041,23 +76336,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR StreamDescriptorSurfaceCreateInfoGGP( StreamDescriptorSurfaceCreateInfoGGP const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     StreamDescriptorSurfaceCreateInfoGGP( VkStreamDescriptorSurfaceCreateInfoGGP const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : StreamDescriptorSurfaceCreateInfoGGP( *reinterpret_cast<StreamDescriptorSurfaceCreateInfoGGP const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 StreamDescriptorSurfaceCreateInfoGGP & operator=( StreamDescriptorSurfaceCreateInfoGGP const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     StreamDescriptorSurfaceCreateInfoGGP & operator=( VkStreamDescriptorSurfaceCreateInfoGGP const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP const *>( &rhs );
       return *this;
     }
 
-    StreamDescriptorSurfaceCreateInfoGGP & operator=( StreamDescriptorSurfaceCreateInfoGGP const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( StreamDescriptorSurfaceCreateInfoGGP ) );
-      return *this;
-    }
-
     StreamDescriptorSurfaceCreateInfoGGP & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -79108,7 +76398,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eStreamDescriptorSurfaceCreateInfoGGP;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eStreamDescriptorSurfaceCreateInfoGGP;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateFlagsGGP flags = {};
     GgpStreamDescriptor streamDescriptor = {};
@@ -79137,23 +76427,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SubpassDescriptionDepthStencilResolve( SubpassDescriptionDepthStencilResolve const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SubpassDescriptionDepthStencilResolve( VkSubpassDescriptionDepthStencilResolve const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SubpassDescriptionDepthStencilResolve( *reinterpret_cast<SubpassDescriptionDepthStencilResolve const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SubpassDescriptionDepthStencilResolve & operator=( SubpassDescriptionDepthStencilResolve const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SubpassDescriptionDepthStencilResolve & operator=( VkSubpassDescriptionDepthStencilResolve const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve const *>( &rhs );
       return *this;
     }
 
-    SubpassDescriptionDepthStencilResolve & operator=( SubpassDescriptionDepthStencilResolve const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SubpassDescriptionDepthStencilResolve ) );
-      return *this;
-    }
-
     SubpassDescriptionDepthStencilResolve & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -79211,7 +76496,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubpassDescriptionDepthStencilResolve;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubpassDescriptionDepthStencilResolve;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ResolveModeFlagBits depthResolveMode = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone;
     VULKAN_HPP_NAMESPACE::ResolveModeFlagBits stencilResolveMode = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone;
@@ -79242,23 +76527,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesFullScreenExclusiveEXT( SurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SurfaceCapabilitiesFullScreenExclusiveEXT( VkSurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SurfaceCapabilitiesFullScreenExclusiveEXT( *reinterpret_cast<SurfaceCapabilitiesFullScreenExclusiveEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SurfaceCapabilitiesFullScreenExclusiveEXT & operator=( SurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SurfaceCapabilitiesFullScreenExclusiveEXT & operator=( VkSurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT const *>( &rhs );
       return *this;
     }
 
-    SurfaceCapabilitiesFullScreenExclusiveEXT & operator=( SurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SurfaceCapabilitiesFullScreenExclusiveEXT ) );
-      return *this;
-    }
-
     SurfaceCapabilitiesFullScreenExclusiveEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -79302,7 +76582,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceCapabilitiesFullScreenExclusiveEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceCapabilitiesFullScreenExclusiveEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 fullScreenExclusiveSupported = {};
 
@@ -79331,23 +76611,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SurfaceFullScreenExclusiveInfoEXT( SurfaceFullScreenExclusiveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SurfaceFullScreenExclusiveInfoEXT( VkSurfaceFullScreenExclusiveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SurfaceFullScreenExclusiveInfoEXT( *reinterpret_cast<SurfaceFullScreenExclusiveInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SurfaceFullScreenExclusiveInfoEXT & operator=( SurfaceFullScreenExclusiveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SurfaceFullScreenExclusiveInfoEXT & operator=( VkSurfaceFullScreenExclusiveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT const *>( &rhs );
       return *this;
     }
 
-    SurfaceFullScreenExclusiveInfoEXT & operator=( SurfaceFullScreenExclusiveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SurfaceFullScreenExclusiveInfoEXT ) );
-      return *this;
-    }
-
     SurfaceFullScreenExclusiveInfoEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -79391,7 +76666,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceFullScreenExclusiveInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceFullScreenExclusiveInfoEXT;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::FullScreenExclusiveEXT fullScreenExclusive = VULKAN_HPP_NAMESPACE::FullScreenExclusiveEXT::eDefault;
 
@@ -79420,23 +76695,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SurfaceFullScreenExclusiveWin32InfoEXT( SurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SurfaceFullScreenExclusiveWin32InfoEXT( VkSurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SurfaceFullScreenExclusiveWin32InfoEXT( *reinterpret_cast<SurfaceFullScreenExclusiveWin32InfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SurfaceFullScreenExclusiveWin32InfoEXT & operator=( SurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SurfaceFullScreenExclusiveWin32InfoEXT & operator=( VkSurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT const *>( &rhs );
       return *this;
     }
 
-    SurfaceFullScreenExclusiveWin32InfoEXT & operator=( SurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SurfaceFullScreenExclusiveWin32InfoEXT ) );
-      return *this;
-    }
-
     SurfaceFullScreenExclusiveWin32InfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -79480,7 +76750,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceFullScreenExclusiveWin32InfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceFullScreenExclusiveWin32InfoEXT;
     const void* pNext = {};
     HMONITOR hmonitor = {};
 
@@ -79508,23 +76778,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SurfaceProtectedCapabilitiesKHR( SurfaceProtectedCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SurfaceProtectedCapabilitiesKHR( VkSurfaceProtectedCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SurfaceProtectedCapabilitiesKHR( *reinterpret_cast<SurfaceProtectedCapabilitiesKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SurfaceProtectedCapabilitiesKHR & operator=( SurfaceProtectedCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SurfaceProtectedCapabilitiesKHR & operator=( VkSurfaceProtectedCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR const *>( &rhs );
       return *this;
     }
 
-    SurfaceProtectedCapabilitiesKHR & operator=( SurfaceProtectedCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SurfaceProtectedCapabilitiesKHR ) );
-      return *this;
-    }
-
     SurfaceProtectedCapabilitiesKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -79568,7 +76833,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceProtectedCapabilitiesKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceProtectedCapabilitiesKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 supportsProtected = {};
 
@@ -79595,23 +76860,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SwapchainCounterCreateInfoEXT( SwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SwapchainCounterCreateInfoEXT( VkSwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SwapchainCounterCreateInfoEXT( *reinterpret_cast<SwapchainCounterCreateInfoEXT const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SwapchainCounterCreateInfoEXT & operator=( SwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SwapchainCounterCreateInfoEXT & operator=( VkSwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT const *>( &rhs );
       return *this;
     }
 
-    SwapchainCounterCreateInfoEXT & operator=( SwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SwapchainCounterCreateInfoEXT ) );
-      return *this;
-    }
-
     SwapchainCounterCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -79655,7 +76915,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSwapchainCounterCreateInfoEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSwapchainCounterCreateInfoEXT;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT surfaceCounters = {};
 
@@ -79682,23 +76942,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR SwapchainDisplayNativeHdrCreateInfoAMD( SwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     SwapchainDisplayNativeHdrCreateInfoAMD( VkSwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : SwapchainDisplayNativeHdrCreateInfoAMD( *reinterpret_cast<SwapchainDisplayNativeHdrCreateInfoAMD const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 SwapchainDisplayNativeHdrCreateInfoAMD & operator=( SwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     SwapchainDisplayNativeHdrCreateInfoAMD & operator=( VkSwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD const *>( &rhs );
       return *this;
     }
 
-    SwapchainDisplayNativeHdrCreateInfoAMD & operator=( SwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( SwapchainDisplayNativeHdrCreateInfoAMD ) );
-      return *this;
-    }
-
     SwapchainDisplayNativeHdrCreateInfoAMD & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -79742,7 +76997,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSwapchainDisplayNativeHdrCreateInfoAMD;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSwapchainDisplayNativeHdrCreateInfoAMD;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 localDimmingEnable = {};
 
@@ -79769,23 +77024,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR TextureLODGatherFormatPropertiesAMD( TextureLODGatherFormatPropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     TextureLODGatherFormatPropertiesAMD( VkTextureLODGatherFormatPropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : TextureLODGatherFormatPropertiesAMD( *reinterpret_cast<TextureLODGatherFormatPropertiesAMD const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 TextureLODGatherFormatPropertiesAMD & operator=( TextureLODGatherFormatPropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     TextureLODGatherFormatPropertiesAMD & operator=( VkTextureLODGatherFormatPropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD const *>( &rhs );
       return *this;
     }
 
-    TextureLODGatherFormatPropertiesAMD & operator=( TextureLODGatherFormatPropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( TextureLODGatherFormatPropertiesAMD ) );
-      return *this;
-    }
-
 
     operator VkTextureLODGatherFormatPropertiesAMD const&() const VULKAN_HPP_NOEXCEPT
     {
@@ -79817,7 +77067,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eTextureLodGatherFormatPropertiesAMD;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eTextureLodGatherFormatPropertiesAMD;
     void* pNext = {};
     VULKAN_HPP_NAMESPACE::Bool32 supportsTextureGatherLODBiasAMD = {};
 
@@ -79844,9 +77094,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR TimelineSemaphoreSubmitInfo( TimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     TimelineSemaphoreSubmitInfo( VkTimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : TimelineSemaphoreSubmitInfo( *reinterpret_cast<TimelineSemaphoreSubmitInfo const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     TimelineSemaphoreSubmitInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & waitSemaphoreValues_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & signalSemaphoreValues_ = {} )
@@ -79855,18 +77104,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo & operator=( TimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     TimelineSemaphoreSubmitInfo & operator=( VkTimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo const *>( &rhs );
       return *this;
     }
 
-    TimelineSemaphoreSubmitInfo & operator=( TimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( TimelineSemaphoreSubmitInfo ) );
-      return *this;
-    }
-
     TimelineSemaphoreSubmitInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -79949,7 +77194,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eTimelineSemaphoreSubmitInfo;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eTimelineSemaphoreSubmitInfo;
     const void* pNext = {};
     uint32_t waitSemaphoreValueCount = {};
     const uint64_t* pWaitSemaphoreValues = {};
@@ -79979,9 +77224,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR TraceRaysIndirectCommandKHR( TraceRaysIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     TraceRaysIndirectCommandKHR( VkTraceRaysIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : TraceRaysIndirectCommandKHR( *reinterpret_cast<TraceRaysIndirectCommandKHR const *>( &rhs ) )
+    {}
 
     explicit TraceRaysIndirectCommandKHR( Extent2D const& extent2D, uint32_t depth_ = {} )
       : width( extent2D.width )
@@ -79990,18 +77234,14 @@ namespace VULKAN_HPP_NAMESPACE
     {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommandKHR & operator=( TraceRaysIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     TraceRaysIndirectCommandKHR & operator=( VkTraceRaysIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR const *>( &rhs );
       return *this;
     }
 
-    TraceRaysIndirectCommandKHR & operator=( TraceRaysIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( TraceRaysIndirectCommandKHR ) );
-      return *this;
-    }
-
     TraceRaysIndirectCommandKHR & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT
     {
       width = width_;
@@ -80072,9 +77312,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ValidationFeaturesEXT( ValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ValidationFeaturesEXT( VkValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ValidationFeaturesEXT( *reinterpret_cast<ValidationFeaturesEXT const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     ValidationFeaturesEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT> const & enabledValidationFeatures_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT> const & disabledValidationFeatures_ = {} )
@@ -80083,18 +77322,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT & operator=( ValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ValidationFeaturesEXT & operator=( VkValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT const *>( &rhs );
       return *this;
     }
 
-    ValidationFeaturesEXT & operator=( ValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ValidationFeaturesEXT ) );
-      return *this;
-    }
-
     ValidationFeaturesEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -80177,7 +77412,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eValidationFeaturesEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eValidationFeaturesEXT;
     const void* pNext = {};
     uint32_t enabledValidationFeatureCount = {};
     const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT* pEnabledValidationFeatures = {};
@@ -80207,9 +77442,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ValidationFlagsEXT( ValidationFlagsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ValidationFlagsEXT( VkValidationFlagsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ValidationFlagsEXT( *reinterpret_cast<ValidationFlagsEXT const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     ValidationFlagsEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ValidationCheckEXT> const & disabledValidationChecks_ )
@@ -80218,18 +77452,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ValidationFlagsEXT & operator=( ValidationFlagsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ValidationFlagsEXT & operator=( VkValidationFlagsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ValidationFlagsEXT const *>( &rhs );
       return *this;
     }
 
-    ValidationFlagsEXT & operator=( ValidationFlagsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ValidationFlagsEXT ) );
-      return *this;
-    }
-
     ValidationFlagsEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -80289,7 +77519,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eValidationFlagsEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eValidationFlagsEXT;
     const void* pNext = {};
     uint32_t disabledValidationCheckCount = {};
     const VULKAN_HPP_NAMESPACE::ValidationCheckEXT* pDisabledValidationChecks = {};
@@ -80318,23 +77548,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR ViSurfaceCreateInfoNN( ViSurfaceCreateInfoNN const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     ViSurfaceCreateInfoNN( VkViSurfaceCreateInfoNN const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : ViSurfaceCreateInfoNN( *reinterpret_cast<ViSurfaceCreateInfoNN const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 ViSurfaceCreateInfoNN & operator=( ViSurfaceCreateInfoNN const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     ViSurfaceCreateInfoNN & operator=( VkViSurfaceCreateInfoNN const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN const *>( &rhs );
       return *this;
     }
 
-    ViSurfaceCreateInfoNN & operator=( ViSurfaceCreateInfoNN const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( ViSurfaceCreateInfoNN ) );
-      return *this;
-    }
-
     ViSurfaceCreateInfoNN & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -80385,7 +77610,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eViSurfaceCreateInfoNN;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eViSurfaceCreateInfoNN;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::ViSurfaceCreateFlagsNN flags = {};
     void* window = {};
@@ -80415,23 +77640,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR WaylandSurfaceCreateInfoKHR( WaylandSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     WaylandSurfaceCreateInfoKHR( VkWaylandSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : WaylandSurfaceCreateInfoKHR( *reinterpret_cast<WaylandSurfaceCreateInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 WaylandSurfaceCreateInfoKHR & operator=( WaylandSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     WaylandSurfaceCreateInfoKHR & operator=( VkWaylandSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR const *>( &rhs );
       return *this;
     }
 
-    WaylandSurfaceCreateInfoKHR & operator=( WaylandSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( WaylandSurfaceCreateInfoKHR ) );
-      return *this;
-    }
-
     WaylandSurfaceCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -80489,7 +77709,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWaylandSurfaceCreateInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWaylandSurfaceCreateInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateFlagsKHR flags = {};
     struct wl_display* display = {};
@@ -80520,9 +77740,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR Win32KeyedMutexAcquireReleaseInfoKHR( Win32KeyedMutexAcquireReleaseInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     Win32KeyedMutexAcquireReleaseInfoKHR( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : Win32KeyedMutexAcquireReleaseInfoKHR( *reinterpret_cast<Win32KeyedMutexAcquireReleaseInfoKHR const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     Win32KeyedMutexAcquireReleaseInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceMemory> const & acquireSyncs_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & acquireKeys_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & acquireTimeouts_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceMemory> const & releaseSyncs_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & releaseKeys_ = {} )
@@ -80559,18 +77778,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & operator=( Win32KeyedMutexAcquireReleaseInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     Win32KeyedMutexAcquireReleaseInfoKHR & operator=( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR const *>( &rhs );
       return *this;
     }
 
-    Win32KeyedMutexAcquireReleaseInfoKHR & operator=( Win32KeyedMutexAcquireReleaseInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) );
-      return *this;
-    }
-
     Win32KeyedMutexAcquireReleaseInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -80701,7 +77916,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR;
     const void* pNext = {};
     uint32_t acquireCount = {};
     const VULKAN_HPP_NAMESPACE::DeviceMemory* pAcquireSyncs = {};
@@ -80736,9 +77951,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR Win32KeyedMutexAcquireReleaseInfoNV( Win32KeyedMutexAcquireReleaseInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     Win32KeyedMutexAcquireReleaseInfoNV( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : Win32KeyedMutexAcquireReleaseInfoNV( *reinterpret_cast<Win32KeyedMutexAcquireReleaseInfoNV const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     Win32KeyedMutexAcquireReleaseInfoNV( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceMemory> const & acquireSyncs_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & acquireKeys_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & acquireTimeoutMilliseconds_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceMemory> const & releaseSyncs_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & releaseKeys_ = {} )
@@ -80775,18 +77989,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV & operator=( Win32KeyedMutexAcquireReleaseInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     Win32KeyedMutexAcquireReleaseInfoNV & operator=( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV const *>( &rhs );
       return *this;
     }
 
-    Win32KeyedMutexAcquireReleaseInfoNV & operator=( Win32KeyedMutexAcquireReleaseInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) );
-      return *this;
-    }
-
     Win32KeyedMutexAcquireReleaseInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -80917,7 +78127,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWin32KeyedMutexAcquireReleaseInfoNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWin32KeyedMutexAcquireReleaseInfoNV;
     const void* pNext = {};
     uint32_t acquireCount = {};
     const VULKAN_HPP_NAMESPACE::DeviceMemory* pAcquireSyncs = {};
@@ -80952,23 +78162,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR Win32SurfaceCreateInfoKHR( Win32SurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     Win32SurfaceCreateInfoKHR( VkWin32SurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : Win32SurfaceCreateInfoKHR( *reinterpret_cast<Win32SurfaceCreateInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 Win32SurfaceCreateInfoKHR & operator=( Win32SurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     Win32SurfaceCreateInfoKHR & operator=( VkWin32SurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR const *>( &rhs );
       return *this;
     }
 
-    Win32SurfaceCreateInfoKHR & operator=( Win32SurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( Win32SurfaceCreateInfoKHR ) );
-      return *this;
-    }
-
     Win32SurfaceCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -81026,7 +78231,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWin32SurfaceCreateInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWin32SurfaceCreateInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::Win32SurfaceCreateFlagsKHR flags = {};
     HINSTANCE hinstance = {};
@@ -81056,9 +78261,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR WriteDescriptorSetAccelerationStructureKHR( WriteDescriptorSetAccelerationStructureKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     WriteDescriptorSetAccelerationStructureKHR( VkWriteDescriptorSetAccelerationStructureKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : WriteDescriptorSetAccelerationStructureKHR( *reinterpret_cast<WriteDescriptorSetAccelerationStructureKHR const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     WriteDescriptorSetAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures_ )
@@ -81067,18 +78271,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureKHR & operator=( WriteDescriptorSetAccelerationStructureKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     WriteDescriptorSetAccelerationStructureKHR & operator=( VkWriteDescriptorSetAccelerationStructureKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR const *>( &rhs );
       return *this;
     }
 
-    WriteDescriptorSetAccelerationStructureKHR & operator=( WriteDescriptorSetAccelerationStructureKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( WriteDescriptorSetAccelerationStructureKHR ) );
-      return *this;
-    }
-
     WriteDescriptorSetAccelerationStructureKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -81138,7 +78338,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWriteDescriptorSetAccelerationStructureKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWriteDescriptorSetAccelerationStructureKHR;
     const void* pNext = {};
     uint32_t accelerationStructureCount = {};
     const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR* pAccelerationStructures = {};
@@ -81166,9 +78366,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR WriteDescriptorSetAccelerationStructureNV( WriteDescriptorSetAccelerationStructureNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     WriteDescriptorSetAccelerationStructureNV( VkWriteDescriptorSetAccelerationStructureNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : WriteDescriptorSetAccelerationStructureNV( *reinterpret_cast<WriteDescriptorSetAccelerationStructureNV const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     WriteDescriptorSetAccelerationStructureNV( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AccelerationStructureNV> const & accelerationStructures_ )
@@ -81177,18 +78376,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureNV & operator=( WriteDescriptorSetAccelerationStructureNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     WriteDescriptorSetAccelerationStructureNV & operator=( VkWriteDescriptorSetAccelerationStructureNV const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV const *>( &rhs );
       return *this;
     }
 
-    WriteDescriptorSetAccelerationStructureNV & operator=( WriteDescriptorSetAccelerationStructureNV const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( WriteDescriptorSetAccelerationStructureNV ) );
-      return *this;
-    }
-
     WriteDescriptorSetAccelerationStructureNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -81248,7 +78443,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWriteDescriptorSetAccelerationStructureNV;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWriteDescriptorSetAccelerationStructureNV;
     const void* pNext = {};
     uint32_t accelerationStructureCount = {};
     const VULKAN_HPP_NAMESPACE::AccelerationStructureNV* pAccelerationStructures = {};
@@ -81276,9 +78471,8 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR WriteDescriptorSetInlineUniformBlockEXT( WriteDescriptorSetInlineUniformBlockEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     WriteDescriptorSetInlineUniformBlockEXT( VkWriteDescriptorSetInlineUniformBlockEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : WriteDescriptorSetInlineUniformBlockEXT( *reinterpret_cast<WriteDescriptorSetInlineUniformBlockEXT const *>( &rhs ) )
+    {}
 
 #if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
     template <typename T>
@@ -81288,18 +78482,14 @@ namespace VULKAN_HPP_NAMESPACE
 #endif  // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE)
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetInlineUniformBlockEXT & operator=( WriteDescriptorSetInlineUniformBlockEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     WriteDescriptorSetInlineUniformBlockEXT & operator=( VkWriteDescriptorSetInlineUniformBlockEXT const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlockEXT const *>( &rhs );
       return *this;
     }
 
-    WriteDescriptorSetInlineUniformBlockEXT & operator=( WriteDescriptorSetInlineUniformBlockEXT const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( WriteDescriptorSetInlineUniformBlockEXT ) );
-      return *this;
-    }
-
     WriteDescriptorSetInlineUniformBlockEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -81360,7 +78550,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWriteDescriptorSetInlineUniformBlockEXT;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWriteDescriptorSetInlineUniformBlockEXT;
     const void* pNext = {};
     uint32_t dataSize = {};
     const void* pData = {};
@@ -81389,23 +78579,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR XcbSurfaceCreateInfoKHR( XcbSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     XcbSurfaceCreateInfoKHR( VkXcbSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : XcbSurfaceCreateInfoKHR( *reinterpret_cast<XcbSurfaceCreateInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 XcbSurfaceCreateInfoKHR & operator=( XcbSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     XcbSurfaceCreateInfoKHR & operator=( VkXcbSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR const *>( &rhs );
       return *this;
     }
 
-    XcbSurfaceCreateInfoKHR & operator=( XcbSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( XcbSurfaceCreateInfoKHR ) );
-      return *this;
-    }
-
     XcbSurfaceCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -81463,7 +78648,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eXcbSurfaceCreateInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eXcbSurfaceCreateInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::XcbSurfaceCreateFlagsKHR flags = {};
     xcb_connection_t* connection = {};
@@ -81494,23 +78679,18 @@ namespace VULKAN_HPP_NAMESPACE
     VULKAN_HPP_CONSTEXPR XlibSurfaceCreateInfoKHR( XlibSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
 
     XlibSurfaceCreateInfoKHR( VkXlibSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      *this = rhs;
-    }
+      : XlibSurfaceCreateInfoKHR( *reinterpret_cast<XlibSurfaceCreateInfoKHR const *>( &rhs ) )
+    {}
 #endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
 
+    VULKAN_HPP_CONSTEXPR_14 XlibSurfaceCreateInfoKHR & operator=( XlibSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
+
     XlibSurfaceCreateInfoKHR & operator=( VkXlibSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
     {
       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR const *>( &rhs );
       return *this;
     }
 
-    XlibSurfaceCreateInfoKHR & operator=( XlibSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
-    {
-      memcpy( static_cast<void *>( this ), &rhs, sizeof( XlibSurfaceCreateInfoKHR ) );
-      return *this;
-    }
-
     XlibSurfaceCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT
     {
       pNext = pNext_;
@@ -81568,7 +78748,7 @@ namespace VULKAN_HPP_NAMESPACE
 
 
   public:
-    const VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eXlibSurfaceCreateInfoKHR;
+    VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eXlibSurfaceCreateInfoKHR;
     const void* pNext = {};
     VULKAN_HPP_NAMESPACE::XlibSurfaceCreateFlagsKHR flags = {};
     Display* dpy = {};
index b2a6ab2..f90bc01 100644 (file)
@@ -43,7 +43,7 @@ extern "C" {
 #define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0)// Patch version should always be set to 0
 
 // Version of this file
-#define VK_HEADER_VERSION 166
+#define VK_HEADER_VERSION 167
 
 // Complete version of this file
 #define VK_HEADER_VERSION_COMPLETE VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION)
@@ -11097,7 +11097,7 @@ typedef struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM {
 
 
 #define VK_EXT_device_memory_report 1
-#define VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION 1
+#define VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION 2
 #define VK_EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME "VK_EXT_device_memory_report"
 
 typedef enum VkDeviceMemoryReportEventTypeEXT {
index 6d77709..c14fad3 100644 (file)
@@ -1,9 +1,9 @@
 {
   "version info": {
     "schema version": 2,
-    "api version": "1.2.166",
-    "comment": "from git branch: github-main commit: d7aab06b9be7a245945ec3f9cee772c27fbadc26",
-    "date": "2021-01-04 03:26:33Z"
+    "api version": "1.2.167",
+    "comment": "from git branch: github-main commit: d342f27444fbc31244458a23994aed818a4902ba",
+    "date": "2021-01-19 12:52:07Z"
   },
   "validation": {
     "vkGetInstanceProcAddr": {
         },
         {
           "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01460",
-          "text": " If <code>handleType</code> is not <code>0</code> and <code>handle</code> is <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> name a valid synchronization primitive of the type specified by <code>handleType</code>"
+          "text": " If <code>handle</code> is <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> name a valid synchronization primitive of the type specified by <code>handleType</code>"
         },
         {
           "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01461",
-          "text": " If <code>handleType</code> is not <code>0</code> and <code>name</code> is <code>NULL</code>, <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle of the type specified by <code>handleType</code>"
+          "text": " If <code>name</code> is <code>NULL</code>, <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle of the type specified by <code>handleType</code>"
         },
         {
           "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handle-01462",
         {
           "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-flags-parameter",
           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFenceImportFlagBits\">VkFenceImportFlagBits</a> values"
-        },
-        {
-          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-parameter",
-          "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
         }
       ]
     },
         },
         {
           "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01467",
-          "text": " If <code>handleType</code> is not <code>0</code> and <code>handle</code> is <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> name a valid synchronization primitive of the type specified by <code>handleType</code>"
+          "text": " If <code>handle</code> is <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> name a valid synchronization primitive of the type specified by <code>handleType</code>"
         },
         {
           "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01468",
-          "text": " If <code>handleType</code> is not <code>0</code> and <code>name</code> is <code>NULL</code>, <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle of the type specified by <code>handleType</code>"
+          "text": " If <code>name</code> is <code>NULL</code>, <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle of the type specified by <code>handleType</code>"
         },
         {
           "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01469",
         {
           "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-flags-parameter",
           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSemaphoreImportFlagBits\">VkSemaphoreImportFlagBits</a> values"
-        },
-        {
-          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-parameter",
-          "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value"
         }
       ],
       "(VK_KHR_external_semaphore_win32)+(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
       "(VK_VERSION_1_2,VK_EXT_separate_depth_stencil_layouts)": [
         {
           "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04065",
-          "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with at least one of <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> set"
+          "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with at least one of <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> set"
         },
         {
           "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04066",
-          "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set"
+          "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set"
         },
         {
           "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04067",
-          "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with at least one of <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> set"
+          "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with at least one of <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> set"
         },
         {
           "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04068",
-          "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set"
+          "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set"
         }
       ],
       "(VK_KHR_fragment_shading_rate,VK_NV_shading_rate_image)": [
       "core": [
         {
           "vuid": "VUID-VkAttachmentReference-layout-00857",
-          "text": " If <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code>, <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>, <code>VK_IMAGE_LAYOUT_PRESENT_SRC_KHR</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR</code>"
+          "text": " If <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code>, <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>, <code>VK_IMAGE_LAYOUT_PRESENT_SRC_KHR</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>"
         },
         {
           "vuid": "VUID-VkAttachmentReference-layout-parameter",
         },
         {
           "vuid": "VUID-VkFramebufferCreateInfo-flags-03190",
-          "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include an instance of <a href=\"#VkFramebufferAttachmentsCreateInfoKHR\">VkFramebufferAttachmentsCreateInfoKHR</a>"
+          "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include an instance of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a>"
         },
         {
           "vuid": "VUID-VkFramebufferCreateInfo-flags-03191",
-          "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>attachmentImageInfoCount</code> member of an instance of <a href=\"#VkFramebufferAttachmentsCreateInfoKHR\">VkFramebufferAttachmentsCreateInfoKHR</a> in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be equal to either zero or <code>attachmentCount</code>"
+          "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>attachmentImageInfoCount</code> member of an instance of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be equal to either zero or <code>attachmentCount</code>"
         },
         {
           "vuid": "VUID-VkFramebufferCreateInfo-flags-04541",
-          "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>width</code> member of any element of the <code>pAttachmentImageInfos</code> member of an instance of <a href=\"#VkFramebufferAttachmentsCreateInfoKHR\">VkFramebufferAttachmentsCreateInfoKHR</a> in the <code>pNext</code> chain that is used as an input, color, resolve or depth/stencil attachment in <code>pRenderPass</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>width</code>"
+          "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>width</code> member of any element of the <code>pAttachmentImageInfos</code> member of an instance of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> in the <code>pNext</code> chain that is used as an input, color, resolve or depth/stencil attachment in <code>pRenderPass</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>width</code>"
         },
         {
           "vuid": "VUID-VkFramebufferCreateInfo-flags-04542",
-          "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>height</code> member of any element of the <code>pAttachmentImageInfos</code> member of an instance of <a href=\"#VkFramebufferAttachmentsCreateInfoKHR\">VkFramebufferAttachmentsCreateInfoKHR</a> in the <code>pNext</code> chain that is used as an input, color, resolve or depth/stencil attachment in <code>pRenderPass</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>height</code>"
+          "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>height</code> member of any element of the <code>pAttachmentImageInfos</code> member of an instance of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> in the <code>pNext</code> chain that is used as an input, color, resolve or depth/stencil attachment in <code>pRenderPass</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>height</code>"
         },
         {
           "vuid": "VUID-VkFramebufferCreateInfo-flags-03201",
       "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)+(VK_EXT_fragment_density_map)": [
         {
           "vuid": "VUID-VkFramebufferCreateInfo-flags-03196",
-          "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>width</code> member of any element of the <code>pAttachmentImageInfos</code> member of an instance of <a href=\"#VkFramebufferAttachmentsCreateInfoKHR\">VkFramebufferAttachmentsCreateInfoKHR</a> in the <code>pNext</code> chain that is referenced by <a href=\"#VkRenderPassFragmentDensityMapCreateInfoEXT\">VkRenderPassFragmentDensityMapCreateInfoEXT</a>::<code>fragmentDensityMapAttachment</code> in <code>renderPass</code> <strong class=\"purple\">must</strong> be greater than or equal to \\(\\left\\lceil{\\frac{width}{maxFragmentDensityTexelSize_{width}}}\\right\\rceil\\)"
+          "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>width</code> member of any element of the <code>pAttachmentImageInfos</code> member of an instance of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> in the <code>pNext</code> chain that is referenced by <a href=\"#VkRenderPassFragmentDensityMapCreateInfoEXT\">VkRenderPassFragmentDensityMapCreateInfoEXT</a>::<code>fragmentDensityMapAttachment</code> in <code>renderPass</code> <strong class=\"purple\">must</strong> be greater than or equal to \\(\\left\\lceil{\\frac{width}{maxFragmentDensityTexelSize_{width}}}\\right\\rceil\\)"
         },
         {
           "vuid": "VUID-VkFramebufferCreateInfo-flags-03197",
           "text": " The shader code for the entry points identified by <code>pStages</code>, and the rest of the state identified by this structure <strong class=\"purple\">must</strong> adhere to the pipeline linking rules described in the <a href=\"#interfaces\">Shader Interfaces</a> chapter"
         },
         {
-          "vuid": "VUID-VkGraphicsPipelineCreateInfo-blendEnable-02023",
-          "text": " If rasterization is not disabled and the subpass uses color attachments, then for each color attachment in the subpass the <code>blendEnable</code> member of the corresponding element of the <code>pAttachment</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code> if the attached image&#8217;s <a href=\"#resources-image-format-features\">format features</a> does not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>"
+          "vuid": "VUID-VkGraphicsPipelineCreateInfo-blendEnable-04717",
+          "text": " If rasterization is not disabled, then for each color attachment in the subpass, if the <a href=\"#potential-format-features\">potential format features</a> of the format of the corresponding attachment description 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>"
         },
         {
           "vuid": "VUID-VkGraphicsPipelineCreateInfo-attachmentCount-00746",
         }
       ]
     },
-    "vkDestroyPipeline": {
+    "vkCreateRayTracingPipelinesNV": {
       "core": [
         {
-          "vuid": "VUID-vkDestroyPipeline-pipeline-00765",
-          "text": " All submitted commands that refer to <code>pipeline</code> <strong class=\"purple\">must</strong> have completed execution"
+          "vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-03415",
+          "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and the <code>basePipelineIndex</code> member of that same element is not <code>-1</code>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be less than the index into <code>pCreateInfos</code> that corresponds to that element"
         },
         {
-          "vuid": "VUID-vkDestroyPipeline-pipeline-00766",
-          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>pipeline</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
-        },
+          "vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-03416",
+          "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, the base pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT</code> flag set"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_device_group)": [
         {
-          "vuid": "VUID-vkDestroyPipeline-pipeline-00767",
-          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>pipeline</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
-        },
+          "vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-03816",
+          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not contain the <code>VK_PIPELINE_CREATE_DISPATCH_BASE</code> flag"
+        }
+      ],
+      "(VK_EXT_pipeline_creation_cache_control)": [
         {
-          "vuid": "VUID-vkDestroyPipeline-device-parameter",
+          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-02903",
+          "text": " If <code>pipelineCache</code> was created with <code>VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT</code>, host access to <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#fundamentals-threadingbehavior\">externally synchronized</a>"
+        }
+      ],
+      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)": [
+        {
+          "vuid": "VUID-vkCreateRayTracingPipelinesNV-device-parameter",
           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-vkDestroyPipeline-pipeline-parameter",
-          "text": " If <code>pipeline</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
+          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parameter",
+          "text": " If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle"
         },
         {
-          "vuid": "VUID-vkDestroyPipeline-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"
+          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pCreateInfos-parameter",
+          "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <a href=\"#VkRayTracingPipelineCreateInfoNV\">VkRayTracingPipelineCreateInfoNV</a> structures"
         },
         {
-          "vuid": "VUID-vkDestroyPipeline-pipeline-parent",
-          "text": " If <code>pipeline</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
-        }
-      ]
-    },
-    "vkCreatePipelineCache": {
-      "core": [
-        {
-          "vuid": "VUID-vkCreatePipelineCache-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-vkCreateRayTracingPipelinesNV-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"
         },
         {
-          "vuid": "VUID-vkCreatePipelineCache-pCreateInfo-parameter",
-          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineCacheCreateInfo\">VkPipelineCacheCreateInfo</a> structure"
+          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pPipelines-parameter",
+          "text": " <code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <a href=\"#VkPipeline\">VkPipeline</a> handles"
         },
         {
-          "vuid": "VUID-vkCreatePipelineCache-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"
+          "vuid": "VUID-vkCreateRayTracingPipelinesNV-createInfoCount-arraylength",
+          "text": " <code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
         },
         {
-          "vuid": "VUID-vkCreatePipelineCache-pPipelineCache-parameter",
-          "text": " <code>pPipelineCache</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle"
+          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parent",
+          "text": " If <code>pipelineCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
         }
       ]
     },
-    "VkPipelineCacheCreateInfo": {
+    "vkCreateRayTracingPipelinesKHR": {
       "core": [
         {
-          "vuid": "VUID-VkPipelineCacheCreateInfo-initialDataSize-00768",
-          "text": " If <code>initialDataSize</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be equal to the size of <code>pInitialData</code>, as returned by <code>vkGetPipelineCacheData</code> when <code>pInitialData</code> was originally retrieved"
+          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-flags-03415",
+          "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and the <code>basePipelineIndex</code> member of that same element is not <code>-1</code>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be less than the index into <code>pCreateInfos</code> that corresponds to that element"
         },
         {
-          "vuid": "VUID-VkPipelineCacheCreateInfo-initialDataSize-00769",
-          "text": " If <code>initialDataSize</code> is not <code>0</code>, <code>pInitialData</code> <strong class=\"purple\">must</strong> have been retrieved from a previous call to <code>vkGetPipelineCacheData</code>"
+          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-flags-03416",
+          "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, the base pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT</code> flag set"
         },
         {
-          "vuid": "VUID-VkPipelineCacheCreateInfo-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO</code>"
+          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-03677",
+          "text": " If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> object"
         },
         {
-          "vuid": "VUID-VkPipelineCacheCreateInfo-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-03678",
+          "text": " Any previous deferred operation that was associated with <code>deferredOperation</code> <strong class=\"purple\">must</strong> be complete"
         },
         {
-          "vuid": "VUID-VkPipelineCacheCreateInfo-flags-parameter",
-          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCacheCreateFlagBits\">VkPipelineCacheCreateFlagBits</a> values"
-        },
+          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-rayTracingPipeline-03586",
+          "text": " The <a href=\"#features-rayTracingPipeline\"><code>rayTracingPipeline</code></a> feature <strong class=\"purple\">must</strong> be enabled"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_device_group)": [
         {
-          "vuid": "VUID-VkPipelineCacheCreateInfo-pInitialData-parameter",
-          "text": " If <code>initialDataSize</code> is not <code>0</code>, <code>pInitialData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>initialDataSize</code> bytes"
+          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-flags-03816",
+          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not contain the <code>VK_PIPELINE_CREATE_DISPATCH_BASE</code> flag"
         }
       ],
       "(VK_EXT_pipeline_creation_cache_control)": [
         {
-          "vuid": "VUID-VkPipelineCacheCreateInfo-pipelineCreationCacheControl-02892",
-          "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_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT</code>"
+          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-02903",
+          "text": " If <code>pipelineCache</code> was created with <code>VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT</code>, host access to <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#fundamentals-threadingbehavior\">externally synchronized</a>"
         }
-      ]
-    },
-    "vkMergePipelineCaches": {
-      "core": [
+      ],
+      "(VK_EXT_pipeline_creation_cache_control+VK_KHR_deferred_host_operations)": [
         {
-          "vuid": "VUID-vkMergePipelineCaches-dstCache-00770",
-          "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> not appear in the list of source caches"
-        },
+          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-03587",
+          "text": " If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <code>flags</code> member of elements of <code>pCreateInfos</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT</code>"
+        }
+      ],
+      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)": [
         {
-          "vuid": "VUID-vkMergePipelineCaches-device-parameter",
+          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-device-parameter",
           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-vkMergePipelineCaches-dstCache-parameter",
-          "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle"
-        },
-        {
-          "vuid": "VUID-vkMergePipelineCaches-pSrcCaches-parameter",
-          "text": " <code>pSrcCaches</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>srcCacheCount</code> valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handles"
+          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-parameter",
+          "text": " If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>deferredOperation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle"
         },
         {
-          "vuid": "VUID-vkMergePipelineCaches-srcCacheCount-arraylength",
-          "text": " <code>srcCacheCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-parameter",
+          "text": " If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle"
         },
         {
-          "vuid": "VUID-vkMergePipelineCaches-dstCache-parent",
-          "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pCreateInfos-parameter",
+          "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <a href=\"#VkRayTracingPipelineCreateInfoKHR\">VkRayTracingPipelineCreateInfoKHR</a> structures"
         },
         {
-          "vuid": "VUID-vkMergePipelineCaches-pSrcCaches-parent",
-          "text": " Each element of <code>pSrcCaches</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
-        }
-      ]
-    },
-    "vkGetPipelineCacheData": {
-      "core": [
-        {
-          "vuid": "VUID-vkGetPipelineCacheData-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-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"
         },
         {
-          "vuid": "VUID-vkGetPipelineCacheData-pipelineCache-parameter",
-          "text": " <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle"
+          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pPipelines-parameter",
+          "text": " <code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <a href=\"#VkPipeline\">VkPipeline</a> handles"
         },
         {
-          "vuid": "VUID-vkGetPipelineCacheData-pDataSize-parameter",
-          "text": " <code>pDataSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value"
+          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-createInfoCount-arraylength",
+          "text": " <code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
         },
         {
-          "vuid": "VUID-vkGetPipelineCacheData-pData-parameter",
-          "text": " If the value referenced by <code>pDataSize</code> is not <code>0</code>, and <code>pData</code> is not <code>NULL</code>, <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pDataSize</code> bytes"
+          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-parent",
+          "text": " If <code>deferredOperation</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
         },
         {
-          "vuid": "VUID-vkGetPipelineCacheData-pipelineCache-parent",
-          "text": " <code>pipelineCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-parent",
+          "text": " If <code>pipelineCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
         }
       ]
     },
-    "vkDestroyPipelineCache": {
+    "VkRayTracingPipelineCreateInfoNV": {
       "core": [
         {
-          "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-00771",
-          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>pipelineCache</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03421",
+          "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is <code>-1</code>, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be a valid handle to a ray tracing <code>VkPipeline</code>"
         },
         {
-          "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-00772",
-          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>pipelineCache</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03422",
+          "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be a valid index into the calling command&#8217;s <code>pCreateInfos</code> parameter"
         },
         {
-          "vuid": "VUID-vkDestroyPipelineCache-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03423",
+          "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is not <code>-1</code>, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
         },
         {
-          "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-parameter",
-          "text": " If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03424",
+          "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be <code>-1</code>"
         },
         {
-          "vuid": "VUID-vkDestroyPipelineCache-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"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pStages-03426",
+          "text": " The shader code for the entry points identified by <code>pStages</code>, and the rest of the state identified by this structure <strong class=\"purple\">must</strong> adhere to the pipeline linking rules described in the <a href=\"#interfaces\">Shader Interfaces</a> chapter"
         },
         {
-          "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-parent",
-          "text": " If <code>pipelineCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
-        }
-      ]
-    },
-    "VkSpecializationInfo": {
-      "core": [
-        {
-          "vuid": "VUID-VkSpecializationInfo-offset-00773",
-          "text": " The <code>offset</code> member of each element of <code>pMapEntries</code> <strong class=\"purple\">must</strong> be less than <code>dataSize</code>"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-03427",
+          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-pipelinelayout-consistency\">consistent</a> with all shaders specified in <code>pStages</code>"
         },
         {
-          "vuid": "VUID-VkSpecializationInfo-pMapEntries-00774",
-          "text": " The <code>size</code> member of each element of <code>pMapEntries</code> <strong class=\"purple\">must</strong> be less than or equal to <code>dataSize</code> minus <code>offset</code>"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-03428",
+          "text": " The number of resources in <code>layout</code> accessible to each shader stage that is used by the pipeline <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxPerStageResources</code>"
         },
         {
-          "vuid": "VUID-VkSpecializationInfo-pMapEntries-parameter",
-          "text": " If <code>mapEntryCount</code> is not <code>0</code>, <code>pMapEntries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>mapEntryCount</code> valid <a href=\"#VkSpecializationMapEntry\">VkSpecializationMapEntry</a> structures"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-stage-03425",
+          "text": " The <code>stage</code> member of at least one element of <code>pStages</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_RAYGEN_BIT_KHR</code>"
         },
         {
-          "vuid": "VUID-VkSpecializationInfo-pData-parameter",
-          "text": " If <code>dataSize</code> is not <code>0</code>, <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-maxRecursionDepth-03457",
+          "text": " <code>maxRecursionDepth</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxRecursionDepth</code>"
         }
-      ]
-    },
-    "VkSpecializationMapEntry": {
-      "core": [
+      ],
+      "(VK_NV_device_generated_commands)": [
         {
-          "vuid": "VUID-VkSpecializationMapEntry-constantID-00776",
-          "text": " For a <code>constantID</code> specialization constant declared in a shader, <code>size</code> <strong class=\"purple\">must</strong> match the byte size of the <code>constantID</code>. If the specialization constant is of type <code>boolean</code>, <code>size</code> <strong class=\"purple\">must</strong> be the byte size of <code>VkBool32</code>"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02904",
+          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>"
         }
-      ]
-    },
-    "VkPipelineLibraryCreateInfoKHR": {
-      "(VK_KHR_pipeline_library)": [
-        {
-          "vuid": "VUID-VkPipelineLibraryCreateInfoKHR-pLibraries-03381",
-          "text": " Each element of <code>pLibraries</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>"
-        },
+      ],
+      "(VK_EXT_pipeline_creation_cache_control)": [
         {
-          "vuid": "VUID-VkPipelineLibraryCreateInfoKHR-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR</code>"
+          "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_EXT</code> or <code>VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT</code>"
         },
         {
-          "vuid": "VUID-VkPipelineLibraryCreateInfoKHR-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
-        },
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02957",
+          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include both <code>VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV</code> and <code>VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT</code> at the same time"
+        }
+      ],
+      "(VK_KHR_pipeline_library)": [
         {
-          "vuid": "VUID-VkPipelineLibraryCreateInfoKHR-pLibraries-parameter",
-          "text": " If <code>libraryCount</code> is not <code>0</code>, <code>pLibraries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>libraryCount</code> valid <a href=\"#VkPipeline\">VkPipeline</a> handles"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03456",
+          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>"
         }
-      ]
-    },
-    "vkCmdBindPipeline": {
-      "core": [
+      ],
+      "(VK_KHR_ray_tracing_pipeline)": [
         {
-          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00777",
-          "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03458",
+          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00778",
-          "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03459",
+          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00779",
-          "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, <code>pipeline</code> <strong class=\"purple\">must</strong> be a compute pipeline"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03460",
+          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00780",
-          "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, <code>pipeline</code> <strong class=\"purple\">must</strong> be a graphics pipeline"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03461",
+          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdBindPipeline-pipeline-00781",
-          "text": " If the <a href=\"#features-variableMultisampleRate\">variable multisample rate</a> feature is not supported, <code>pipeline</code> is a graphics pipeline, the current subpass <a href=\"#renderpass-noattachments\">uses no attachments</a>, and this is not the first call to this function with a graphics pipeline after transitioning to the current subpass, then the sample count specified by this pipeline <strong class=\"purple\">must</strong> match that set in the previous pipeline"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03462",
+          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdBindPipeline-commandBuffer-parameter",
-          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03463",
+          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-parameter",
-          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03588",
+          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR</code>"
+        }
+      ],
+      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)": [
+        {
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV</code>"
         },
         {
-          "vuid": "VUID-vkCmdBindPipeline-pipeline-parameter",
-          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-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=\"#VkPipelineCreationFeedbackCreateInfoEXT\">VkPipelineCreationFeedbackCreateInfoEXT</a>"
         },
         {
-          "vuid": "VUID-vkCmdBindPipeline-commandBuffer-recording",
-          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-sType-unique",
+          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
         },
         {
-          "vuid": "VUID-vkCmdBindPipeline-commandBuffer-cmdpool",
-          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-parameter",
+          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values"
         },
         {
-          "vuid": "VUID-vkCmdBindPipeline-commonparent",
-          "text": " Both of <code>commandBuffer</code>, and <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
-        }
-      ],
-      "(VK_EXT_sample_locations)": [
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pStages-parameter",
+          "text": " <code>pStages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stageCount</code> valid <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a> structures"
+        },
         {
-          "vuid": "VUID-vkCmdBindPipeline-variableSampleLocations-01525",
-          "text": " If <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>::<code>variableSampleLocations</code> is <code>VK_FALSE</code>, and <code>pipeline</code> is a graphics pipeline created with a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure having its <code>sampleLocationsEnable</code> member set to <code>VK_TRUE</code> but without <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> enabled then the current render pass instance <strong class=\"purple\">must</strong> have been begun by specifying a <a href=\"#VkRenderPassSampleLocationsBeginInfoEXT\">VkRenderPassSampleLocationsBeginInfoEXT</a> structure whose <code>pPostSubpassSampleLocations</code> member contains an element with a <code>subpassIndex</code> matching the current subpass index and the <code>sampleLocationsInfo</code> member of that element <strong class=\"purple\">must</strong> match the <code>sampleLocationsInfo</code> specified in <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> when the pipeline was created"
-        }
-      ],
-      "(VK_EXT_transform_feedback)": [
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pGroups-parameter",
+          "text": " <code>pGroups</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>groupCount</code> valid <a href=\"#VkRayTracingShaderGroupCreateInfoNV\">VkRayTracingShaderGroupCreateInfoNV</a> structures"
+        },
         {
-          "vuid": "VUID-vkCmdBindPipeline-None-02323",
-          "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
-        }
-      ],
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)": [
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-parameter",
+          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle"
+        },
         {
-          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-02391",
-          "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-stageCount-arraylength",
+          "text": " <code>stageCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
         },
         {
-          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-02392",
-          "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR</code>, the <code>pipeline</code> <strong class=\"purple\">must</strong> be a ray tracing pipeline"
-        }
-      ],
-      "(VK_KHR_pipeline_library)": [
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-groupCount-arraylength",
+          "text": " <code>groupCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+        },
         {
-          "vuid": "VUID-vkCmdBindPipeline-pipeline-03382",
-          "text": " The <code>pipeline</code> <strong class=\"purple\">must</strong> not have been created with <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code> set"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-commonparent",
+          "text": " Both of <code>basePipelineHandle</code>, and <code>layout</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>"
         }
       ]
     },
-    "vkCmdBindPipelineShaderGroupNV": {
-      "(VK_NV_device_generated_commands)": [
+    "VkRayTracingPipelineCreateInfoKHR": {
+      "core": [
         {
-          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-groupIndex-02893",
-          "text": " <code>groupIndex</code> <strong class=\"purple\">must</strong> be <code>0</code> or less than the effective <a href=\"#VkGraphicsPipelineShaderGroupsCreateInfoNV\">VkGraphicsPipelineShaderGroupsCreateInfoNV</a>::<code>groupCount</code> including the referenced pipelines"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03421",
+          "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is <code>-1</code>, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be a valid handle to a ray tracing <code>VkPipeline</code>"
         },
         {
-          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-pipelineBindPoint-02894",
-          "text": " The <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03422",
+          "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be a valid index into the calling command&#8217;s <code>pCreateInfos</code> parameter"
         },
         {
-          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-groupIndex-02895",
-          "text": " The same restrictions as <a href=\"#vkCmdBindPipeline\">vkCmdBindPipeline</a> apply as if the bound pipeline was created only with the Shader Group from the <code>groupIndex</code> information"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03423",
+          "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is not <code>-1</code>, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
         },
         {
-          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-deviceGeneratedCommands-02896",
-          "text": " The <a href=\"#features-deviceGeneratedCommands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03424",
+          "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be <code>-1</code>"
         },
         {
-          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-commandBuffer-parameter",
-          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pStages-03426",
+          "text": " The shader code for the entry points identified by <code>pStages</code>, and the rest of the state identified by this structure <strong class=\"purple\">must</strong> adhere to the pipeline linking rules described in the <a href=\"#interfaces\">Shader Interfaces</a> chapter"
         },
         {
-          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-pipelineBindPoint-parameter",
-          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-layout-03427",
+          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-pipelinelayout-consistency\">consistent</a> with all shaders specified in <code>pStages</code>"
         },
         {
-          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-pipeline-parameter",
-          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-layout-03428",
+          "text": " The number of resources in <code>layout</code> accessible to each shader stage that is used by the pipeline <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxPerStageResources</code>"
         },
         {
-          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-commandBuffer-recording",
-          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-stage-03425",
+          "text": " If <code>flags</code> does not include <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>, the <code>stage</code> member of at least one element of <code>pStages</code>, including those implicitly added by <code>pLibraryInfo</code>, <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_RAYGEN_BIT_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-commandBuffer-cmdpool",
-          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-maxPipelineRayRecursionDepth-03589",
+          "text": " <code>maxPipelineRayRecursionDepth</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPipelinePropertiesKHR\">VkPhysicalDeviceRayTracingPipelinePropertiesKHR</a>::<code>maxRayRecursionDepth</code>"
         },
         {
-          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-commonparent",
-          "text": " Both of <code>commandBuffer</code>, and <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
-        }
-      ]
-    },
-    "vkGetPipelineExecutablePropertiesKHR": {
-      "(VK_KHR_pipeline_executable_properties)": [
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03595",
+          "text": " If the <a href=\"#VK_KHR_pipeline_library\">VK_KHR_pipeline_library</a> extension is not enabled, <code>pLibraryInfo</code> and <code>pLibraryInterface</code> <strong class=\"purple\">must</strong> be <code>NULL</code>."
+        },
         {
-          "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pipelineExecutableInfo-03270",
-          "text": " <a href=\"#features-pipelineExecutableInfo\"><code>pipelineExecutableInfo</code></a> <strong class=\"purple\">must</strong> be enabled"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03470",
+          "text": " If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>, for any element of <code>pGroups</code> with a <code>type</code> of <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR</code> or <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR</code>, the <code>anyHitShader</code> of that element <strong class=\"purple\">must</strong> not be <code>VK_SHADER_UNUSED_KHR</code>"
         },
         {
-          "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pipeline-03271",
-          "text": " <code>pipeline</code> member of <code>pPipelineInfo</code> <strong class=\"purple\">must</strong> have been created with <code>device</code>"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03471",
+          "text": " If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>, for any element of <code>pGroups</code> with a <code>type</code> of <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR</code> or <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR</code>, the <code>closestHitShader</code> of that element <strong class=\"purple\">must</strong> not be <code>VK_SHADER_UNUSED_KHR</code>"
         },
         {
-          "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-rayTraversalPrimitiveCulling-03596",
+          "text": " If the <a href=\"#features-rayTraversalPrimitiveCulling\"><code>rayTraversalPrimitiveCulling</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR</code>"
         },
         {
-          "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pPipelineInfo-parameter",
-          "text": " <code>pPipelineInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineInfoKHR\">VkPipelineInfoKHR</a> structure"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-rayTraversalPrimitiveCulling-03597",
+          "text": " If the <a href=\"#features-rayTraversalPrimitiveCulling\"><code>rayTraversalPrimitiveCulling</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR</code>"
         },
         {
-          "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pExecutableCount-parameter",
-          "text": " <code>pExecutableCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03598",
+          "text": " If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR</code>, <a href=\"#features-rayTracingPipelineShaderGroupHandleCaptureReplay\"><code>rayTracingPipelineShaderGroupHandleCaptureReplay</code></a> <strong class=\"purple\">must</strong> be enabled"
         },
         {
-          "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pProperties-parameter",
-          "text": " If the value referenced by <code>pExecutableCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pExecutableCount</code> <a href=\"#VkPipelineExecutablePropertiesKHR\">VkPipelineExecutablePropertiesKHR</a> structures"
-        }
-      ]
-    },
-    "VkPipelineInfoKHR": {
-      "(VK_KHR_pipeline_executable_properties)": [
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-rayTracingPipelineShaderGroupHandleCaptureReplay-03599",
+          "text": " If <a href=\"#VkPhysicalDeviceRayTracingPipelineFeaturesKHR\">VkPhysicalDeviceRayTracingPipelineFeaturesKHR</a>::<code>rayTracingPipelineShaderGroupHandleCaptureReplay</code> is <code>VK_TRUE</code> and the <code>pShaderGroupCaptureReplayHandle</code> member of any element of <code>pGroups</code> is not <code>NULL</code>, <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR</code>"
+        },
         {
-          "vuid": "VUID-VkPipelineInfoKHR-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR</code>"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03600",
+          "text": " If <code>pLibraryInfo</code> is not <code>NULL</code> and its <code>libraryCount</code> is <code>0</code>, <code>stageCount</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
         },
         {
-          "vuid": "VUID-VkPipelineInfoKHR-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03601",
+          "text": " If <code>pLibraryInfo</code> is not <code>NULL</code> and its <code>libraryCount</code> is <code>0</code>, <code>groupCount</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
         },
         {
-          "vuid": "VUID-VkPipelineInfoKHR-pipeline-parameter",
-          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pDynamicStates-03602",
+          "text": " Any element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> <strong class=\"purple\">must</strong> be <code>VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR</code>"
         }
-      ]
-    },
-    "VkPipelineExecutablePropertiesKHR": {
-      "(VK_KHR_pipeline_executable_properties)": [
+      ],
+      "(VK_NV_device_generated_commands)": [
         {
-          "vuid": "VUID-VkPipelineExecutablePropertiesKHR-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR</code>"
-        },
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-02904",
+          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>"
+        }
+      ],
+      "(VK_EXT_pipeline_creation_cache_control)": [
         {
-          "vuid": "VUID-VkPipelineExecutablePropertiesKHR-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "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_EXT</code> or <code>VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT</code>"
         }
-      ]
-    },
-    "vkGetPipelineExecutableStatisticsKHR": {
-      "(VK_KHR_pipeline_executable_properties)": [
+      ],
+      "(VK_KHR_pipeline_library)": [
         {
-          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pipelineExecutableInfo-03272",
-          "text": " <a href=\"#features-pipelineExecutableInfo\"><code>pipelineExecutableInfo</code></a> <strong class=\"purple\">must</strong> be enabled"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03465",
+          "text": " If <code>flags</code> includes <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>, <code>pLibraryInterface</code> <strong class=\"purple\">must</strong> not be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pipeline-03273",
-          "text": " <code>pipeline</code> member of <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> have been created with <code>device</code>"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03590",
+          "text": " If <code>pLibraryInfo</code> is not <code>NULL</code> and its <code>libraryCount</code> member is greater than <code>0</code>, its <code>pLibraryInterface</code> member <strong class=\"purple\">must</strong> not be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pipeline-03274",
-          "text": " <code>pipeline</code> member of <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR</code> set in the <code>flags</code> field of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a> or <a href=\"#VkComputePipelineCreateInfo\">VkComputePipelineCreateInfo</a>"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraries-03591",
+          "text": " Each element of the <code>pLibraries</code> member of <code>pLibraryInfo</code> <strong class=\"purple\">must</strong> have been created with the value of <code>maxPipelineRayRecursionDepth</code> equal to that in this pipeline"
         },
         {
-          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03592",
+          "text": " If <code>pLibraryInfo</code> is not <code>NULL</code>, each element of its <code>pLibraries</code> member <strong class=\"purple\">must</strong> have been created with a <code>layout</code> that is compatible with the <code>layout</code> in this pipeline"
         },
         {
-          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pExecutableInfo-parameter",
-          "text": " <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineExecutableInfoKHR\">VkPipelineExecutableInfoKHR</a> structure"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03593",
+          "text": " If <code>pLibraryInfo</code> is not <code>NULL</code>, each element of its <code>pLibraries</code> member <strong class=\"purple\">must</strong> have been created with values of the <code>maxPipelineRayPayloadSize</code> and <code>maxPipelineRayHitAttributeSize</code> members of <code>pLibraryInterface</code> equal to those in this pipeline"
         },
         {
-          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pStatisticCount-parameter",
-          "text": " <code>pStatisticCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03594",
+          "text": " If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR</code>, each element of the <code>pLibraries</code> member of <code>libraries</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR</code> bit set"
         },
         {
-          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pStatistics-parameter",
-          "text": " If the value referenced by <code>pStatisticCount</code> is not <code>0</code>, and <code>pStatistics</code> is not <code>NULL</code>, <code>pStatistics</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pStatisticCount</code> <a href=\"#VkPipelineExecutableStatisticKHR\">VkPipelineExecutableStatisticKHR</a> structures"
-        }
-      ]
-    },
-    "VkPipelineExecutableInfoKHR": {
-      "(VK_KHR_pipeline_executable_properties)": [
-        {
-          "vuid": "VUID-VkPipelineExecutableInfoKHR-executableIndex-03275",
-          "text": " <code>executableIndex</code> <strong class=\"purple\">must</strong> be less than the number of executables associated with <code>pipeline</code> as returned in the <code>pExecutableCount</code> parameter of <code>vkGetPipelineExecutablePropertiesKHR</code>"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-04718",
+          "text": " If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR</code>, each element of the <code>pLibraries</code> member of <code>libraries</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR</code> bit set"
         },
         {
-          "vuid": "VUID-VkPipelineExecutableInfoKHR-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR</code>"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-04719",
+          "text": " If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR</code>, each element of the <code>pLibraries</code> member of <code>libraries</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR</code> bit set"
         },
         {
-          "vuid": "VUID-VkPipelineExecutableInfoKHR-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-04720",
+          "text": " If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>, each element of the <code>pLibraries</code> member of <code>libraries</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code> bit set"
         },
         {
-          "vuid": "VUID-VkPipelineExecutableInfoKHR-pipeline-parameter",
-          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
-        }
-      ]
-    },
-    "VkPipelineExecutableStatisticKHR": {
-      "(VK_KHR_pipeline_executable_properties)": [
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-04721",
+          "text": " If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>, each element of the <code>pLibraries</code> member of <code>libraries</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code> bit set"
+        },
         {
-          "vuid": "VUID-VkPipelineExecutableStatisticKHR-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR</code>"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-04722",
+          "text": " If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>, each element of the <code>pLibraries</code> member of <code>libraries</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code> bit set"
         },
         {
-          "vuid": "VUID-VkPipelineExecutableStatisticKHR-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-04723",
+          "text": " If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR</code>, each element of the <code>pLibraries</code> member of <code>libraries</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR</code> bit set"
         }
-      ]
-    },
-    "vkGetPipelineExecutableInternalRepresentationsKHR": {
-      "(VK_KHR_pipeline_executable_properties)": [
+      ],
+      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)": [
         {
-          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipelineExecutableInfo-03276",
-          "text": " <a href=\"#features-pipelineExecutableInfo\"><code>pipelineExecutableInfo</code></a> <strong class=\"purple\">must</strong> be enabled"
-        },
-        {
-          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipeline-03277",
-          "text": " <code>pipeline</code> member of <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> have been created with <code>device</code>"
-        },
-        {
-          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipeline-03278",
-          "text": " <code>pipeline</code> member of <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR</code> set in the <code>flags</code> field of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a> or <a href=\"#VkComputePipelineCreateInfo\">VkComputePipelineCreateInfo</a>"
-        },
-        {
-          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
-        },
-        {
-          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pExecutableInfo-parameter",
-          "text": " <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineExecutableInfoKHR\">VkPipelineExecutableInfoKHR</a> structure"
-        },
-        {
-          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pInternalRepresentationCount-parameter",
-          "text": " <code>pInternalRepresentationCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
-        },
-        {
-          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pInternalRepresentations-parameter",
-          "text": " If the value referenced by <code>pInternalRepresentationCount</code> is not <code>0</code>, and <code>pInternalRepresentations</code> is not <code>NULL</code>, <code>pInternalRepresentations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pInternalRepresentationCount</code> <a href=\"#VkPipelineExecutableInternalRepresentationKHR\">VkPipelineExecutableInternalRepresentationKHR</a> structures"
-        }
-      ]
-    },
-    "VkPipelineExecutableInternalRepresentationKHR": {
-      "(VK_KHR_pipeline_executable_properties)": [
-        {
-          "vuid": "VUID-VkPipelineExecutableInternalRepresentationKHR-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR</code>"
-        },
-        {
-          "vuid": "VUID-VkPipelineExecutableInternalRepresentationKHR-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
-        }
-      ]
-    },
-    "vkGetShaderInfoAMD": {
-      "(VK_AMD_shader_info)": [
-        {
-          "vuid": "VUID-vkGetShaderInfoAMD-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
-        },
-        {
-          "vuid": "VUID-vkGetShaderInfoAMD-pipeline-parameter",
-          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
-        },
-        {
-          "vuid": "VUID-vkGetShaderInfoAMD-shaderStage-parameter",
-          "text": " <code>shaderStage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> value"
-        },
-        {
-          "vuid": "VUID-vkGetShaderInfoAMD-infoType-parameter",
-          "text": " <code>infoType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderInfoTypeAMD\">VkShaderInfoTypeAMD</a> value"
-        },
-        {
-          "vuid": "VUID-vkGetShaderInfoAMD-pInfoSize-parameter",
-          "text": " <code>pInfoSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value"
-        },
-        {
-          "vuid": "VUID-vkGetShaderInfoAMD-pInfo-parameter",
-          "text": " If the value referenced by <code>pInfoSize</code> is not <code>0</code>, and <code>pInfo</code> is not <code>NULL</code>, <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pInfoSize</code> bytes"
-        },
-        {
-          "vuid": "VUID-vkGetShaderInfoAMD-pipeline-parent",
-          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
-        }
-      ]
-    },
-    "VkPipelineCompilerControlCreateInfoAMD": {
-      "(VK_AMD_pipeline_compiler_control)": [
-        {
-          "vuid": "VUID-VkPipelineCompilerControlCreateInfoAMD-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD</code>"
-        },
-        {
-          "vuid": "VUID-VkPipelineCompilerControlCreateInfoAMD-compilerControlFlags-zerobitmask",
-          "text": " <code>compilerControlFlags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
-        }
-      ]
-    },
-    "vkCreateRayTracingPipelinesNV": {
-      "core": [
-        {
-          "vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-03415",
-          "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and the <code>basePipelineIndex</code> member of that same element is not <code>-1</code>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be less than the index into <code>pCreateInfos</code> that corresponds to that element"
-        },
-        {
-          "vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-03416",
-          "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, the base pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT</code> flag set"
-        }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_device_group)": [
-        {
-          "vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-03816",
-          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not contain the <code>VK_PIPELINE_CREATE_DISPATCH_BASE</code> flag"
-        }
-      ],
-      "(VK_EXT_pipeline_creation_cache_control)": [
-        {
-          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-02903",
-          "text": " If <code>pipelineCache</code> was created with <code>VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT</code>, host access to <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#fundamentals-threadingbehavior\">externally synchronized</a>"
-        }
-      ],
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)": [
-        {
-          "vuid": "VUID-vkCreateRayTracingPipelinesNV-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
-        },
-        {
-          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parameter",
-          "text": " If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle"
-        },
-        {
-          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pCreateInfos-parameter",
-          "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <a href=\"#VkRayTracingPipelineCreateInfoNV\">VkRayTracingPipelineCreateInfoNV</a> structures"
-        },
-        {
-          "vuid": "VUID-vkCreateRayTracingPipelinesNV-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"
-        },
-        {
-          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pPipelines-parameter",
-          "text": " <code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <a href=\"#VkPipeline\">VkPipeline</a> handles"
-        },
-        {
-          "vuid": "VUID-vkCreateRayTracingPipelinesNV-createInfoCount-arraylength",
-          "text": " <code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
-        },
-        {
-          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parent",
-          "text": " If <code>pipelineCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
-        }
-      ]
-    },
-    "vkCreateRayTracingPipelinesKHR": {
-      "core": [
-        {
-          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-flags-03415",
-          "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and the <code>basePipelineIndex</code> member of that same element is not <code>-1</code>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be less than the index into <code>pCreateInfos</code> that corresponds to that element"
-        },
-        {
-          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-flags-03416",
-          "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, the base pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT</code> flag set"
-        },
-        {
-          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-03677",
-          "text": " If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> object"
-        },
-        {
-          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-03678",
-          "text": " Any previous deferred operation that was associated with <code>deferredOperation</code> <strong class=\"purple\">must</strong> be complete"
-        },
-        {
-          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-rayTracingPipeline-03586",
-          "text": " The <a href=\"#features-rayTracingPipeline\"><code>rayTracingPipeline</code></a> feature <strong class=\"purple\">must</strong> be enabled"
-        }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_device_group)": [
-        {
-          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-flags-03816",
-          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not contain the <code>VK_PIPELINE_CREATE_DISPATCH_BASE</code> flag"
-        }
-      ],
-      "(VK_EXT_pipeline_creation_cache_control)": [
-        {
-          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-02903",
-          "text": " If <code>pipelineCache</code> was created with <code>VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT</code>, host access to <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#fundamentals-threadingbehavior\">externally synchronized</a>"
-        }
-      ],
-      "(VK_EXT_pipeline_creation_cache_control+VK_KHR_deferred_host_operations)": [
-        {
-          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-03587",
-          "text": " If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <code>flags</code> member of elements of <code>pCreateInfos</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT</code>"
-        }
-      ],
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)": [
-        {
-          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
-        },
-        {
-          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-parameter",
-          "text": " If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>deferredOperation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle"
-        },
-        {
-          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-parameter",
-          "text": " If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle"
-        },
-        {
-          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pCreateInfos-parameter",
-          "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <a href=\"#VkRayTracingPipelineCreateInfoKHR\">VkRayTracingPipelineCreateInfoKHR</a> structures"
-        },
-        {
-          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-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"
-        },
-        {
-          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pPipelines-parameter",
-          "text": " <code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <a href=\"#VkPipeline\">VkPipeline</a> handles"
-        },
-        {
-          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-createInfoCount-arraylength",
-          "text": " <code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
-        },
-        {
-          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-parent",
-          "text": " If <code>deferredOperation</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
-        },
-        {
-          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-parent",
-          "text": " If <code>pipelineCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
-        }
-      ]
-    },
-    "VkRayTracingPipelineCreateInfoNV": {
-      "core": [
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03421",
-          "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is <code>-1</code>, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be a valid handle to a ray tracing <code>VkPipeline</code>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03422",
-          "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be a valid index into the calling command&#8217;s <code>pCreateInfos</code> parameter"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03423",
-          "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is not <code>-1</code>, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03424",
-          "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be <code>-1</code>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pStages-03426",
-          "text": " The shader code for the entry points identified by <code>pStages</code>, and the rest of the state identified by this structure <strong class=\"purple\">must</strong> adhere to the pipeline linking rules described in the <a href=\"#interfaces\">Shader Interfaces</a> chapter"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-03427",
-          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-pipelinelayout-consistency\">consistent</a> with all shaders specified in <code>pStages</code>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-03428",
-          "text": " The number of resources in <code>layout</code> accessible to each shader stage that is used by the pipeline <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxPerStageResources</code>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-stage-03425",
-          "text": " The <code>stage</code> member of at least one element of <code>pStages</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_RAYGEN_BIT_KHR</code>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-maxRecursionDepth-03457",
-          "text": " <code>maxRecursionDepth</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxRecursionDepth</code>"
-        }
-      ],
-      "(VK_NV_device_generated_commands)": [
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02904",
-          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>"
-        }
-      ],
-      "(VK_EXT_pipeline_creation_cache_control)": [
-        {
-          "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_EXT</code> or <code>VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT</code>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02957",
-          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include both <code>VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV</code> and <code>VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT</code> at the same time"
-        }
-      ],
-      "(VK_KHR_pipeline_library)": [
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03456",
-          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>"
-        }
-      ],
-      "(VK_KHR_ray_tracing_pipeline)": [
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03458",
-          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03459",
-          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03460",
-          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR</code>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03461",
-          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03462",
-          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR</code>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03463",
-          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR</code>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03588",
-          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR</code>"
-        }
-      ],
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)": [
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV</code>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-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=\"#VkPipelineCreationFeedbackCreateInfoEXT\">VkPipelineCreationFeedbackCreateInfoEXT</a>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-sType-unique",
-          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-parameter",
-          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pStages-parameter",
-          "text": " <code>pStages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stageCount</code> valid <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a> structures"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pGroups-parameter",
-          "text": " <code>pGroups</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>groupCount</code> valid <a href=\"#VkRayTracingShaderGroupCreateInfoNV\">VkRayTracingShaderGroupCreateInfoNV</a> structures"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-parameter",
-          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-stageCount-arraylength",
-          "text": " <code>stageCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-groupCount-arraylength",
-          "text": " <code>groupCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-commonparent",
-          "text": " Both of <code>basePipelineHandle</code>, and <code>layout</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>"
-        }
-      ]
-    },
-    "VkRayTracingPipelineCreateInfoKHR": {
-      "core": [
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03421",
-          "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is <code>-1</code>, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be a valid handle to a ray tracing <code>VkPipeline</code>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03422",
-          "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be a valid index into the calling command&#8217;s <code>pCreateInfos</code> parameter"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03423",
-          "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is not <code>-1</code>, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03424",
-          "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be <code>-1</code>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pStages-03426",
-          "text": " The shader code for the entry points identified by <code>pStages</code>, and the rest of the state identified by this structure <strong class=\"purple\">must</strong> adhere to the pipeline linking rules described in the <a href=\"#interfaces\">Shader Interfaces</a> chapter"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-layout-03427",
-          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-pipelinelayout-consistency\">consistent</a> with all shaders specified in <code>pStages</code>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-layout-03428",
-          "text": " The number of resources in <code>layout</code> accessible to each shader stage that is used by the pipeline <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxPerStageResources</code>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-stage-03425",
-          "text": " If <code>flags</code> does not include <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>, the <code>stage</code> member of at least one element of <code>pStages</code>, including those implicitly added by <code>pLibraryInfo</code>, <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_RAYGEN_BIT_KHR</code>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-maxPipelineRayRecursionDepth-03589",
-          "text": " <code>maxPipelineRayRecursionDepth</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPipelinePropertiesKHR\">VkPhysicalDeviceRayTracingPipelinePropertiesKHR</a>::<code>maxRayRecursionDepth</code>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03595",
-          "text": " If the <a href=\"#VK_KHR_pipeline_library\">VK_KHR_pipeline_library</a> extension is not enabled, <code>pLibraryInfo</code> and <code>pLibraryInterface</code> <strong class=\"purple\">must</strong> be <code>NULL</code>."
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03470",
-          "text": " If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>, for any element of <code>pGroups</code> with a <code>type</code> of <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR</code> or <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR</code>, the <code>anyHitShader</code> of that element <strong class=\"purple\">must</strong> not be <code>VK_SHADER_UNUSED_KHR</code>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03471",
-          "text": " If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>, for any element of <code>pGroups</code> with a <code>type</code> of <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR</code> or <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR</code>, the <code>closestHitShader</code> of that element <strong class=\"purple\">must</strong> not be <code>VK_SHADER_UNUSED_KHR</code>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-rayTraversalPrimitiveCulling-03596",
-          "text": " If the <a href=\"#features-rayTraversalPrimitiveCulling\"><code>rayTraversalPrimitiveCulling</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR</code>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-rayTraversalPrimitiveCulling-03597",
-          "text": " If the <a href=\"#features-rayTraversalPrimitiveCulling\"><code>rayTraversalPrimitiveCulling</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR</code>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03598",
-          "text": " If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR</code>, <a href=\"#features-rayTracingPipelineShaderGroupHandleCaptureReplay\"><code>rayTracingPipelineShaderGroupHandleCaptureReplay</code></a> <strong class=\"purple\">must</strong> be enabled"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-rayTracingPipelineShaderGroupHandleCaptureReplay-03599",
-          "text": " If <a href=\"#VkPhysicalDeviceRayTracingPipelineFeaturesKHR\">VkPhysicalDeviceRayTracingPipelineFeaturesKHR</a>::<code>rayTracingPipelineShaderGroupHandleCaptureReplay</code> is <code>VK_TRUE</code> and the <code>pShaderGroupCaptureReplayHandle</code> member of any element of <code>pGroups</code> is not <code>NULL</code>, <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR</code>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03600",
-          "text": " If <code>pLibraryInfo</code> is not <code>NULL</code> and its <code>libraryCount</code> is <code>0</code>, <code>stageCount</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03601",
-          "text": " If <code>pLibraryInfo</code> is not <code>NULL</code> and its <code>libraryCount</code> is <code>0</code>, <code>groupCount</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pDynamicStates-03602",
-          "text": " Any element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> <strong class=\"purple\">must</strong> be <code>VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR</code>"
-        }
-      ],
-      "(VK_NV_device_generated_commands)": [
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-02904",
-          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>"
-        }
-      ],
-      "(VK_EXT_pipeline_creation_cache_control)": [
-        {
-          "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_EXT</code> or <code>VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT</code>"
-        }
-      ],
-      "(VK_KHR_pipeline_library)": [
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03465",
-          "text": " If <code>flags</code> includes <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>, <code>pLibraryInterface</code> <strong class=\"purple\">must</strong> not be <code>NULL</code>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03590",
-          "text": " If <code>pLibraryInfo</code> is not <code>NULL</code> and its <code>libraryCount</code> member is greater than <code>0</code>, its <code>pLibraryInterface</code> member <strong class=\"purple\">must</strong> not be <code>NULL</code>"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraries-03591",
-          "text": " Each element of the <code>pLibraries</code> member of <code>pLibraryInfo</code> <strong class=\"purple\">must</strong> have been created with the value of <code>maxPipelineRayRecursionDepth</code> equal to that in this pipeline"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03592",
-          "text": " If <code>pLibraryInfo</code> is not <code>NULL</code>, each element of its <code>pLibraries</code> member <strong class=\"purple\">must</strong> have been created with a <code>layout</code> that is compatible with the <code>layout</code> in this pipeline"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03593",
-          "text": " If <code>pLibraryInfo</code> is not <code>NULL</code>, each element of its <code>pLibraries</code> member <strong class=\"purple\">must</strong> have been created with values of the <code>maxPipelineRayPayloadSize</code> and <code>maxPipelineRayHitAttributeSize</code> members of <code>pLibraryInterface</code> equal to those in this pipeline"
-        },
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03594",
-          "text": " If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR</code>, each element of the <code>pLibraries</code> member of <code>libraries</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR</code> bit set"
-        }
-      ],
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)": [
-        {
-          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR</code>"
+          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR</code>"
         },
         {
           "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pNext-pNext",
         }
       ]
     },
-    "VkPipelineCreationFeedbackCreateInfoEXT": {
-      "(VK_EXT_pipeline_creation_feedback)": [
+    "vkDestroyPipeline": {
+      "core": [
         {
-          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02668",
-          "text": " When chained to <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>, <a href=\"#VkPipelineCreationFeedbackEXT\">VkPipelineCreationFeedbackEXT</a>::<code>pipelineStageCreationFeedbackCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>stageCount</code>"
+          "vuid": "VUID-vkDestroyPipeline-pipeline-00765",
+          "text": " All submitted commands that refer to <code>pipeline</code> <strong class=\"purple\">must</strong> have completed execution"
         },
         {
-          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02669",
-          "text": " When chained to <a href=\"#VkComputePipelineCreateInfo\">VkComputePipelineCreateInfo</a>, <a href=\"#VkPipelineCreationFeedbackEXT\">VkPipelineCreationFeedbackEXT</a>::<code>pipelineStageCreationFeedbackCount</code> <strong class=\"purple\">must</strong> equal 1"
+          "vuid": "VUID-vkDestroyPipeline-pipeline-00766",
+          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>pipeline</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
         },
         {
-          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT</code>"
+          "vuid": "VUID-vkDestroyPipeline-pipeline-00767",
+          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>pipeline</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pPipelineCreationFeedback-parameter",
-          "text": " <code>pPipelineCreationFeedback</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPipelineCreationFeedbackEXT\">VkPipelineCreationFeedbackEXT</a> structure"
+          "vuid": "VUID-vkDestroyPipeline-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pPipelineStageCreationFeedbacks-parameter",
-          "text": " <code>pPipelineStageCreationFeedbacks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pipelineStageCreationFeedbackCount</code> <a href=\"#VkPipelineCreationFeedbackEXT\">VkPipelineCreationFeedbackEXT</a> structures"
+          "vuid": "VUID-vkDestroyPipeline-pipeline-parameter",
+          "text": " If <code>pipeline</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
         },
         {
-          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-arraylength",
-          "text": " <code>pipelineStageCreationFeedbackCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
-        }
-      ],
-      "(VK_EXT_pipeline_creation_feedback)+(VK_KHR_ray_tracing_pipeline)": [
+          "vuid": "VUID-vkDestroyPipeline-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"
+        },
         {
-          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02670",
-          "text": " When chained to <a href=\"#VkRayTracingPipelineCreateInfoKHR\">VkRayTracingPipelineCreateInfoKHR</a>, <a href=\"#VkPipelineCreationFeedbackEXT\">VkPipelineCreationFeedbackEXT</a>::<code>pipelineStageCreationFeedbackCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkRayTracingPipelineCreateInfoKHR\">VkRayTracingPipelineCreateInfoKHR</a>::<code>stageCount</code>"
-        }
-      ],
-      "(VK_EXT_pipeline_creation_feedback)+(VK_NV_ray_tracing)": [
-        {
-          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02969",
-          "text": " When chained to <a href=\"#VkRayTracingPipelineCreateInfoNV\">VkRayTracingPipelineCreateInfoNV</a>, <a href=\"#VkPipelineCreationFeedbackEXT\">VkPipelineCreationFeedbackEXT</a>::<code>pipelineStageCreationFeedbackCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkRayTracingPipelineCreateInfoNV\">VkRayTracingPipelineCreateInfoNV</a>::<code>stageCount</code>"
+          "vuid": "VUID-vkDestroyPipeline-pipeline-parent",
+          "text": " If <code>pipeline</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
         }
       ]
     },
-    "VkAllocationCallbacks": {
+    "vkCreatePipelineCache": {
       "core": [
         {
-          "vuid": "VUID-VkAllocationCallbacks-pfnAllocation-00632",
-          "text": " <code>pfnAllocation</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid user-defined <a href=\"#PFN_vkAllocationFunction\">PFN_vkAllocationFunction</a>"
+          "vuid": "VUID-vkCreatePipelineCache-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-VkAllocationCallbacks-pfnReallocation-00633",
-          "text": " <code>pfnReallocation</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid user-defined <a href=\"#PFN_vkReallocationFunction\">PFN_vkReallocationFunction</a>"
+          "vuid": "VUID-vkCreatePipelineCache-pCreateInfo-parameter",
+          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineCacheCreateInfo\">VkPipelineCacheCreateInfo</a> structure"
         },
         {
-          "vuid": "VUID-VkAllocationCallbacks-pfnFree-00634",
-          "text": " <code>pfnFree</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid user-defined <a href=\"#PFN_vkFreeFunction\">PFN_vkFreeFunction</a>"
+          "vuid": "VUID-vkCreatePipelineCache-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"
         },
         {
-          "vuid": "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635",
-          "text": " If either of <code>pfnInternalAllocation</code> or <code>pfnInternalFree</code> is not <code>NULL</code>, both <strong class=\"purple\">must</strong> be valid callbacks"
+          "vuid": "VUID-vkCreatePipelineCache-pPipelineCache-parameter",
+          "text": " <code>pPipelineCache</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle"
         }
       ]
     },
-    "vkGetPhysicalDeviceMemoryProperties": {
+    "VkPipelineCacheCreateInfo": {
       "core": [
         {
-          "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties-physicalDevice-parameter",
-          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
+          "vuid": "VUID-VkPipelineCacheCreateInfo-initialDataSize-00768",
+          "text": " If <code>initialDataSize</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be equal to the size of <code>pInitialData</code>, as returned by <code>vkGetPipelineCacheData</code> when <code>pInitialData</code> was originally retrieved"
         },
         {
-          "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties-pMemoryProperties-parameter",
-          "text": " <code>pMemoryProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPhysicalDeviceMemoryProperties\">VkPhysicalDeviceMemoryProperties</a> structure"
-        }
-      ]
-    },
-    "vkGetPhysicalDeviceMemoryProperties2": {
-      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
-        {
-          "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties2-physicalDevice-parameter",
-          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
+          "vuid": "VUID-VkPipelineCacheCreateInfo-initialDataSize-00769",
+          "text": " If <code>initialDataSize</code> is not <code>0</code>, <code>pInitialData</code> <strong class=\"purple\">must</strong> have been retrieved from a previous call to <code>vkGetPipelineCacheData</code>"
         },
         {
-          "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties2-pMemoryProperties-parameter",
-          "text": " <code>pMemoryProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPhysicalDeviceMemoryProperties2\">VkPhysicalDeviceMemoryProperties2</a> structure"
-        }
-      ]
-    },
-    "VkPhysicalDeviceMemoryProperties2": {
-      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
+          "vuid": "VUID-VkPipelineCacheCreateInfo-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO</code>"
+        },
         {
-          "vuid": "VUID-VkPhysicalDeviceMemoryProperties2-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2</code>"
+          "vuid": "VUID-VkPipelineCacheCreateInfo-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-VkPhysicalDeviceMemoryProperties2-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=\"#VkPhysicalDeviceMemoryBudgetPropertiesEXT\">VkPhysicalDeviceMemoryBudgetPropertiesEXT</a>"
+          "vuid": "VUID-VkPipelineCacheCreateInfo-flags-parameter",
+          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCacheCreateFlagBits\">VkPipelineCacheCreateFlagBits</a> values"
         },
         {
-          "vuid": "VUID-VkPhysicalDeviceMemoryProperties2-sType-unique",
-          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
+          "vuid": "VUID-VkPipelineCacheCreateInfo-pInitialData-parameter",
+          "text": " If <code>initialDataSize</code> is not <code>0</code>, <code>pInitialData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>initialDataSize</code> bytes"
         }
-      ]
-    },
-    "VkPhysicalDeviceMemoryBudgetPropertiesEXT": {
-      "(VK_EXT_memory_budget)": [
+      ],
+      "(VK_EXT_pipeline_creation_cache_control)": [
         {
-          "vuid": "VUID-VkPhysicalDeviceMemoryBudgetPropertiesEXT-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT</code>"
+          "vuid": "VUID-VkPipelineCacheCreateInfo-pipelineCreationCacheControl-02892",
+          "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_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT</code>"
         }
       ]
     },
-    "vkAllocateMemory": {
+    "vkMergePipelineCaches": {
       "core": [
         {
-          "vuid": "VUID-vkAllocateMemory-pAllocateInfo-01713",
-          "text": " <code>pAllocateInfo-&gt;allocationSize</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMemoryProperties\">VkPhysicalDeviceMemoryProperties</a>::<code>memoryHeaps</code>[memindex].size where <code>memindex</code> = <a href=\"#VkPhysicalDeviceMemoryProperties\">VkPhysicalDeviceMemoryProperties</a>::<code>memoryTypes</code>[pAllocateInfo-&gt;memoryTypeIndex].heapIndex as returned by <a href=\"#vkGetPhysicalDeviceMemoryProperties\">vkGetPhysicalDeviceMemoryProperties</a> for the <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> that <code>device</code> was created from"
+          "vuid": "VUID-vkMergePipelineCaches-dstCache-00770",
+          "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> not appear in the list of source caches"
         },
         {
-          "vuid": "VUID-vkAllocateMemory-pAllocateInfo-01714",
-          "text": " <code>pAllocateInfo-&gt;memoryTypeIndex</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceMemoryProperties\">VkPhysicalDeviceMemoryProperties</a>::<code>memoryTypeCount</code> as returned by <a href=\"#vkGetPhysicalDeviceMemoryProperties\">vkGetPhysicalDeviceMemoryProperties</a> for the <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> that <code>device</code> was created from"
+          "vuid": "VUID-vkMergePipelineCaches-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-vkAllocateMemory-maxMemoryAllocationCount-04101",
-          "text": " There <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxMemoryAllocationCount</code> device memory allocations currently allocated on the device."
+          "vuid": "VUID-vkMergePipelineCaches-dstCache-parameter",
+          "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle"
         },
         {
-          "vuid": "VUID-vkAllocateMemory-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-vkMergePipelineCaches-pSrcCaches-parameter",
+          "text": " <code>pSrcCaches</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>srcCacheCount</code> valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handles"
         },
         {
-          "vuid": "VUID-vkAllocateMemory-pAllocateInfo-parameter",
-          "text": " <code>pAllocateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> structure"
+          "vuid": "VUID-vkMergePipelineCaches-srcCacheCount-arraylength",
+          "text": " <code>srcCacheCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
         },
         {
-          "vuid": "VUID-vkAllocateMemory-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"
+          "vuid": "VUID-vkMergePipelineCaches-dstCache-parent",
+          "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
         },
         {
-          "vuid": "VUID-vkAllocateMemory-pMemory-parameter",
-          "text": " <code>pMemory</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
-        }
-      ],
-      "(VK_AMD_device_coherent_memory)": [
-        {
-          "vuid": "VUID-vkAllocateMemory-deviceCoherentMemory-02790",
-          "text": " If the <a href=\"#features-deviceCoherentMemory\"><code>deviceCoherentMemory</code></a> feature is not enabled, <code>pAllocateInfo-&gt;memoryTypeIndex</code> <strong class=\"purple\">must</strong> not identify a memory type supporting <code>VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD</code>"
+          "vuid": "VUID-vkMergePipelineCaches-pSrcCaches-parent",
+          "text": " Each element of <code>pSrcCaches</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
         }
       ]
     },
-    "VkMemoryAllocateInfo": {
-      "!(VK_ANDROID_external_memory_android_hardware_buffer)": [
-        {
-          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00638",
-          "text": " <code>allocationSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
-        }
-      ],
-      "(VK_KHR_external_memory)+(VK_KHR_dedicated_allocation,VK_NV_dedicated_allocation)": [
-        {
-          "vuid": "VUID-VkMemoryAllocateInfo-pNext-00639",
-          "text": "     If the <code>pNext</code> chain includes a <code>VkExportMemoryAllocateInfo</code>     structure, and any of the handle types specified in     <code>VkExportMemoryAllocateInfo</code>::<code>handleTypes</code> require a dedicated     allocation, as reported by     <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a> in     <code>VkExternalImageFormatProperties</code>::<code>externalMemoryProperties.externalMemoryFeatures</code>     or     <code>VkExternalBufferProperties</code>::<code>externalMemoryProperties.externalMemoryFeatures</code>,     the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a ifdef::VK_KHR_dedicated_allocation[<a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>]"
-        }
-      ],
-      "(VK_KHR_external_memory)+(VK_NV_external_memory)": [
-        {
-          "vuid": "VUID-VkMemoryAllocateInfo-pNext-00640",
-          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a> structure, it <strong class=\"purple\">must</strong> not include a <a href=\"#VkExportMemoryAllocateInfoNV\">VkExportMemoryAllocateInfoNV</a> or <a href=\"#VkExportMemoryWin32HandleInfoNV\">VkExportMemoryWin32HandleInfoNV</a> structure"
-        }
-      ],
-      "(VK_KHR_external_memory_win32+VK_NV_external_memory_win32)": [
-        {
-          "vuid": "VUID-VkMemoryAllocateInfo-pNext-00641",
-          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkImportMemoryWin32HandleInfoKHR\">VkImportMemoryWin32HandleInfoKHR</a> structure, it <strong class=\"purple\">must</strong> not include a <a href=\"#VkImportMemoryWin32HandleInfoNV\">VkImportMemoryWin32HandleInfoNV</a> structure"
-        }
-      ],
-      "(VK_KHR_external_memory_fd)": [
+    "vkGetPipelineCacheData": {
+      "core": [
         {
-          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01742",
-          "text": " If the parameters define an import operation, the external handle specified was created by the Vulkan API, and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR</code>, then the values of <code>allocationSize</code> and <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> match those specified when the payload being imported was created."
+          "vuid": "VUID-vkGetPipelineCacheData-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-00648",
-          "text": " If the parameters define an import operation and the external handle is a POSIX file descriptor created outside of the Vulkan API, the value of <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be one of those returned by <a href=\"#vkGetMemoryFdPropertiesKHR\">vkGetMemoryFdPropertiesKHR</a>"
-        }
-      ],
-      "(VK_KHR_external_memory+VK_KHR_device_group)": [
-        {
-          "vuid": "VUID-VkMemoryAllocateInfo-None-00643",
-          "text": " If the parameters define an import operation and the external handle specified was created by the Vulkan API, the device mask specified by <a href=\"#VkMemoryAllocateFlagsInfo\">VkMemoryAllocateFlagsInfo</a> <strong class=\"purple\">must</strong> match that specified when the payload being imported was allocated."
+          "vuid": "VUID-vkGetPipelineCacheData-pipelineCache-parameter",
+          "text": " <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle"
         },
         {
-          "vuid": "VUID-VkMemoryAllocateInfo-None-00644",
-          "text": " If the parameters define an import operation and the external handle specified was created by the Vulkan API, the list of physical devices that comprise the logical device passed to <a href=\"#vkAllocateMemory\">vkAllocateMemory</a> <strong class=\"purple\">must</strong> match the list of physical devices that comprise the logical device on which the payload was originally allocated."
-        }
-      ],
-      "(VK_KHR_external_memory_win32)": [
-        {
-          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-00645",
-          "text": " If the parameters define an import operation and the external handle is an NT handle or a global share handle created outside of the Vulkan API, the value of <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be one of those returned by <a href=\"#vkGetMemoryWin32HandlePropertiesKHR\">vkGetMemoryWin32HandlePropertiesKHR</a>"
+          "vuid": "VUID-vkGetPipelineCacheData-pDataSize-parameter",
+          "text": " <code>pDataSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value"
         },
         {
-          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01743",
-          "text": " If the parameters define an import operation, the external handle was created by the Vulkan API, and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR</code>, then the values of <code>allocationSize</code> and <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> match those specified when the payload being imported was created."
+          "vuid": "VUID-vkGetPipelineCacheData-pData-parameter",
+          "text": " If the value referenced by <code>pDataSize</code> is not <code>0</code>, and <code>pData</code> is not <code>NULL</code>, <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pDataSize</code> bytes"
         },
         {
-          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00647",
-          "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, <code>allocationSize</code> <strong class=\"purple\">must</strong> match the size specified when creating the Direct3D 12 heap from which the payload was extracted."
-        }
-      ],
-      "(VK_VERSION_1_1)": [
-        {
-          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-01872",
-          "text": " If the protected memory feature is not enabled, the <code>VkMemoryAllocateInfo</code>::<code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> not indicate a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>"
+          "vuid": "VUID-vkGetPipelineCacheData-pipelineCache-parent",
+          "text": " <code>pipelineCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
         }
-      ],
-      "(VK_EXT_external_memory_host)": [
+      ]
+    },
+    "vkDestroyPipelineCache": {
+      "core": [
         {
-          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-01744",
-          "text": " If the parameters define an import operation and the external handle is a host pointer, the value of <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be one of those returned by <a href=\"#vkGetMemoryHostPointerPropertiesEXT\">vkGetMemoryHostPointerPropertiesEXT</a>"
+          "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-00771",
+          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>pipelineCache</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
         },
         {
-          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01745",
-          "text": " If the parameters define an import operation and the external handle is a host pointer, <code>allocationSize</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>VkPhysicalDeviceExternalMemoryHostPropertiesEXT</code>::<code>minImportedHostPointerAlignment</code>"
-        }
-      ],
-      "(VK_EXT_external_memory_host)+(VK_NV_dedicated_allocation)": [
-        {
-          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02805",
-          "text": " If the parameters define an import operation and the external handle is a host pointer, the <code>pNext</code> chain <strong class=\"purple\">must</strong> not include a <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a> structure with either its <code>image</code> or <code>buffer</code> field set to a value other than <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
-        }
-      ],
-      "(VK_EXT_external_memory_host)+(VK_KHR_dedicated_allocation)": [
-        {
-          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02806",
-          "text": " If the parameters define an import operation and the external handle is a host pointer, the <code>pNext</code> chain <strong class=\"purple\">must</strong> not include a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure with either its <code>image</code> or <code>buffer</code> field set to a value other than <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
-        }
-      ],
-      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
-        {
-          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-02383",
-          "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, <code>allocationSize</code> <strong class=\"purple\">must</strong> be the size returned by <a href=\"#vkGetAndroidHardwareBufferPropertiesANDROID\">vkGetAndroidHardwareBufferPropertiesANDROID</a> for the Android hardware buffer"
+          "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-00772",
+          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>pipelineCache</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02384",
-          "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, and the <code>pNext</code> chain does not include a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure or <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the Android hardware buffer <strong class=\"purple\">must</strong> have a <code>AHardwareBuffer_Desc</code>::<code>format</code> of <code>AHARDWAREBUFFER_FORMAT_BLOB</code> and a <code>AHardwareBuffer_Desc</code>::<code>usage</code> that includes <code>AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER</code>"
+          "vuid": "VUID-vkDestroyPipelineCache-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-02385",
-          "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be one of those returned by <a href=\"#vkGetAndroidHardwareBufferPropertiesANDROID\">vkGetAndroidHardwareBufferPropertiesANDROID</a> for the Android hardware buffer"
+          "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-parameter",
+          "text": " If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle"
         },
         {
-          "vuid": "VUID-VkMemoryAllocateInfo-pNext-01874",
-          "text": " If the parameters do not define an import operation, and the <code>pNext</code> chain includes a <code>VkExportMemoryAllocateInfo</code> structure with <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> included in its <code>handleTypes</code> member, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure with <code>image</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>allocationSize</code> <strong class=\"purple\">must</strong> be <code>0</code>, otherwise <code>allocationSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+          "vuid": "VUID-vkDestroyPipelineCache-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"
         },
         {
-          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02386",
-          "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the Android hardware buffer&#8217;s <code>AHardwareBuffer</code>::<code>usage</code> <strong class=\"purple\">must</strong> include at least one of <code>AHARDWAREBUFFER_USAGE_GPU_FRAMEBUFFER</code> or <code>AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE</code>"
-        },
+          "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-parent",
+          "text": " If <code>pipelineCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+        }
+      ]
+    },
+    "VkSpecializationInfo": {
+      "core": [
         {
-          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02387",
-          "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the format of <code>image</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code> or the format returned by <a href=\"#vkGetAndroidHardwareBufferPropertiesANDROID\">vkGetAndroidHardwareBufferPropertiesANDROID</a> in <a href=\"#VkAndroidHardwareBufferFormatPropertiesANDROID\">VkAndroidHardwareBufferFormatPropertiesANDROID</a>::<code>format</code> for the Android hardware buffer"
+          "vuid": "VUID-VkSpecializationInfo-offset-00773",
+          "text": " The <code>offset</code> member of each element of <code>pMapEntries</code> <strong class=\"purple\">must</strong> be less than <code>dataSize</code>"
         },
         {
-          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02388",
-          "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the width, height, and array layer dimensions of <code>image</code> and the Android hardware buffer&#8217;s <code>AHardwareBuffer_Desc</code> <strong class=\"purple\">must</strong> be identical"
+          "vuid": "VUID-VkSpecializationInfo-pMapEntries-00774",
+          "text": " The <code>size</code> member of each element of <code>pMapEntries</code> <strong class=\"purple\">must</strong> be less than or equal to <code>dataSize</code> minus <code>offset</code>"
         },
         {
-          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02389",
-          "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the Android hardware buffer&#8217;s <code>AHardwareBuffer</code>::<code>usage</code> includes <code>AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE</code>, the <code>image</code> <strong class=\"purple\">must</strong> have a complete mipmap chain"
+          "vuid": "VUID-VkSpecializationInfo-pMapEntries-parameter",
+          "text": " If <code>mapEntryCount</code> is not <code>0</code>, <code>pMapEntries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>mapEntryCount</code> valid <a href=\"#VkSpecializationMapEntry\">VkSpecializationMapEntry</a> structures"
         },
         {
-          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02586",
-          "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the Android hardware buffer&#8217;s <code>AHardwareBuffer</code>::<code>usage</code> does not include <code>AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE</code>, the <code>image</code> <strong class=\"purple\">must</strong> have exactly one mipmap level"
-        },
+          "vuid": "VUID-VkSpecializationInfo-pData-parameter",
+          "text": " If <code>dataSize</code> is not <code>0</code>, <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
+        }
+      ]
+    },
+    "VkSpecializationMapEntry": {
+      "core": [
         {
-          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02390",
-          "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, each bit set in the usage of <code>image</code> <strong class=\"purple\">must</strong> be listed in <a href=\"#memory-external-android-hardware-buffer-usage\">AHardwareBuffer Usage Equivalence</a>, and if there is a corresponding <code>AHARDWAREBUFFER_USAGE</code> bit listed that bit <strong class=\"purple\">must</strong> be included in the Android hardware buffer&#8217;s <code>AHardwareBuffer_Desc</code>::<code>usage</code>"
+          "vuid": "VUID-VkSpecializationMapEntry-constantID-00776",
+          "text": " For a <code>constantID</code> specialization constant declared in a shader, <code>size</code> <strong class=\"purple\">must</strong> match the byte size of the <code>constantID</code>. If the specialization constant is of type <code>boolean</code>, <code>size</code> <strong class=\"purple\">must</strong> be the byte size of <code>VkBool32</code>"
         }
-      ],
-      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
+      ]
+    },
+    "VkPipelineLibraryCreateInfoKHR": {
+      "(VK_KHR_pipeline_library)": [
         {
-          "vuid": "VUID-VkMemoryAllocateInfo-opaqueCaptureAddress-03329",
-          "text": " If <a href=\"#VkMemoryOpaqueCaptureAddressAllocateInfo\">VkMemoryOpaqueCaptureAddressAllocateInfo</a>::<code>opaqueCaptureAddress</code> is not zero, <code>VkMemoryAllocateFlagsInfo</code>::<code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code>"
+          "vuid": "VUID-VkPipelineLibraryCreateInfoKHR-pLibraries-03381",
+          "text": " Each element of <code>pLibraries</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>"
         },
         {
-          "vuid": "VUID-VkMemoryAllocateInfo-flags-03330",
-          "text": " If <code>VkMemoryAllocateFlagsInfo</code>::<code>flags</code> includes <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code>, the <a href=\"#features-bufferDeviceAddressCaptureReplay\">bufferDeviceAddressCaptureReplay</a> feature <strong class=\"purple\">must</strong> be enabled"
+          "vuid": "VUID-VkPipelineLibraryCreateInfoKHR-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR</code>"
         },
         {
-          "vuid": "VUID-VkMemoryAllocateInfo-flags-03331",
-          "text": " If <code>VkMemoryAllocateFlagsInfo</code>::<code>flags</code> includes <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT</code>, the <a href=\"#features-bufferDeviceAddress\">bufferDeviceAddress</a> feature <strong class=\"purple\">must</strong> be enabled"
+          "vuid": "VUID-VkPipelineLibraryCreateInfoKHR-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-VkMemoryAllocateInfo-opaqueCaptureAddress-03333",
-          "text": " If the parameters define an import operation, <a href=\"#VkMemoryOpaqueCaptureAddressAllocateInfo\">VkMemoryOpaqueCaptureAddressAllocateInfo</a>::<code>opaqueCaptureAddress</code> <strong class=\"purple\">must</strong> be zero"
-        }
-      ],
-      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)+(VK_EXT_external_memory_host)": [
-        {
-          "vuid": "VUID-VkMemoryAllocateInfo-pNext-03332",
-          "text": " If the <code>pNext</code> chain includes a <code>VkImportMemoryHostPointerInfoEXT</code> structure, <a href=\"#VkMemoryOpaqueCaptureAddressAllocateInfo\">VkMemoryOpaqueCaptureAddressAllocateInfo</a>::<code>opaqueCaptureAddress</code> <strong class=\"purple\">must</strong> be zero"
+          "vuid": "VUID-VkPipelineLibraryCreateInfoKHR-pLibraries-parameter",
+          "text": " If <code>libraryCount</code> is not <code>0</code>, <code>pLibraries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>libraryCount</code> valid <a href=\"#VkPipeline\">VkPipeline</a> handles"
         }
-      ],
+      ]
+    },
+    "vkCmdBindPipeline": {
       "core": [
         {
-          "vuid": "VUID-VkMemoryAllocateInfo-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO</code>"
+          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00777",
+          "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
         },
         {
-          "vuid": "VUID-VkMemoryAllocateInfo-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=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>, <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>, <a href=\"#VkExportMemoryAllocateInfoNV\">VkExportMemoryAllocateInfoNV</a>, <a href=\"#VkExportMemoryWin32HandleInfoKHR\">VkExportMemoryWin32HandleInfoKHR</a>, <a href=\"#VkExportMemoryWin32HandleInfoNV\">VkExportMemoryWin32HandleInfoNV</a>, <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a>, <a href=\"#VkImportMemoryFdInfoKHR\">VkImportMemoryFdInfoKHR</a>, <a href=\"#VkImportMemoryHostPointerInfoEXT\">VkImportMemoryHostPointerInfoEXT</a>, <a href=\"#VkImportMemoryWin32HandleInfoKHR\">VkImportMemoryWin32HandleInfoKHR</a>, <a href=\"#VkImportMemoryWin32HandleInfoNV\">VkImportMemoryWin32HandleInfoNV</a>, <a href=\"#VkMemoryAllocateFlagsInfo\">VkMemoryAllocateFlagsInfo</a>, <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>, <a href=\"#VkMemoryOpaqueCaptureAddressAllocateInfo\">VkMemoryOpaqueCaptureAddressAllocateInfo</a>, or <a href=\"#VkMemoryPriorityAllocateInfoEXT\">VkMemoryPriorityAllocateInfoEXT</a>"
+          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00778",
+          "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
         },
         {
-          "vuid": "VUID-VkMemoryAllocateInfo-sType-unique",
-          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
-        }
-      ]
-    },
-    "VkMemoryDedicatedAllocateInfo": {
-      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
-        {
-          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01432",
-          "text": " At least one of <code>image</code> and <code>buffer</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
+          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00779",
+          "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, <code>pipeline</code> <strong class=\"purple\">must</strong> be a compute pipeline"
         },
         {
-          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01434",
-          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> have been created without <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code> set in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code>"
+          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00780",
+          "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, <code>pipeline</code> <strong class=\"purple\">must</strong> be a graphics pipeline"
         },
         {
-          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01436",
-          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> have been created without <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code> set in <a href=\"#VkBufferCreateInfo\">VkBufferCreateInfo</a>::<code>flags</code>"
+          "vuid": "VUID-vkCmdBindPipeline-pipeline-00781",
+          "text": " If the <a href=\"#features-variableMultisampleRate\">variable multisample rate</a> feature is not supported, <code>pipeline</code> is a graphics pipeline, the current subpass <a href=\"#renderpass-noattachments\">uses no attachments</a>, and this is not the first call to this function with a graphics pipeline after transitioning to the current subpass, then the sample count specified by this pipeline <strong class=\"purple\">must</strong> match that set in the previous pipeline"
         },
         {
-          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO</code>"
+          "vuid": "VUID-vkCmdBindPipeline-commandBuffer-parameter",
+          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
         },
         {
-          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-parameter",
-          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
+          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-parameter",
+          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
         },
         {
-          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-parameter",
-          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
+          "vuid": "VUID-vkCmdBindPipeline-pipeline-parameter",
+          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
         },
         {
-          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-commonparent",
-          "text": " Both of <code>buffer</code>, and <code>image</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>"
-        }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
+          "vuid": "VUID-vkCmdBindPipeline-commandBuffer-recording",
+          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
+        },
         {
-          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01433",
-          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the image"
+          "vuid": "VUID-vkCmdBindPipeline-commandBuffer-cmdpool",
+          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
         },
         {
-          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01435",
-          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the buffer"
+          "vuid": "VUID-vkCmdBindPipeline-commonparent",
+          "text": " Both of <code>commandBuffer</code>, and <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
         }
       ],
-      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
-        {
-          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-02964",
-          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and the memory is not an imported Android Hardware Buffer, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the image"
-        },
+      "(VK_EXT_sample_locations)": [
         {
-          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-02965",
-          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and the memory is not an imported Android Hardware Buffer, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the buffer"
+          "vuid": "VUID-vkCmdBindPipeline-variableSampleLocations-01525",
+          "text": " If <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>::<code>variableSampleLocations</code> is <code>VK_FALSE</code>, and <code>pipeline</code> is a graphics pipeline created with a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure having its <code>sampleLocationsEnable</code> member set to <code>VK_TRUE</code> but without <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> enabled then the current render pass instance <strong class=\"purple\">must</strong> have been begun by specifying a <a href=\"#VkRenderPassSampleLocationsBeginInfoEXT\">VkRenderPassSampleLocationsBeginInfoEXT</a> structure whose <code>pPostSubpassSampleLocations</code> member contains an element with a <code>subpassIndex</code> matching the current subpass index and the <code>sampleLocationsInfo</code> member of that element <strong class=\"purple\">must</strong> match the <code>sampleLocationsInfo</code> specified in <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> when the pipeline was created"
         }
       ],
-      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_external_memory_win32)": [
-        {
-          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01876",
-          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, and the external handle was created by the Vulkan API, then the memory being imported <strong class=\"purple\">must</strong> also be a dedicated image allocation and <code>image</code> must be identical to the image associated with the imported memory"
-        },
+      "(VK_EXT_transform_feedback)": [
         {
-          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01877",
-          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, and the external handle was created by the Vulkan API, then the memory being imported <strong class=\"purple\">must</strong> also be a dedicated buffer allocation and <code>buffer</code> <strong class=\"purple\">must</strong> be identical to the buffer associated with the imported memory"
+          "vuid": "VUID-vkCmdBindPipeline-None-02323",
+          "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
         }
       ],
-      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_external_memory_fd)": [
+      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)": [
         {
-          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01878",
-          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT</code>, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated image allocation and <code>image</code> <strong class=\"purple\">must</strong> be identical to the image associated with the imported memory"
+          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-02391",
+          "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
         },
         {
-          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01879",
-          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT</code>, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated buffer allocation and <code>buffer</code> <strong class=\"purple\">must</strong> be identical to the buffer associated with the imported memory"
+          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-02392",
+          "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR</code>, the <code>pipeline</code> <strong class=\"purple\">must</strong> be a ray tracing pipeline"
         }
       ],
-      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_sampler_ycbcr_conversion)": [
+      "(VK_KHR_pipeline_library)": [
         {
-          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01797",
-          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> not have been created with <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> set in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code>"
+          "vuid": "VUID-vkCmdBindPipeline-pipeline-03382",
+          "text": " The <code>pipeline</code> <strong class=\"purple\">must</strong> not have been created with <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code> set"
         }
       ]
     },
-    "VkDedicatedAllocationMemoryAllocateInfoNV": {
-      "(VK_NV_dedicated_allocation)": [
+    "vkCmdBindPipelineShaderGroupNV": {
+      "(VK_NV_device_generated_commands)": [
         {
-          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00649",
-          "text": " At least one of <code>image</code> and <code>buffer</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
+          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-groupIndex-02893",
+          "text": " <code>groupIndex</code> <strong class=\"purple\">must</strong> be <code>0</code> or less than the effective <a href=\"#VkGraphicsPipelineShaderGroupsCreateInfoNV\">VkGraphicsPipelineShaderGroupsCreateInfoNV</a>::<code>groupCount</code> including the referenced pipelines"
         },
         {
-          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00650",
-          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the image <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>"
+          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-pipelineBindPoint-02894",
+          "text": " The <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
         },
         {
-          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00651",
-          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the buffer <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>"
+          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-groupIndex-02895",
+          "text": " The same restrictions as <a href=\"#vkCmdBindPipeline\">vkCmdBindPipeline</a> apply as if the bound pipeline was created only with the Shader Group from the <code>groupIndex</code> information"
         },
         {
-          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00652",
-          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the image"
+          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-deviceGeneratedCommands-02896",
+          "text": " The <a href=\"#features-deviceGeneratedCommands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
         },
         {
-          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00653",
-          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the buffer"
+          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-commandBuffer-parameter",
+          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
         },
         {
-          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV</code>"
+          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-pipelineBindPoint-parameter",
+          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
         },
         {
-          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-parameter",
-          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
+          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-pipeline-parameter",
+          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
         },
         {
-          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-parameter",
-          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
+          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-commandBuffer-recording",
+          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
         },
         {
-          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-commonparent",
-          "text": " Both of <code>buffer</code>, and <code>image</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>"
-        }
-      ],
-      "(VK_NV_dedicated_allocation)+(VK_KHR_external_memory_win32,VK_KHR_external_memory_fd)": [
-        {
-          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00654",
-          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated image allocation and <code>image</code> <strong class=\"purple\">must</strong> be identical to the image associated with the imported memory"
+          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-commandBuffer-cmdpool",
+          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
         },
         {
-          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00655",
-          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated buffer allocation and <code>buffer</code> <strong class=\"purple\">must</strong> be identical to the buffer associated with the imported memory"
+          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-commonparent",
+          "text": " Both of <code>commandBuffer</code>, and <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
         }
       ]
     },
-    "VkMemoryPriorityAllocateInfoEXT": {
-      "(VK_EXT_memory_priority)": [
+    "vkGetPipelineExecutablePropertiesKHR": {
+      "(VK_KHR_pipeline_executable_properties)": [
         {
-          "vuid": "VUID-VkMemoryPriorityAllocateInfoEXT-priority-02602",
-          "text": " <code>priority</code> <strong class=\"purple\">must</strong> be between <code>0</code> and <code>1</code>, inclusive"
+          "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pipelineExecutableInfo-03270",
+          "text": " <a href=\"#features-pipelineExecutableInfo\"><code>pipelineExecutableInfo</code></a> <strong class=\"purple\">must</strong> be enabled"
         },
         {
-          "vuid": "VUID-VkMemoryPriorityAllocateInfoEXT-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT</code>"
-        }
-      ]
-    },
-    "VkExportMemoryAllocateInfo": {
-      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
+          "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pipeline-03271",
+          "text": " <code>pipeline</code> member of <code>pPipelineInfo</code> <strong class=\"purple\">must</strong> have been created with <code>device</code>"
+        },
         {
-          "vuid": "VUID-VkExportMemoryAllocateInfo-handleTypes-00656",
-          "text": " The bits in <code>handleTypes</code> <strong class=\"purple\">must</strong> be supported and compatible, as reported by <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a> or <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>"
+          "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-VkExportMemoryAllocateInfo-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO</code>"
+          "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pPipelineInfo-parameter",
+          "text": " <code>pPipelineInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineInfoKHR\">VkPipelineInfoKHR</a> structure"
         },
         {
-          "vuid": "VUID-VkExportMemoryAllocateInfo-handleTypes-parameter",
-          "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values"
+          "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pExecutableCount-parameter",
+          "text": " <code>pExecutableCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
+        },
+        {
+          "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pProperties-parameter",
+          "text": " If the value referenced by <code>pExecutableCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pExecutableCount</code> <a href=\"#VkPipelineExecutablePropertiesKHR\">VkPipelineExecutablePropertiesKHR</a> structures"
         }
       ]
     },
-    "VkExportMemoryWin32HandleInfoKHR": {
-      "(VK_KHR_external_memory_win32)": [
+    "VkPipelineInfoKHR": {
+      "(VK_KHR_pipeline_executable_properties)": [
         {
-          "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-handleTypes-00657",
-          "text": " If <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> does not include <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, a <code>VkExportMemoryWin32HandleInfoKHR</code> structure <strong class=\"purple\">must</strong> not be included in the <code>pNext</code> chain of <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a>"
+          "vuid": "VUID-VkPipelineInfoKHR-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR</code>"
         },
         {
-          "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR</code>"
+          "vuid": "VUID-VkPipelineInfoKHR-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-pAttributes-parameter",
-          "text": " If <code>pAttributes</code> is not <code>NULL</code>, <code>pAttributes</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>SECURITY_ATTRIBUTES</code> value"
+          "vuid": "VUID-VkPipelineInfoKHR-pipeline-parameter",
+          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
         }
       ]
     },
-    "VkImportMemoryWin32HandleInfoKHR": {
-      "(VK_KHR_external_memory_win32)": [
+    "VkPipelineExecutablePropertiesKHR": {
+      "(VK_KHR_pipeline_executable_properties)": [
         {
-          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00658",
-          "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be supported for import, as reported by <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a> or <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>"
+          "vuid": "VUID-VkPipelineExecutablePropertiesKHR-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR</code>"
         },
         {
-          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-00659",
-          "text": " The memory from which <code>handle</code> was exported, or the memory named by <code>name</code> <strong class=\"purple\">must</strong> have been created on the same underlying physical device as <code>device</code>"
+          "vuid": "VUID-VkPipelineExecutablePropertiesKHR-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+        }
+      ]
+    },
+    "vkGetPipelineExecutableStatisticsKHR": {
+      "(VK_KHR_pipeline_executable_properties)": [
+        {
+          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pipelineExecutableInfo-03272",
+          "text": " <a href=\"#features-pipelineExecutableInfo\"><code>pipelineExecutableInfo</code></a> <strong class=\"purple\">must</strong> be enabled"
         },
         {
-          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00660",
-          "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle"
+          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pipeline-03273",
+          "text": " <code>pipeline</code> member of <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> have been created with <code>device</code>"
         },
         {
-          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-01439",
-          "text": " If <code>handleType</code> is not <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pipeline-03274",
+          "text": " <code>pipeline</code> member of <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR</code> set in the <code>flags</code> field of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a> or <a href=\"#VkComputePipelineCreateInfo\">VkComputePipelineCreateInfo</a>"
         },
         {
-          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-01440",
-          "text": " If <code>handleType</code> is not <code>0</code> and <code>handle</code> is <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> name a valid memory resource of the type specified by <code>handleType</code>"
+          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00661",
-          "text": " If <code>handleType</code> is not <code>0</code> and <code>name</code> is <code>NULL</code>, <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle of the type specified by <code>handleType</code>"
+          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pExecutableInfo-parameter",
+          "text": " <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineExecutableInfoKHR\">VkPipelineExecutableInfoKHR</a> structure"
         },
         {
-          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-01441",
-          "text": " if <code>handle</code> is not <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pStatisticCount-parameter",
+          "text": " <code>pStatisticCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
         },
         {
-          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-01518",
-          "text": " If <code>handle</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-memory-handle-types-compatibility\">external memory handle types compatibility</a>"
+          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pStatistics-parameter",
+          "text": " If the value referenced by <code>pStatisticCount</code> is not <code>0</code>, and <code>pStatistics</code> is not <code>NULL</code>, <code>pStatistics</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pStatisticCount</code> <a href=\"#VkPipelineExecutableStatisticKHR\">VkPipelineExecutableStatisticKHR</a> structures"
+        }
+      ]
+    },
+    "VkPipelineExecutableInfoKHR": {
+      "(VK_KHR_pipeline_executable_properties)": [
+        {
+          "vuid": "VUID-VkPipelineExecutableInfoKHR-executableIndex-03275",
+          "text": " <code>executableIndex</code> <strong class=\"purple\">must</strong> be less than the number of executables associated with <code>pipeline</code> as returned in the <code>pExecutableCount</code> parameter of <code>vkGetPipelineExecutablePropertiesKHR</code>"
         },
         {
-          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-name-01519",
-          "text": " If <code>name</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-memory-handle-types-compatibility\">external memory handle types compatibility</a>"
+          "vuid": "VUID-VkPipelineExecutableInfoKHR-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR</code>"
         },
         {
-          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR</code>"
+          "vuid": "VUID-VkPipelineExecutableInfoKHR-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-parameter",
-          "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
+          "vuid": "VUID-VkPipelineExecutableInfoKHR-pipeline-parameter",
+          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
         }
       ]
     },
-    "vkGetMemoryWin32HandleKHR": {
-      "(VK_KHR_external_memory_win32)": [
-        {
-          "vuid": "VUID-vkGetMemoryWin32HandleKHR-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
-        },
+    "VkPipelineExecutableStatisticKHR": {
+      "(VK_KHR_pipeline_executable_properties)": [
         {
-          "vuid": "VUID-vkGetMemoryWin32HandleKHR-pGetWin32HandleInfo-parameter",
-          "text": " <code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMemoryGetWin32HandleInfoKHR\">VkMemoryGetWin32HandleInfoKHR</a> structure"
+          "vuid": "VUID-VkPipelineExecutableStatisticKHR-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR</code>"
         },
         {
-          "vuid": "VUID-vkGetMemoryWin32HandleKHR-pHandle-parameter",
-          "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value"
+          "vuid": "VUID-VkPipelineExecutableStatisticKHR-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         }
       ]
     },
-    "VkMemoryGetWin32HandleInfoKHR": {
-      "(VK_KHR_external_memory_win32)": [
+    "vkGetPipelineExecutableInternalRepresentationsKHR": {
+      "(VK_KHR_pipeline_executable_properties)": [
         {
-          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00662",
-          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> when <code>memory</code> was created"
+          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipelineExecutableInfo-03276",
+          "text": " <a href=\"#features-pipelineExecutableInfo\"><code>pipelineExecutableInfo</code></a> <strong class=\"purple\">must</strong> be enabled"
         },
         {
-          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00663",
-          "text": " If <code>handleType</code> is defined as an NT handle, <a href=\"#vkGetMemoryWin32HandleKHR\">vkGetMemoryWin32HandleKHR</a> <strong class=\"purple\">must</strong> be called no more than once for each valid unique combination of <code>memory</code> and <code>handleType</code>"
+          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipeline-03277",
+          "text": " <code>pipeline</code> member of <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> have been created with <code>device</code>"
         },
         {
-          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00664",
-          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle"
+          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipeline-03278",
+          "text": " <code>pipeline</code> member of <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR</code> set in the <code>flags</code> field of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a> or <a href=\"#VkComputePipelineCreateInfo\">VkComputePipelineCreateInfo</a>"
         },
         {
-          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR</code>"
+          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pExecutableInfo-parameter",
+          "text": " <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineExecutableInfoKHR\">VkPipelineExecutableInfoKHR</a> structure"
         },
         {
-          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-memory-parameter",
-          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
+          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pInternalRepresentationCount-parameter",
+          "text": " <code>pInternalRepresentationCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
         },
         {
-          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-parameter",
-          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
+          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pInternalRepresentations-parameter",
+          "text": " If the value referenced by <code>pInternalRepresentationCount</code> is not <code>0</code>, and <code>pInternalRepresentations</code> is not <code>NULL</code>, <code>pInternalRepresentations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pInternalRepresentationCount</code> <a href=\"#VkPipelineExecutableInternalRepresentationKHR\">VkPipelineExecutableInternalRepresentationKHR</a> structures"
         }
       ]
     },
-    "vkGetMemoryWin32HandlePropertiesKHR": {
-      "(VK_KHR_external_memory_win32)": [
+    "VkPipelineExecutableInternalRepresentationKHR": {
+      "(VK_KHR_pipeline_executable_properties)": [
         {
-          "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handle-00665",
-          "text": " <code>handle</code> <strong class=\"purple\">must</strong> be an external memory handle created outside of the Vulkan API"
+          "vuid": "VUID-VkPipelineExecutableInternalRepresentationKHR-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR</code>"
         },
         {
-          "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-00666",
-          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not be one of the handle types defined as opaque"
-        },
+          "vuid": "VUID-VkPipelineExecutableInternalRepresentationKHR-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+        }
+      ]
+    },
+    "vkGetShaderInfoAMD": {
+      "(VK_AMD_shader_info)": [
         {
-          "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-device-parameter",
+          "vuid": "VUID-vkGetShaderInfoAMD-device-parameter",
           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-parameter",
-          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
+          "vuid": "VUID-vkGetShaderInfoAMD-pipeline-parameter",
+          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
         },
         {
-          "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-pMemoryWin32HandleProperties-parameter",
-          "text": " <code>pMemoryWin32HandleProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryWin32HandlePropertiesKHR\">VkMemoryWin32HandlePropertiesKHR</a> structure"
-        }
-      ]
-    },
-    "VkMemoryWin32HandlePropertiesKHR": {
-      "(VK_KHR_external_memory_win32)": [
+          "vuid": "VUID-vkGetShaderInfoAMD-shaderStage-parameter",
+          "text": " <code>shaderStage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> value"
+        },
         {
-          "vuid": "VUID-VkMemoryWin32HandlePropertiesKHR-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR</code>"
+          "vuid": "VUID-vkGetShaderInfoAMD-infoType-parameter",
+          "text": " <code>infoType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderInfoTypeAMD\">VkShaderInfoTypeAMD</a> value"
         },
         {
-          "vuid": "VUID-VkMemoryWin32HandlePropertiesKHR-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-vkGetShaderInfoAMD-pInfoSize-parameter",
+          "text": " <code>pInfoSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value"
+        },
+        {
+          "vuid": "VUID-vkGetShaderInfoAMD-pInfo-parameter",
+          "text": " If the value referenced by <code>pInfoSize</code> is not <code>0</code>, and <code>pInfo</code> is not <code>NULL</code>, <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pInfoSize</code> bytes"
+        },
+        {
+          "vuid": "VUID-vkGetShaderInfoAMD-pipeline-parent",
+          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
         }
       ]
     },
-    "VkImportMemoryFdInfoKHR": {
-      "(VK_KHR_external_memory_fd)": [
+    "VkPipelineCompilerControlCreateInfoAMD": {
+      "(VK_AMD_pipeline_compiler_control)": [
         {
-          "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00667",
-          "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be supported for import, as reported by <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a> or <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>"
+          "vuid": "VUID-VkPipelineCompilerControlCreateInfoAMD-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD</code>"
         },
         {
-          "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-00668",
-          "text": " The memory from which <code>fd</code> was exported <strong class=\"purple\">must</strong> have been created on the same underlying physical device as <code>device</code>"
-        },
+          "vuid": "VUID-VkPipelineCompilerControlCreateInfoAMD-compilerControlFlags-zerobitmask",
+          "text": " <code>compilerControlFlags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+        }
+      ]
+    },
+    "VkPipelineCreationFeedbackCreateInfoEXT": {
+      "(VK_EXT_pipeline_creation_feedback)": [
         {
-          "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00669",
-          "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle"
+          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02668",
+          "text": " When chained to <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>, <a href=\"#VkPipelineCreationFeedbackEXT\">VkPipelineCreationFeedbackEXT</a>::<code>pipelineStageCreationFeedbackCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>stageCount</code>"
         },
         {
-          "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00670",
-          "text": " If <code>handleType</code> is not <code>0</code>, <code>fd</code> <strong class=\"purple\">must</strong> be a valid handle of the type specified by <code>handleType</code>"
+          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02669",
+          "text": " When chained to <a href=\"#VkComputePipelineCreateInfo\">VkComputePipelineCreateInfo</a>, <a href=\"#VkPipelineCreationFeedbackEXT\">VkPipelineCreationFeedbackEXT</a>::<code>pipelineStageCreationFeedbackCount</code> <strong class=\"purple\">must</strong> equal 1"
         },
         {
-          "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>"
+          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT</code>"
         },
         {
-          "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-01520",
-          "text": " <code>fd</code> <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-memory-handle-types-compatibility\">external memory handle types compatibility</a>"
+          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pPipelineCreationFeedback-parameter",
+          "text": " <code>pPipelineCreationFeedback</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPipelineCreationFeedbackEXT\">VkPipelineCreationFeedbackEXT</a> structure"
         },
         {
-          "vuid": "VUID-VkImportMemoryFdInfoKHR-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR</code>"
+          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pPipelineStageCreationFeedbacks-parameter",
+          "text": " <code>pPipelineStageCreationFeedbacks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pipelineStageCreationFeedbackCount</code> <a href=\"#VkPipelineCreationFeedbackEXT\">VkPipelineCreationFeedbackEXT</a> structures"
         },
         {
-          "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-parameter",
-          "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
+          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-arraylength",
+          "text": " <code>pipelineStageCreationFeedbackCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
         }
-      ]
-    },
-    "vkGetMemoryFdKHR": {
-      "(VK_KHR_external_memory_fd)": [
-        {
-          "vuid": "VUID-vkGetMemoryFdKHR-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
-        },
+      ],
+      "(VK_EXT_pipeline_creation_feedback)+(VK_KHR_ray_tracing_pipeline)": [
         {
-          "vuid": "VUID-vkGetMemoryFdKHR-pGetFdInfo-parameter",
-          "text": " <code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMemoryGetFdInfoKHR\">VkMemoryGetFdInfoKHR</a> structure"
-        },
+          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02670",
+          "text": " When chained to <a href=\"#VkRayTracingPipelineCreateInfoKHR\">VkRayTracingPipelineCreateInfoKHR</a>, <a href=\"#VkPipelineCreationFeedbackEXT\">VkPipelineCreationFeedbackEXT</a>::<code>pipelineStageCreationFeedbackCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkRayTracingPipelineCreateInfoKHR\">VkRayTracingPipelineCreateInfoKHR</a>::<code>stageCount</code>"
+        }
+      ],
+      "(VK_EXT_pipeline_creation_feedback)+(VK_NV_ray_tracing)": [
         {
-          "vuid": "VUID-vkGetMemoryFdKHR-pFd-parameter",
-          "text": " <code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>int</code> value"
+          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02969",
+          "text": " When chained to <a href=\"#VkRayTracingPipelineCreateInfoNV\">VkRayTracingPipelineCreateInfoNV</a>, <a href=\"#VkPipelineCreationFeedbackEXT\">VkPipelineCreationFeedbackEXT</a>::<code>pipelineStageCreationFeedbackCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkRayTracingPipelineCreateInfoNV\">VkRayTracingPipelineCreateInfoNV</a>::<code>stageCount</code>"
         }
       ]
     },
-    "VkMemoryGetFdInfoKHR": {
-      "(VK_KHR_external_memory_fd)": [
+    "VkAllocationCallbacks": {
+      "core": [
         {
-          "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-00671",
-          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> when <code>memory</code> was created"
+          "vuid": "VUID-VkAllocationCallbacks-pfnAllocation-00632",
+          "text": " <code>pfnAllocation</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid user-defined <a href=\"#PFN_vkAllocationFunction\">PFN_vkAllocationFunction</a>"
         },
         {
-          "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-00672",
-          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle"
+          "vuid": "VUID-VkAllocationCallbacks-pfnReallocation-00633",
+          "text": " <code>pfnReallocation</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid user-defined <a href=\"#PFN_vkReallocationFunction\">PFN_vkReallocationFunction</a>"
         },
         {
-          "vuid": "VUID-VkMemoryGetFdInfoKHR-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR</code>"
+          "vuid": "VUID-VkAllocationCallbacks-pfnFree-00634",
+          "text": " <code>pfnFree</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid user-defined <a href=\"#PFN_vkFreeFunction\">PFN_vkFreeFunction</a>"
         },
         {
-          "vuid": "VUID-VkMemoryGetFdInfoKHR-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
-        },
+          "vuid": "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635",
+          "text": " If either of <code>pfnInternalAllocation</code> or <code>pfnInternalFree</code> is not <code>NULL</code>, both <strong class=\"purple\">must</strong> be valid callbacks"
+        }
+      ]
+    },
+    "vkGetPhysicalDeviceMemoryProperties": {
+      "core": [
         {
-          "vuid": "VUID-VkMemoryGetFdInfoKHR-memory-parameter",
-          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
+          "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties-physicalDevice-parameter",
+          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
         },
         {
-          "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-parameter",
-          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
+          "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties-pMemoryProperties-parameter",
+          "text": " <code>pMemoryProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPhysicalDeviceMemoryProperties\">VkPhysicalDeviceMemoryProperties</a> structure"
         }
       ]
     },
-    "vkGetMemoryFdPropertiesKHR": {
-      "(VK_KHR_external_memory_fd)": [
+    "vkGetPhysicalDeviceMemoryProperties2": {
+      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
         {
-          "vuid": "VUID-vkGetMemoryFdPropertiesKHR-fd-00673",
-          "text": " <code>fd</code> <strong class=\"purple\">must</strong> be an external memory handle created outside of the Vulkan API"
+          "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties2-physicalDevice-parameter",
+          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
         },
         {
-          "vuid": "VUID-vkGetMemoryFdPropertiesKHR-handleType-00674",
-          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR</code>"
-        },
+          "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties2-pMemoryProperties-parameter",
+          "text": " <code>pMemoryProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPhysicalDeviceMemoryProperties2\">VkPhysicalDeviceMemoryProperties2</a> structure"
+        }
+      ]
+    },
+    "VkPhysicalDeviceMemoryProperties2": {
+      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
         {
-          "vuid": "VUID-vkGetMemoryFdPropertiesKHR-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-VkPhysicalDeviceMemoryProperties2-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2</code>"
         },
         {
-          "vuid": "VUID-vkGetMemoryFdPropertiesKHR-handleType-parameter",
-          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
+          "vuid": "VUID-VkPhysicalDeviceMemoryProperties2-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=\"#VkPhysicalDeviceMemoryBudgetPropertiesEXT\">VkPhysicalDeviceMemoryBudgetPropertiesEXT</a>"
         },
         {
-          "vuid": "VUID-vkGetMemoryFdPropertiesKHR-pMemoryFdProperties-parameter",
-          "text": " <code>pMemoryFdProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryFdPropertiesKHR\">VkMemoryFdPropertiesKHR</a> structure"
+          "vuid": "VUID-VkPhysicalDeviceMemoryProperties2-sType-unique",
+          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
         }
       ]
     },
-    "VkMemoryFdPropertiesKHR": {
-      "(VK_KHR_external_memory_fd)": [
-        {
-          "vuid": "VUID-VkMemoryFdPropertiesKHR-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR</code>"
-        },
+    "VkPhysicalDeviceMemoryBudgetPropertiesEXT": {
+      "(VK_EXT_memory_budget)": [
         {
-          "vuid": "VUID-VkMemoryFdPropertiesKHR-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-VkPhysicalDeviceMemoryBudgetPropertiesEXT-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT</code>"
         }
       ]
     },
-    "VkImportMemoryHostPointerInfoEXT": {
-      "(VK_EXT_external_memory_host)": [
+    "vkAllocateMemory": {
+      "core": [
         {
-          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01747",
-          "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be supported for import, as reported in <a href=\"#VkExternalMemoryProperties\">VkExternalMemoryProperties</a>"
+          "vuid": "VUID-vkAllocateMemory-pAllocateInfo-01713",
+          "text": " <code>pAllocateInfo-&gt;allocationSize</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMemoryProperties\">VkPhysicalDeviceMemoryProperties</a>::<code>memoryHeaps</code>[memindex].size where <code>memindex</code> = <a href=\"#VkPhysicalDeviceMemoryProperties\">VkPhysicalDeviceMemoryProperties</a>::<code>memoryTypes</code>[pAllocateInfo-&gt;memoryTypeIndex].heapIndex as returned by <a href=\"#vkGetPhysicalDeviceMemoryProperties\">vkGetPhysicalDeviceMemoryProperties</a> for the <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> that <code>device</code> was created from"
         },
         {
-          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01748",
-          "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT</code>"
+          "vuid": "VUID-vkAllocateMemory-pAllocateInfo-01714",
+          "text": " <code>pAllocateInfo-&gt;memoryTypeIndex</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceMemoryProperties\">VkPhysicalDeviceMemoryProperties</a>::<code>memoryTypeCount</code> as returned by <a href=\"#vkGetPhysicalDeviceMemoryProperties\">vkGetPhysicalDeviceMemoryProperties</a> for the <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> that <code>device</code> was created from"
         },
         {
-          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-pHostPointer-01749",
-          "text": " <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer aligned to an integer multiple of <code>VkPhysicalDeviceExternalMemoryHostPropertiesEXT</code>::<code>minImportedHostPointerAlignment</code>"
+          "vuid": "VUID-vkAllocateMemory-maxMemoryAllocationCount-04101",
+          "text": " There <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxMemoryAllocationCount</code> device memory allocations currently allocated on the device."
         },
         {
-          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01750",
-          "text": " If <code>handleType</code> is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT</code>, <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer to <code>allocationSize</code> number of bytes of host memory, where <code>allocationSize</code> is the member of the <code>VkMemoryAllocateInfo</code> structure this structure is chained to"
+          "vuid": "VUID-vkAllocateMemory-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01751",
-          "text": " If <code>handleType</code> is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT</code>, <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer to <code>allocationSize</code> number of bytes of host mapped foreign memory, where <code>allocationSize</code> is the member of the <code>VkMemoryAllocateInfo</code> structure this structure is chained to"
+          "vuid": "VUID-vkAllocateMemory-pAllocateInfo-parameter",
+          "text": " <code>pAllocateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> structure"
         },
         {
-          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT</code>"
+          "vuid": "VUID-vkAllocateMemory-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"
         },
         {
-          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-parameter",
-          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
+          "vuid": "VUID-vkAllocateMemory-pMemory-parameter",
+          "text": " <code>pMemory</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
+        }
+      ],
+      "(VK_AMD_device_coherent_memory)": [
+        {
+          "vuid": "VUID-vkAllocateMemory-deviceCoherentMemory-02790",
+          "text": " If the <a href=\"#features-deviceCoherentMemory\"><code>deviceCoherentMemory</code></a> feature is not enabled, <code>pAllocateInfo-&gt;memoryTypeIndex</code> <strong class=\"purple\">must</strong> not identify a memory type supporting <code>VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD</code>"
         }
       ]
     },
-    "vkGetMemoryHostPointerPropertiesEXT": {
-      "(VK_EXT_external_memory_host)": [
+    "VkMemoryAllocateInfo": {
+      "!(VK_ANDROID_external_memory_android_hardware_buffer)": [
         {
-          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01752",
-          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT</code>"
-        },
+          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00638",
+          "text": " <code>allocationSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+        }
+      ],
+      "(VK_KHR_external_memory)+(VK_KHR_dedicated_allocation,VK_NV_dedicated_allocation)": [
         {
-          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-pHostPointer-01753",
-          "text": " <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer aligned to an integer multiple of <code>VkPhysicalDeviceExternalMemoryHostPropertiesEXT</code>::<code>minImportedHostPointerAlignment</code>"
-        },
+          "vuid": "VUID-VkMemoryAllocateInfo-pNext-00639",
+          "text": "     If the <code>pNext</code> chain includes a <code>VkExportMemoryAllocateInfo</code>     structure, and any of the handle types specified in     <code>VkExportMemoryAllocateInfo</code>::<code>handleTypes</code> require a dedicated     allocation, as reported by     <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a> in     <code>VkExternalImageFormatProperties</code>::<code>externalMemoryProperties.externalMemoryFeatures</code>     or     <code>VkExternalBufferProperties</code>::<code>externalMemoryProperties.externalMemoryFeatures</code>,     the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a ifdef::VK_KHR_dedicated_allocation[<a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>]"
+        }
+      ],
+      "(VK_KHR_external_memory)+(VK_NV_external_memory)": [
         {
-          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01754",
-          "text": " If <code>handleType</code> is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT</code>, <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer to host memory"
+          "vuid": "VUID-VkMemoryAllocateInfo-pNext-00640",
+          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a> structure, it <strong class=\"purple\">must</strong> not include a <a href=\"#VkExportMemoryAllocateInfoNV\">VkExportMemoryAllocateInfoNV</a> or <a href=\"#VkExportMemoryWin32HandleInfoNV\">VkExportMemoryWin32HandleInfoNV</a> structure"
+        }
+      ],
+      "(VK_KHR_external_memory_win32+VK_NV_external_memory_win32)": [
+        {
+          "vuid": "VUID-VkMemoryAllocateInfo-pNext-00641",
+          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkImportMemoryWin32HandleInfoKHR\">VkImportMemoryWin32HandleInfoKHR</a> structure, it <strong class=\"purple\">must</strong> not include a <a href=\"#VkImportMemoryWin32HandleInfoNV\">VkImportMemoryWin32HandleInfoNV</a> structure"
+        }
+      ],
+      "(VK_KHR_external_memory_fd)": [
+        {
+          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01742",
+          "text": " If the parameters define an import operation, the external handle specified was created by the Vulkan API, and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR</code>, then the values of <code>allocationSize</code> and <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> match those specified when the payload being imported was created."
         },
         {
-          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01755",
-          "text": " If <code>handleType</code> is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT</code>, <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer to host mapped foreign memory"
+          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-00648",
+          "text": " If the parameters define an import operation and the external handle is a POSIX file descriptor created outside of the Vulkan API, the value of <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be one of those returned by <a href=\"#vkGetMemoryFdPropertiesKHR\">vkGetMemoryFdPropertiesKHR</a>"
+        }
+      ],
+      "(VK_KHR_external_memory+VK_KHR_device_group)": [
+        {
+          "vuid": "VUID-VkMemoryAllocateInfo-None-00643",
+          "text": " If the parameters define an import operation and the external handle specified was created by the Vulkan API, the device mask specified by <a href=\"#VkMemoryAllocateFlagsInfo\">VkMemoryAllocateFlagsInfo</a> <strong class=\"purple\">must</strong> match that specified when the payload being imported was allocated."
         },
         {
-          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-VkMemoryAllocateInfo-None-00644",
+          "text": " If the parameters define an import operation and the external handle specified was created by the Vulkan API, the list of physical devices that comprise the logical device passed to <a href=\"#vkAllocateMemory\">vkAllocateMemory</a> <strong class=\"purple\">must</strong> match the list of physical devices that comprise the logical device on which the payload was originally allocated."
+        }
+      ],
+      "(VK_KHR_external_memory_win32)": [
+        {
+          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-00645",
+          "text": " If the parameters define an import operation and the external handle is an NT handle or a global share handle created outside of the Vulkan API, the value of <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be one of those returned by <a href=\"#vkGetMemoryWin32HandlePropertiesKHR\">vkGetMemoryWin32HandlePropertiesKHR</a>"
         },
         {
-          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-parameter",
-          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
+          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01743",
+          "text": " If the parameters define an import operation, the external handle was created by the Vulkan API, and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR</code>, then the values of <code>allocationSize</code> and <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> match those specified when the payload being imported was created."
         },
         {
-          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-pMemoryHostPointerProperties-parameter",
-          "text": " <code>pMemoryHostPointerProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryHostPointerPropertiesEXT\">VkMemoryHostPointerPropertiesEXT</a> structure"
+          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00647",
+          "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, <code>allocationSize</code> <strong class=\"purple\">must</strong> match the size specified when creating the Direct3D 12 heap from which the payload was extracted."
         }
-      ]
-    },
-    "VkMemoryHostPointerPropertiesEXT": {
+      ],
+      "(VK_VERSION_1_1)": [
+        {
+          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-01872",
+          "text": " If the protected memory feature is not enabled, the <code>VkMemoryAllocateInfo</code>::<code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> not indicate a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>"
+        }
+      ],
       "(VK_EXT_external_memory_host)": [
         {
-          "vuid": "VUID-VkMemoryHostPointerPropertiesEXT-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT</code>"
+          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-01744",
+          "text": " If the parameters define an import operation and the external handle is a host pointer, the value of <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be one of those returned by <a href=\"#vkGetMemoryHostPointerPropertiesEXT\">vkGetMemoryHostPointerPropertiesEXT</a>"
         },
         {
-          "vuid": "VUID-VkMemoryHostPointerPropertiesEXT-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01745",
+          "text": " If the parameters define an import operation and the external handle is a host pointer, <code>allocationSize</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>VkPhysicalDeviceExternalMemoryHostPropertiesEXT</code>::<code>minImportedHostPointerAlignment</code>"
         }
-      ]
-    },
-    "VkImportAndroidHardwareBufferInfoANDROID": {
+      ],
+      "(VK_EXT_external_memory_host)+(VK_NV_dedicated_allocation)": [
+        {
+          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02805",
+          "text": " If the parameters define an import operation and the external handle is a host pointer, the <code>pNext</code> chain <strong class=\"purple\">must</strong> not include a <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a> structure with either its <code>image</code> or <code>buffer</code> field set to a value other than <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
+        }
+      ],
+      "(VK_EXT_external_memory_host)+(VK_KHR_dedicated_allocation)": [
+        {
+          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02806",
+          "text": " If the parameters define an import operation and the external handle is a host pointer, the <code>pNext</code> chain <strong class=\"purple\">must</strong> not include a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure with either its <code>image</code> or <code>buffer</code> field set to a value other than <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
+        }
+      ],
       "(VK_ANDROID_external_memory_android_hardware_buffer)": [
         {
-          "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-01880",
-          "text": " If <code>buffer</code> is not <code>NULL</code>, Android hardware buffers <strong class=\"purple\">must</strong> be supported for import, as reported by <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a> or <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>"
+          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-02383",
+          "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, <code>allocationSize</code> <strong class=\"purple\">must</strong> be the size returned by <a href=\"#vkGetAndroidHardwareBufferPropertiesANDROID\">vkGetAndroidHardwareBufferPropertiesANDROID</a> for the Android hardware buffer"
         },
         {
-          "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-01881",
-          "text": " If <code>buffer</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> be a valid Android hardware buffer object with <code>AHardwareBuffer_Desc</code>::<code>usage</code> compatible with Vulkan as described in <a href=\"#memory-external-android-hardware-buffer\">Android Hardware Buffers</a>"
+          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02384",
+          "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, and the <code>pNext</code> chain does not include a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure or <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the Android hardware buffer <strong class=\"purple\">must</strong> have a <code>AHardwareBuffer_Desc</code>::<code>format</code> of <code>AHARDWAREBUFFER_FORMAT_BLOB</code> and a <code>AHardwareBuffer_Desc</code>::<code>usage</code> that includes <code>AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER</code>"
         },
         {
-          "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID</code>"
+          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-02385",
+          "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be one of those returned by <a href=\"#vkGetAndroidHardwareBufferPropertiesANDROID\">vkGetAndroidHardwareBufferPropertiesANDROID</a> for the Android hardware buffer"
         },
         {
-          "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-parameter",
-          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>AHardwareBuffer</code> value"
-        }
-      ]
-    },
-    "vkGetMemoryAndroidHardwareBufferANDROID": {
-      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
-        {
-          "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-VkMemoryAllocateInfo-pNext-01874",
+          "text": " If the parameters do not define an import operation, and the <code>pNext</code> chain includes a <code>VkExportMemoryAllocateInfo</code> structure with <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> included in its <code>handleTypes</code> member, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure with <code>image</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>allocationSize</code> <strong class=\"purple\">must</strong> be <code>0</code>, otherwise <code>allocationSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
         },
         {
-          "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-pInfo-parameter",
-          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMemoryGetAndroidHardwareBufferInfoANDROID\">VkMemoryGetAndroidHardwareBufferInfoANDROID</a> structure"
+          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02386",
+          "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the Android hardware buffer&#8217;s <code>AHardwareBuffer</code>::<code>usage</code> <strong class=\"purple\">must</strong> include at least one of <code>AHARDWAREBUFFER_USAGE_GPU_FRAMEBUFFER</code> or <code>AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE</code>"
         },
         {
-          "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-pBuffer-parameter",
-          "text": " <code>pBuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid pointer to an <code>AHardwareBuffer</code> value"
-        }
-      ]
-    },
-    "VkMemoryGetAndroidHardwareBufferInfoANDROID": {
-      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
-        {
-          "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-handleTypes-01882",
-          "text": " <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> when <code>memory</code> was created"
+          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02387",
+          "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the format of <code>image</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code> or the format returned by <a href=\"#vkGetAndroidHardwareBufferPropertiesANDROID\">vkGetAndroidHardwareBufferPropertiesANDROID</a> in <a href=\"#VkAndroidHardwareBufferFormatPropertiesANDROID\">VkAndroidHardwareBufferFormatPropertiesANDROID</a>::<code>format</code> for the Android hardware buffer"
         },
         {
-          "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-pNext-01883",
-          "text": " If the <code>pNext</code> chain of the <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> used to allocate <code>memory</code> included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with non-<code>NULL</code> <code>image</code> member, then that <code>image</code> <strong class=\"purple\">must</strong> already be bound to <code>memory</code>"
+          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02388",
+          "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the width, height, and array layer dimensions of <code>image</code> and the Android hardware buffer&#8217;s <code>AHardwareBuffer_Desc</code> <strong class=\"purple\">must</strong> be identical"
         },
         {
-          "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID</code>"
+          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02389",
+          "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the Android hardware buffer&#8217;s <code>AHardwareBuffer</code>::<code>usage</code> includes <code>AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE</code>, the <code>image</code> <strong class=\"purple\">must</strong> have a complete mipmap chain"
         },
         {
-          "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02586",
+          "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the Android hardware buffer&#8217;s <code>AHardwareBuffer</code>::<code>usage</code> does not include <code>AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE</code>, the <code>image</code> <strong class=\"purple\">must</strong> have exactly one mipmap level"
         },
         {
-          "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-memory-parameter",
-          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
+          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02390",
+          "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, each bit set in the usage of <code>image</code> <strong class=\"purple\">must</strong> be listed in <a href=\"#memory-external-android-hardware-buffer-usage\">AHardwareBuffer Usage Equivalence</a>, and if there is a corresponding <code>AHARDWAREBUFFER_USAGE</code> bit listed that bit <strong class=\"purple\">must</strong> be included in the Android hardware buffer&#8217;s <code>AHardwareBuffer_Desc</code>::<code>usage</code>"
         }
-      ]
-    },
-    "vkGetAndroidHardwareBufferPropertiesANDROID": {
-      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
+      ],
+      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
         {
-          "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-01884",
-          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid Android hardware buffer object with at least one of the <code>AHARDWAREBUFFER_USAGE_GPU_</code>* flags in its <code>AHardwareBuffer_Desc</code>::<code>usage</code>"
+          "vuid": "VUID-VkMemoryAllocateInfo-opaqueCaptureAddress-03329",
+          "text": " If <a href=\"#VkMemoryOpaqueCaptureAddressAllocateInfo\">VkMemoryOpaqueCaptureAddressAllocateInfo</a>::<code>opaqueCaptureAddress</code> is not zero, <code>VkMemoryAllocateFlagsInfo</code>::<code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code>"
         },
         {
-          "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-VkMemoryAllocateInfo-flags-03330",
+          "text": " If <code>VkMemoryAllocateFlagsInfo</code>::<code>flags</code> includes <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code>, the <a href=\"#features-bufferDeviceAddressCaptureReplay\">bufferDeviceAddressCaptureReplay</a> feature <strong class=\"purple\">must</strong> be enabled"
         },
         {
-          "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-parameter",
-          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>AHardwareBuffer</code> value"
+          "vuid": "VUID-VkMemoryAllocateInfo-flags-03331",
+          "text": " If <code>VkMemoryAllocateFlagsInfo</code>::<code>flags</code> includes <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT</code>, the <a href=\"#features-bufferDeviceAddress\">bufferDeviceAddress</a> feature <strong class=\"purple\">must</strong> be enabled"
         },
         {
-          "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-pProperties-parameter",
-          "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkAndroidHardwareBufferPropertiesANDROID\">VkAndroidHardwareBufferPropertiesANDROID</a> structure"
+          "vuid": "VUID-VkMemoryAllocateInfo-opaqueCaptureAddress-03333",
+          "text": " If the parameters define an import operation, <a href=\"#VkMemoryOpaqueCaptureAddressAllocateInfo\">VkMemoryOpaqueCaptureAddressAllocateInfo</a>::<code>opaqueCaptureAddress</code> <strong class=\"purple\">must</strong> be zero"
         }
-      ]
-    },
-    "VkAndroidHardwareBufferPropertiesANDROID": {
-      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
+      ],
+      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)+(VK_EXT_external_memory_host)": [
         {
-          "vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID</code>"
+          "vuid": "VUID-VkMemoryAllocateInfo-pNext-03332",
+          "text": " If the <code>pNext</code> chain includes a <code>VkImportMemoryHostPointerInfoEXT</code> structure, <a href=\"#VkMemoryOpaqueCaptureAddressAllocateInfo\">VkMemoryOpaqueCaptureAddressAllocateInfo</a>::<code>opaqueCaptureAddress</code> <strong class=\"purple\">must</strong> be zero"
+        }
+      ],
+      "core": [
+        {
+          "vuid": "VUID-VkMemoryAllocateInfo-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO</code>"
         },
         {
-          "vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-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=\"#VkAndroidHardwareBufferFormatPropertiesANDROID\">VkAndroidHardwareBufferFormatPropertiesANDROID</a>"
+          "vuid": "VUID-VkMemoryAllocateInfo-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=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>, <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>, <a href=\"#VkExportMemoryAllocateInfoNV\">VkExportMemoryAllocateInfoNV</a>, <a href=\"#VkExportMemoryWin32HandleInfoKHR\">VkExportMemoryWin32HandleInfoKHR</a>, <a href=\"#VkExportMemoryWin32HandleInfoNV\">VkExportMemoryWin32HandleInfoNV</a>, <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a>, <a href=\"#VkImportMemoryFdInfoKHR\">VkImportMemoryFdInfoKHR</a>, <a href=\"#VkImportMemoryHostPointerInfoEXT\">VkImportMemoryHostPointerInfoEXT</a>, <a href=\"#VkImportMemoryWin32HandleInfoKHR\">VkImportMemoryWin32HandleInfoKHR</a>, <a href=\"#VkImportMemoryWin32HandleInfoNV\">VkImportMemoryWin32HandleInfoNV</a>, <a href=\"#VkMemoryAllocateFlagsInfo\">VkMemoryAllocateFlagsInfo</a>, <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>, <a href=\"#VkMemoryOpaqueCaptureAddressAllocateInfo\">VkMemoryOpaqueCaptureAddressAllocateInfo</a>, or <a href=\"#VkMemoryPriorityAllocateInfoEXT\">VkMemoryPriorityAllocateInfoEXT</a>"
         },
         {
-          "vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-sType-unique",
+          "vuid": "VUID-VkMemoryAllocateInfo-sType-unique",
           "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
         }
       ]
     },
-    "VkAndroidHardwareBufferFormatPropertiesANDROID": {
-      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
-        {
-          "vuid": "VUID-VkAndroidHardwareBufferFormatPropertiesANDROID-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID</code>"
-        }
-      ]
-    },
-    "VkExportMemoryAllocateInfoNV": {
-      "(VK_NV_external_memory)": [
+    "VkMemoryDedicatedAllocateInfo": {
+      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
         {
-          "vuid": "VUID-VkExportMemoryAllocateInfoNV-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV</code>"
+          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01432",
+          "text": " At least one of <code>image</code> and <code>buffer</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
         },
         {
-          "vuid": "VUID-VkExportMemoryAllocateInfoNV-handleTypes-parameter",
-          "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
+          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01434",
+          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> have been created without <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code> set in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code>"
+        },
+        {
+          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01436",
+          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> have been created without <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code> set in <a href=\"#VkBufferCreateInfo\">VkBufferCreateInfo</a>::<code>flags</code>"
+        },
+        {
+          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO</code>"
+        },
+        {
+          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-parameter",
+          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
+        },
+        {
+          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-parameter",
+          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
+        },
+        {
+          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-commonparent",
+          "text": " Both of <code>buffer</code>, and <code>image</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>"
         }
-      ]
-    },
-    "VkExportMemoryWin32HandleInfoNV": {
-      "(VK_NV_external_memory_win32)": [
+      ],
+      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
         {
-          "vuid": "VUID-VkExportMemoryWin32HandleInfoNV-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV</code>"
+          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01433",
+          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the image"
         },
         {
-          "vuid": "VUID-VkExportMemoryWin32HandleInfoNV-pAttributes-parameter",
-          "text": " If <code>pAttributes</code> is not <code>NULL</code>, <code>pAttributes</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>SECURITY_ATTRIBUTES</code> value"
+          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01435",
+          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the buffer"
         }
-      ]
-    },
-    "VkImportMemoryWin32HandleInfoNV": {
-      "(VK_NV_external_memory_win32)": [
+      ],
+      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
         {
-          "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handleType-01327",
-          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not have more than one bit set"
+          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-02964",
+          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and the memory is not an imported Android Hardware Buffer, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the image"
         },
         {
-          "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handle-01328",
-          "text": " <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle to memory, obtained as specified by <code>handleType</code>"
+          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-02965",
+          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and the memory is not an imported Android Hardware Buffer, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the buffer"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_external_memory_win32)": [
+        {
+          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01876",
+          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, and the external handle was created by the Vulkan API, then the memory being imported <strong class=\"purple\">must</strong> also be a dedicated image allocation and <code>image</code> must be identical to the image associated with the imported memory"
         },
         {
-          "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV</code>"
+          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01877",
+          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, and the external handle was created by the Vulkan API, then the memory being imported <strong class=\"purple\">must</strong> also be a dedicated buffer allocation and <code>buffer</code> <strong class=\"purple\">must</strong> be identical to the buffer associated with the imported memory"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_external_memory_fd)": [
+        {
+          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01878",
+          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT</code>, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated image allocation and <code>image</code> <strong class=\"purple\">must</strong> be identical to the image associated with the imported memory"
         },
         {
-          "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handleType-parameter",
-          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
+          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01879",
+          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT</code>, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated buffer allocation and <code>buffer</code> <strong class=\"purple\">must</strong> be identical to the buffer associated with the imported memory"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_sampler_ycbcr_conversion)": [
+        {
+          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01797",
+          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> not have been created with <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> set in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code>"
         }
       ]
     },
-    "vkGetMemoryWin32HandleNV": {
-      "(VK_NV_external_memory_win32)": [
+    "VkDedicatedAllocationMemoryAllocateInfoNV": {
+      "(VK_NV_dedicated_allocation)": [
         {
-          "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-01326",
-          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a flag specified in <a href=\"#VkExportMemoryAllocateInfoNV\">VkExportMemoryAllocateInfoNV</a>::<code>handleTypes</code> when allocating <code>memory</code>"
+          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00649",
+          "text": " At least one of <code>image</code> and <code>buffer</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
         },
         {
-          "vuid": "VUID-vkGetMemoryWin32HandleNV-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00650",
+          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the image <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>"
         },
         {
-          "vuid": "VUID-vkGetMemoryWin32HandleNV-memory-parameter",
-          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
+          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00651",
+          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the buffer <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>"
         },
         {
-          "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-parameter",
-          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
+          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00652",
+          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the image"
         },
         {
-          "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-requiredbitmask",
-          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00653",
+          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the buffer"
         },
         {
-          "vuid": "VUID-vkGetMemoryWin32HandleNV-pHandle-parameter",
-          "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value"
+          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV</code>"
         },
         {
-          "vuid": "VUID-vkGetMemoryWin32HandleNV-memory-parent",
-          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
-        }
-      ]
-    },
-    "VkMemoryAllocateFlagsInfo": {
-      "(VK_VERSION_1_1,VK_KHR_device_group)": [
-        {
-          "vuid": "VUID-VkMemoryAllocateFlagsInfo-deviceMask-00675",
-          "text": " If <code>VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT</code> is set, <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask"
+          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-parameter",
+          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
         },
         {
-          "vuid": "VUID-VkMemoryAllocateFlagsInfo-deviceMask-00676",
-          "text": " If <code>VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT</code> is set, <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
+          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-parameter",
+          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
         },
         {
-          "vuid": "VUID-VkMemoryAllocateFlagsInfo-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO</code>"
+          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-commonparent",
+          "text": " Both of <code>buffer</code>, and <code>image</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>"
+        }
+      ],
+      "(VK_NV_dedicated_allocation)+(VK_KHR_external_memory_win32,VK_KHR_external_memory_fd)": [
+        {
+          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00654",
+          "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated image allocation and <code>image</code> <strong class=\"purple\">must</strong> be identical to the image associated with the imported memory"
         },
         {
-          "vuid": "VUID-VkMemoryAllocateFlagsInfo-flags-parameter",
-          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkMemoryAllocateFlagBits\">VkMemoryAllocateFlagBits</a> values"
+          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00655",
+          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated buffer allocation and <code>buffer</code> <strong class=\"purple\">must</strong> be identical to the buffer associated with the imported memory"
         }
       ]
     },
-    "VkMemoryOpaqueCaptureAddressAllocateInfo": {
-      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
+    "VkMemoryPriorityAllocateInfoEXT": {
+      "(VK_EXT_memory_priority)": [
         {
-          "vuid": "VUID-VkMemoryOpaqueCaptureAddressAllocateInfo-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO</code>"
+          "vuid": "VUID-VkMemoryPriorityAllocateInfoEXT-priority-02602",
+          "text": " <code>priority</code> <strong class=\"purple\">must</strong> be between <code>0</code> and <code>1</code>, inclusive"
+        },
+        {
+          "vuid": "VUID-VkMemoryPriorityAllocateInfoEXT-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT</code>"
         }
       ]
     },
-    "vkFreeMemory": {
-      "core": [
+    "VkExportMemoryAllocateInfo": {
+      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
         {
-          "vuid": "VUID-vkFreeMemory-memory-00677",
-          "text": " All submitted commands that refer to <code>memory</code> (via images or buffers) <strong class=\"purple\">must</strong> have completed execution"
+          "vuid": "VUID-VkExportMemoryAllocateInfo-handleTypes-00656",
+          "text": " The bits in <code>handleTypes</code> <strong class=\"purple\">must</strong> be supported and compatible, as reported by <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a> or <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>"
         },
         {
-          "vuid": "VUID-vkFreeMemory-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-VkExportMemoryAllocateInfo-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO</code>"
         },
         {
-          "vuid": "VUID-vkFreeMemory-memory-parameter",
-          "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
+          "vuid": "VUID-VkExportMemoryAllocateInfo-handleTypes-parameter",
+          "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values"
+        }
+      ]
+    },
+    "VkExportMemoryWin32HandleInfoKHR": {
+      "(VK_KHR_external_memory_win32)": [
+        {
+          "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-handleTypes-00657",
+          "text": " If <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> does not include <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, a <code>VkExportMemoryWin32HandleInfoKHR</code> structure <strong class=\"purple\">must</strong> not be included in the <code>pNext</code> chain of <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a>"
         },
         {
-          "vuid": "VUID-vkFreeMemory-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"
+          "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR</code>"
         },
         {
-          "vuid": "VUID-vkFreeMemory-memory-parent",
-          "text": " If <code>memory</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+          "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-pAttributes-parameter",
+          "text": " If <code>pAttributes</code> is not <code>NULL</code>, <code>pAttributes</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>SECURITY_ATTRIBUTES</code> value"
         }
       ]
     },
-    "vkMapMemory": {
-      "core": [
-        {
-          "vuid": "VUID-vkMapMemory-memory-00678",
-          "text": " <code>memory</code> <strong class=\"purple\">must</strong> not be currently host mapped"
-        },
+    "VkImportMemoryWin32HandleInfoKHR": {
+      "(VK_KHR_external_memory_win32)": [
         {
-          "vuid": "VUID-vkMapMemory-offset-00679",
-          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
+          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00658",
+          "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be supported for import, as reported by <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a> or <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>"
         },
         {
-          "vuid": "VUID-vkMapMemory-size-00680",
-          "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-00659",
+          "text": " The memory from which <code>handle</code> was exported, or the memory named by <code>name</code> <strong class=\"purple\">must</strong> have been created on the same underlying physical device as <code>device</code>"
         },
         {
-          "vuid": "VUID-vkMapMemory-size-00681",
-          "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to the size of the <code>memory</code> minus <code>offset</code>"
+          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00660",
+          "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle"
         },
         {
-          "vuid": "VUID-vkMapMemory-memory-00682",
-          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created with a memory type that reports <code>VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT</code>"
+          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-01439",
+          "text": " If <code>handleType</code> is not <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-vkMapMemory-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-01440",
+          "text": " If <code>handleType</code> is not <code>0</code> and <code>handle</code> is <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> name a valid memory resource of the type specified by <code>handleType</code>"
         },
         {
-          "vuid": "VUID-vkMapMemory-memory-parameter",
-          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
+          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00661",
+          "text": " If <code>handleType</code> is not <code>0</code> and <code>name</code> is <code>NULL</code>, <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle of the type specified by <code>handleType</code>"
         },
         {
-          "vuid": "VUID-vkMapMemory-flags-zerobitmask",
-          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-01441",
+          "text": " if <code>handle</code> is not <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-vkMapMemory-ppData-parameter",
-          "text": " <code>ppData</code> <strong class=\"purple\">must</strong> be a valid pointer to a pointer value"
+          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-01518",
+          "text": " If <code>handle</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-memory-handle-types-compatibility\">external memory handle types compatibility</a>"
         },
         {
-          "vuid": "VUID-vkMapMemory-memory-parent",
-          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
-        }
-      ],
-      "(VK_KHR_device_group)": [
-        {
-          "vuid": "VUID-vkMapMemory-memory-00683",
-          "text": " <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated with multiple instances"
-        }
-      ]
-    },
-    "vkFlushMappedMemoryRanges": {
-      "core": [
-        {
-          "vuid": "VUID-vkFlushMappedMemoryRanges-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-name-01519",
+          "text": " If <code>name</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-memory-handle-types-compatibility\">external memory handle types compatibility</a>"
         },
         {
-          "vuid": "VUID-vkFlushMappedMemoryRanges-pMemoryRanges-parameter",
-          "text": " <code>pMemoryRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryRangeCount</code> valid <a href=\"#VkMappedMemoryRange\">VkMappedMemoryRange</a> structures"
+          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR</code>"
         },
         {
-          "vuid": "VUID-vkFlushMappedMemoryRanges-memoryRangeCount-arraylength",
-          "text": " <code>memoryRangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-parameter",
+          "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
         }
       ]
     },
-    "vkInvalidateMappedMemoryRanges": {
-      "core": [
+    "vkGetMemoryWin32HandleKHR": {
+      "(VK_KHR_external_memory_win32)": [
         {
-          "vuid": "VUID-vkInvalidateMappedMemoryRanges-device-parameter",
+          "vuid": "VUID-vkGetMemoryWin32HandleKHR-device-parameter",
           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-vkInvalidateMappedMemoryRanges-pMemoryRanges-parameter",
-          "text": " <code>pMemoryRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryRangeCount</code> valid <a href=\"#VkMappedMemoryRange\">VkMappedMemoryRange</a> structures"
+          "vuid": "VUID-vkGetMemoryWin32HandleKHR-pGetWin32HandleInfo-parameter",
+          "text": " <code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMemoryGetWin32HandleInfoKHR\">VkMemoryGetWin32HandleInfoKHR</a> structure"
         },
         {
-          "vuid": "VUID-vkInvalidateMappedMemoryRanges-memoryRangeCount-arraylength",
-          "text": " <code>memoryRangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+          "vuid": "VUID-vkGetMemoryWin32HandleKHR-pHandle-parameter",
+          "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value"
         }
       ]
     },
-    "VkMappedMemoryRange": {
-      "core": [
-        {
-          "vuid": "VUID-VkMappedMemoryRange-memory-00684",
-          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be currently host mapped"
-        },
-        {
-          "vuid": "VUID-VkMappedMemoryRange-size-00685",
-          "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>offset</code> and <code>size</code> <strong class=\"purple\">must</strong> specify a range contained within the currently mapped range of <code>memory</code>"
-        },
-        {
-          "vuid": "VUID-VkMappedMemoryRange-size-00686",
-          "text": " If <code>size</code> is equal to <code>VK_WHOLE_SIZE</code>, <code>offset</code> <strong class=\"purple\">must</strong> be within the currently mapped range of <code>memory</code>"
-        },
+    "VkMemoryGetWin32HandleInfoKHR": {
+      "(VK_KHR_external_memory_win32)": [
         {
-          "vuid": "VUID-VkMappedMemoryRange-size-01389",
-          "text": " If <code>size</code> is equal to <code>VK_WHOLE_SIZE</code>, the end of the current mapping of <code>memory</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>nonCoherentAtomSize</code> bytes from the beginning of the memory object"
+          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00662",
+          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> when <code>memory</code> was created"
         },
         {
-          "vuid": "VUID-VkMappedMemoryRange-offset-00687",
-          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>nonCoherentAtomSize</code>"
+          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00663",
+          "text": " If <code>handleType</code> is defined as an NT handle, <a href=\"#vkGetMemoryWin32HandleKHR\">vkGetMemoryWin32HandleKHR</a> <strong class=\"purple\">must</strong> be called no more than once for each valid unique combination of <code>memory</code> and <code>handleType</code>"
         },
         {
-          "vuid": "VUID-VkMappedMemoryRange-size-01390",
-          "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> either be a multiple of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>nonCoherentAtomSize</code>, or <code>offset</code> plus <code>size</code> <strong class=\"purple\">must</strong> equal the size of <code>memory</code>"
+          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00664",
+          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle"
         },
         {
-          "vuid": "VUID-VkMappedMemoryRange-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE</code>"
+          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR</code>"
         },
         {
-          "vuid": "VUID-VkMappedMemoryRange-pNext-pNext",
+          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-pNext-pNext",
           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-VkMappedMemoryRange-memory-parameter",
+          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-memory-parameter",
           "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
+        },
+        {
+          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-parameter",
+          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
         }
       ]
     },
-    "vkUnmapMemory": {
-      "core": [
+    "vkGetMemoryWin32HandlePropertiesKHR": {
+      "(VK_KHR_external_memory_win32)": [
         {
-          "vuid": "VUID-vkUnmapMemory-memory-00689",
-          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be currently host mapped"
+          "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handle-00665",
+          "text": " <code>handle</code> <strong class=\"purple\">must</strong> be an external memory handle created outside of the Vulkan API"
         },
         {
-          "vuid": "VUID-vkUnmapMemory-device-parameter",
+          "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-00666",
+          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not be one of the handle types defined as opaque"
+        },
+        {
+          "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-device-parameter",
           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-vkUnmapMemory-memory-parameter",
-          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
+          "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-parameter",
+          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
         },
         {
-          "vuid": "VUID-vkUnmapMemory-memory-parent",
-          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+          "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-pMemoryWin32HandleProperties-parameter",
+          "text": " <code>pMemoryWin32HandleProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryWin32HandlePropertiesKHR\">VkMemoryWin32HandlePropertiesKHR</a> structure"
         }
       ]
     },
-    "vkGetDeviceMemoryCommitment": {
-      "core": [
+    "VkMemoryWin32HandlePropertiesKHR": {
+      "(VK_KHR_external_memory_win32)": [
         {
-          "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-00690",
-          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created with a memory type that reports <code>VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT</code>"
+          "vuid": "VUID-VkMemoryWin32HandlePropertiesKHR-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR</code>"
         },
         {
-          "vuid": "VUID-vkGetDeviceMemoryCommitment-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
-        },
+          "vuid": "VUID-VkMemoryWin32HandlePropertiesKHR-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+        }
+      ]
+    },
+    "VkImportMemoryFdInfoKHR": {
+      "(VK_KHR_external_memory_fd)": [
         {
-          "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-parameter",
-          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
+          "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00667",
+          "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be supported for import, as reported by <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a> or <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>"
         },
         {
-          "vuid": "VUID-vkGetDeviceMemoryCommitment-pCommittedMemoryInBytes-parameter",
-          "text": " <code>pCommittedMemoryInBytes</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceSize</code> value"
+          "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-00668",
+          "text": " The memory from which <code>fd</code> was exported <strong class=\"purple\">must</strong> have been created on the same underlying physical device as <code>device</code>"
         },
         {
-          "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-parent",
-          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
-        }
-      ]
-    },
-    "vkGetDeviceGroupPeerMemoryFeatures": {
-      "(VK_VERSION_1_1,VK_KHR_device_group)": [
-        {
-          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-heapIndex-00691",
-          "text": " <code>heapIndex</code> <strong class=\"purple\">must</strong> be less than <code>memoryHeapCount</code>"
+          "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00669",
+          "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT</code>."
         },
         {
-          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-localDeviceIndex-00692",
-          "text": " <code>localDeviceIndex</code> <strong class=\"purple\">must</strong> be a valid device index"
+          "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00670",
+          "text": " If <code>handleType</code> is not <code>0</code>, <code>fd</code> <strong class=\"purple\">must</strong> be a valid POSIX file descriptor handle."
         },
         {
-          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-remoteDeviceIndex-00693",
-          "text": " <code>remoteDeviceIndex</code> <strong class=\"purple\">must</strong> be a valid device index"
+          "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>"
         },
         {
-          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-localDeviceIndex-00694",
-          "text": " <code>localDeviceIndex</code> <strong class=\"purple\">must</strong> not equal <code>remoteDeviceIndex</code>"
+          "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-01520",
+          "text": " <code>fd</code> <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-memory-handle-types-compatibility\">external memory handle types compatibility</a>"
         },
         {
-          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-VkImportMemoryFdInfoKHR-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR</code>"
         },
         {
-          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-pPeerMemoryFeatures-parameter",
-          "text": " <code>pPeerMemoryFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPeerMemoryFeatureFlags\">VkPeerMemoryFeatureFlags</a> value"
+          "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-parameter",
+          "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
         }
       ]
     },
-    "vkGetDeviceMemoryOpaqueCaptureAddress": {
-      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
-        {
-          "vuid": "VUID-vkGetDeviceMemoryOpaqueCaptureAddress-None-03334",
-          "text": " The <a href=\"#features-bufferDeviceAddress\">bufferDeviceAddress</a> feature <strong class=\"purple\">must</strong> be enabled"
-        },
+    "vkGetMemoryFdKHR": {
+      "(VK_KHR_external_memory_fd)": [
         {
-          "vuid": "VUID-vkGetDeviceMemoryOpaqueCaptureAddress-device-03335",
-          "text": " If <code>device</code> was created with multiple physical devices, then the <a href=\"#features-bufferDeviceAddressMultiDevice\">bufferDeviceAddressMultiDevice</a> feature <strong class=\"purple\">must</strong> be enabled"
+          "vuid": "VUID-vkGetMemoryFdKHR-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-vkGetDeviceMemoryOpaqueCaptureAddress-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-vkGetMemoryFdKHR-pGetFdInfo-parameter",
+          "text": " <code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMemoryGetFdInfoKHR\">VkMemoryGetFdInfoKHR</a> structure"
         },
         {
-          "vuid": "VUID-vkGetDeviceMemoryOpaqueCaptureAddress-pInfo-parameter",
-          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDeviceMemoryOpaqueCaptureAddressInfo\">VkDeviceMemoryOpaqueCaptureAddressInfo</a> structure"
+          "vuid": "VUID-vkGetMemoryFdKHR-pFd-parameter",
+          "text": " <code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>int</code> value"
         }
       ]
     },
-    "VkDeviceMemoryOpaqueCaptureAddressInfo": {
-      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
+    "VkMemoryGetFdInfoKHR": {
+      "(VK_KHR_external_memory_fd)": [
         {
-          "vuid": "VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-memory-03336",
-          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated with <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT</code>"
+          "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-00671",
+          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> when <code>memory</code> was created"
         },
         {
-          "vuid": "VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO</code>"
+          "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-00672",
+          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle"
         },
         {
-          "vuid": "VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-pNext-pNext",
+          "vuid": "VUID-VkMemoryGetFdInfoKHR-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR</code>"
+        },
+        {
+          "vuid": "VUID-VkMemoryGetFdInfoKHR-pNext-pNext",
           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-memory-parameter",
+          "vuid": "VUID-VkMemoryGetFdInfoKHR-memory-parameter",
           "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
+        },
+        {
+          "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-parameter",
+          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
         }
       ]
     },
-    "vkCreateBuffer": {
-      "core": [
+    "vkGetMemoryFdPropertiesKHR": {
+      "(VK_KHR_external_memory_fd)": [
         {
-          "vuid": "VUID-vkCreateBuffer-flags-00911",
-          "text": " If the <code>flags</code> member of <code>pCreateInfo</code> includes <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>, creating this <code>VkBuffer</code> <strong class=\"purple\">must</strong> not cause the total required sparse memory for all currently valid sparse resources on the device to exceed <code>VkPhysicalDeviceLimits</code>::<code>sparseAddressSpaceSize</code>"
+          "vuid": "VUID-vkGetMemoryFdPropertiesKHR-fd-00673",
+          "text": " <code>fd</code> <strong class=\"purple\">must</strong> be an external memory handle created outside of the Vulkan API"
         },
         {
-          "vuid": "VUID-vkCreateBuffer-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-vkGetMemoryFdPropertiesKHR-handleType-00674",
+          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCreateBuffer-pCreateInfo-parameter",
-          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBufferCreateInfo\">VkBufferCreateInfo</a> structure"
+          "vuid": "VUID-vkGetMemoryFdPropertiesKHR-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-vkCreateBuffer-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"
+          "vuid": "VUID-vkGetMemoryFdPropertiesKHR-handleType-parameter",
+          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
         },
         {
-          "vuid": "VUID-vkCreateBuffer-pBuffer-parameter",
-          "text": " <code>pBuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkBuffer\">VkBuffer</a> handle"
+          "vuid": "VUID-vkGetMemoryFdPropertiesKHR-pMemoryFdProperties-parameter",
+          "text": " <code>pMemoryFdProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryFdPropertiesKHR\">VkMemoryFdPropertiesKHR</a> structure"
         }
       ]
     },
-    "VkBufferCreateInfo": {
-      "core": [
+    "VkMemoryFdPropertiesKHR": {
+      "(VK_KHR_external_memory_fd)": [
         {
-          "vuid": "VUID-VkBufferCreateInfo-size-00912",
-          "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+          "vuid": "VUID-VkMemoryFdPropertiesKHR-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR</code>"
         },
         {
-          "vuid": "VUID-VkBufferCreateInfo-sharingMode-00913",
-          "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueFamilyIndexCount</code> <code>uint32_t</code> values"
-        },
+          "vuid": "VUID-VkMemoryFdPropertiesKHR-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+        }
+      ]
+    },
+    "VkImportMemoryHostPointerInfoEXT": {
+      "(VK_EXT_external_memory_host)": [
         {
-          "vuid": "VUID-VkBufferCreateInfo-sharingMode-00914",
-          "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>queueFamilyIndexCount</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>"
+          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01747",
+          "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be supported for import, as reported in <a href=\"#VkExternalMemoryProperties\">VkExternalMemoryProperties</a>"
         },
         {
-          "vuid": "VUID-VkBufferCreateInfo-flags-00915",
-          "text": " If the <a href=\"#features-sparseBinding\">sparse bindings</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>"
+          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01748",
+          "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT</code>"
         },
         {
-          "vuid": "VUID-VkBufferCreateInfo-flags-00916",
-          "text": " If the <a href=\"#features-sparseResidencyBuffer\">sparse buffer residency</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>"
+          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-pHostPointer-01749",
+          "text": " <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer aligned to an integer multiple of <code>VkPhysicalDeviceExternalMemoryHostPropertiesEXT</code>::<code>minImportedHostPointerAlignment</code>"
         },
         {
-          "vuid": "VUID-VkBufferCreateInfo-flags-00917",
-          "text": " If the <a href=\"#features-sparseResidencyAliased\">sparse aliased residency</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code>"
+          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01750",
+          "text": " If <code>handleType</code> is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT</code>, <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer to <code>allocationSize</code> number of bytes of host memory, where <code>allocationSize</code> is the member of the <code>VkMemoryAllocateInfo</code> structure this structure is chained to"
         },
         {
-          "vuid": "VUID-VkBufferCreateInfo-flags-00918",
-          "text": " If <code>flags</code> contains <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> or <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code>, it <strong class=\"purple\">must</strong> also contain <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>"
+          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01751",
+          "text": " If <code>handleType</code> is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT</code>, <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer to <code>allocationSize</code> number of bytes of host mapped foreign memory, where <code>allocationSize</code> is the member of the <code>VkMemoryAllocateInfo</code> structure this structure is chained to"
         },
         {
-          "vuid": "VUID-VkBufferCreateInfo-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO</code>"
+          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT</code>"
         },
         {
-          "vuid": "VUID-VkBufferCreateInfo-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=\"#VkBufferDeviceAddressCreateInfoEXT\">VkBufferDeviceAddressCreateInfoEXT</a>, <a href=\"#VkBufferOpaqueCaptureAddressCreateInfo\">VkBufferOpaqueCaptureAddressCreateInfo</a>, <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>, or <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>"
+          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-parameter",
+          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
+        }
+      ]
+    },
+    "vkGetMemoryHostPointerPropertiesEXT": {
+      "(VK_EXT_external_memory_host)": [
+        {
+          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01752",
+          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT</code>"
         },
         {
-          "vuid": "VUID-VkBufferCreateInfo-sType-unique",
-          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
+          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-pHostPointer-01753",
+          "text": " <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer aligned to an integer multiple of <code>VkPhysicalDeviceExternalMemoryHostPropertiesEXT</code>::<code>minImportedHostPointerAlignment</code>"
         },
         {
-          "vuid": "VUID-VkBufferCreateInfo-flags-parameter",
-          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferCreateFlagBits\">VkBufferCreateFlagBits</a> values"
+          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01754",
+          "text": " If <code>handleType</code> is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT</code>, <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer to host memory"
         },
         {
-          "vuid": "VUID-VkBufferCreateInfo-usage-parameter",
-          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferUsageFlagBits\">VkBufferUsageFlagBits</a> values"
+          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01755",
+          "text": " If <code>handleType</code> is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT</code>, <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer to host mapped foreign memory"
         },
         {
-          "vuid": "VUID-VkBufferCreateInfo-usage-requiredbitmask",
-          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-VkBufferCreateInfo-sharingMode-parameter",
-          "text": " <code>sharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value"
-        }
-      ],
-      "!(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
+          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-parameter",
+          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
+        },
         {
-          "vuid": "VUID-VkBufferCreateInfo-sharingMode-01391",
-          "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> for the <code>physicalDevice</code> that was used to create <code>device</code>"
+          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-pMemoryHostPointerProperties-parameter",
+          "text": " <code>pMemoryHostPointerProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryHostPointerPropertiesEXT\">VkMemoryHostPointerPropertiesEXT</a> structure"
         }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
+      ]
+    },
+    "VkMemoryHostPointerPropertiesEXT": {
+      "(VK_EXT_external_memory_host)": [
         {
-          "vuid": "VUID-VkBufferCreateInfo-sharingMode-01419",
-          "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by either <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> or <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties2\">vkGetPhysicalDeviceQueueFamilyProperties2</a> for the <code>physicalDevice</code> that was used to create <code>device</code>"
-        }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
+          "vuid": "VUID-VkMemoryHostPointerPropertiesEXT-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT</code>"
+        },
         {
-          "vuid": "VUID-VkBufferCreateInfo-pNext-00920",
-          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a> structure, its <code>handleTypes</code> member <strong class=\"purple\">must</strong> only contain bits that are also in <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>::<code>externalMemoryProperties.compatibleHandleTypes</code>, as returned by <a href=\"#vkGetPhysicalDeviceExternalBufferProperties\">vkGetPhysicalDeviceExternalBufferProperties</a> with <code>pExternalBufferInfo-&gt;handleType</code> equal to any one of the handle types specified in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code>"
+          "vuid": "VUID-VkMemoryHostPointerPropertiesEXT-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         }
-      ],
-      "(VK_VERSION_1_1)": [
+      ]
+    },
+    "VkImportAndroidHardwareBufferInfoANDROID": {
+      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
         {
-          "vuid": "VUID-VkBufferCreateInfo-flags-01887",
-          "text": " If the protected memory feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_PROTECTED_BIT</code>"
+          "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-01880",
+          "text": " If <code>buffer</code> is not <code>NULL</code>, Android hardware buffers <strong class=\"purple\">must</strong> be supported for import, as reported by <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a> or <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>"
         },
         {
-          "vuid": "VUID-VkBufferCreateInfo-None-01888",
-          "text": " If any of the bits <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code> are set, <code>VK_BUFFER_CREATE_PROTECTED_BIT</code> <strong class=\"purple\">must</strong> not also be set"
+          "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-01881",
+          "text": " If <code>buffer</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> be a valid Android hardware buffer object with <code>AHardwareBuffer_Desc</code>::<code>usage</code> compatible with Vulkan as described in <a href=\"#memory-external-android-hardware-buffer\">Android Hardware Buffers</a>"
+        },
+        {
+          "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID</code>"
+        },
+        {
+          "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-parameter",
+          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>AHardwareBuffer</code> value"
         }
-      ],
-      "(VK_NV_dedicated_allocation)": [
+      ]
+    },
+    "vkGetMemoryAndroidHardwareBufferANDROID": {
+      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
         {
-          "vuid": "VUID-VkBufferCreateInfo-pNext-01571",
-          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a> structure, and the <code>dedicatedAllocation</code> member of the chained structure is <code>VK_TRUE</code>, then <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code>"
+          "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+        },
+        {
+          "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-pInfo-parameter",
+          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMemoryGetAndroidHardwareBufferInfoANDROID\">VkMemoryGetAndroidHardwareBufferInfoANDROID</a> structure"
+        },
+        {
+          "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-pBuffer-parameter",
+          "text": " <code>pBuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid pointer to an <code>AHardwareBuffer</code> value"
         }
-      ],
-      "(VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address)+(VK_EXT_buffer_device_address)": [
+      ]
+    },
+    "VkMemoryGetAndroidHardwareBufferInfoANDROID": {
+      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
         {
-          "vuid": "VUID-VkBufferCreateInfo-deviceAddress-02604",
-          "text": " If <a href=\"#VkBufferDeviceAddressCreateInfoEXT\">VkBufferDeviceAddressCreateInfoEXT</a>::<code>deviceAddress</code> is not zero, <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code>"
+          "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-handleTypes-01882",
+          "text": " <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> when <code>memory</code> was created"
+        },
+        {
+          "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-pNext-01883",
+          "text": " If the <code>pNext</code> chain of the <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> used to allocate <code>memory</code> included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with non-<code>NULL</code> <code>image</code> member, then that <code>image</code> <strong class=\"purple\">must</strong> already be bound to <code>memory</code>"
+        },
+        {
+          "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID</code>"
+        },
+        {
+          "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+        },
+        {
+          "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-memory-parameter",
+          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
         }
-      ],
-      "(VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address)+(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
+      ]
+    },
+    "vkGetAndroidHardwareBufferPropertiesANDROID": {
+      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
         {
-          "vuid": "VUID-VkBufferCreateInfo-opaqueCaptureAddress-03337",
-          "text": " If <a href=\"#VkBufferOpaqueCaptureAddressCreateInfo\">VkBufferOpaqueCaptureAddressCreateInfo</a>::<code>opaqueCaptureAddress</code> is not zero, <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code>"
+          "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-01884",
+          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid Android hardware buffer object with at least one of the <code>AHARDWAREBUFFER_USAGE_GPU_</code>* flags in its <code>AHardwareBuffer_Desc</code>::<code>usage</code>"
+        },
+        {
+          "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+        },
+        {
+          "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-parameter",
+          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>AHardwareBuffer</code> value"
+        },
+        {
+          "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-pProperties-parameter",
+          "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkAndroidHardwareBufferPropertiesANDROID\">VkAndroidHardwareBufferPropertiesANDROID</a> structure"
         }
-      ],
-      "(VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address)": [
+      ]
+    },
+    "VkAndroidHardwareBufferPropertiesANDROID": {
+      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
         {
-          "vuid": "VUID-VkBufferCreateInfo-flags-03338",
-          "text": " If <code>flags</code> includes <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code>, the <a href=\"#features-bufferDeviceAddressCaptureReplay\">bufferDeviceAddressCaptureReplay</a> or <a href=\"#features-bufferDeviceAddressCaptureReplayEXT\"><code>VkPhysicalDeviceBufferDeviceAddressFeaturesEXT</code>::<code>bufferDeviceAddressCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled"
+          "vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID</code>"
+        },
+        {
+          "vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-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=\"#VkAndroidHardwareBufferFormatPropertiesANDROID\">VkAndroidHardwareBufferFormatPropertiesANDROID</a>"
+        },
+        {
+          "vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-sType-unique",
+          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
         }
       ]
     },
-    "VkDedicatedAllocationBufferCreateInfoNV": {
-      "(VK_NV_dedicated_allocation)": [
+    "VkAndroidHardwareBufferFormatPropertiesANDROID": {
+      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
         {
-          "vuid": "VUID-VkDedicatedAllocationBufferCreateInfoNV-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV</code>"
+          "vuid": "VUID-VkAndroidHardwareBufferFormatPropertiesANDROID-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID</code>"
         }
       ]
     },
-    "VkExternalMemoryBufferCreateInfo": {
-      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
+    "VkExportMemoryAllocateInfoNV": {
+      "(VK_NV_external_memory)": [
         {
-          "vuid": "VUID-VkExternalMemoryBufferCreateInfo-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO</code>"
+          "vuid": "VUID-VkExportMemoryAllocateInfoNV-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV</code>"
         },
         {
-          "vuid": "VUID-VkExternalMemoryBufferCreateInfo-handleTypes-parameter",
-          "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values"
+          "vuid": "VUID-VkExportMemoryAllocateInfoNV-handleTypes-parameter",
+          "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
         }
       ]
     },
-    "VkBufferOpaqueCaptureAddressCreateInfo": {
-      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
+    "VkExportMemoryWin32HandleInfoNV": {
+      "(VK_NV_external_memory_win32)": [
         {
-          "vuid": "VUID-VkBufferOpaqueCaptureAddressCreateInfo-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO</code>"
+          "vuid": "VUID-VkExportMemoryWin32HandleInfoNV-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV</code>"
+        },
+        {
+          "vuid": "VUID-VkExportMemoryWin32HandleInfoNV-pAttributes-parameter",
+          "text": " If <code>pAttributes</code> is not <code>NULL</code>, <code>pAttributes</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>SECURITY_ATTRIBUTES</code> value"
         }
       ]
     },
-    "VkBufferDeviceAddressCreateInfoEXT": {
-      "(VK_EXT_buffer_device_address)": [
+    "VkImportMemoryWin32HandleInfoNV": {
+      "(VK_NV_external_memory_win32)": [
         {
-          "vuid": "VUID-VkBufferDeviceAddressCreateInfoEXT-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT</code>"
+          "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handleType-01327",
+          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not have more than one bit set"
+        },
+        {
+          "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handle-01328",
+          "text": " <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle to memory, obtained as specified by <code>handleType</code>"
+        },
+        {
+          "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV</code>"
+        },
+        {
+          "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handleType-parameter",
+          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
         }
       ]
     },
-    "vkDestroyBuffer": {
-      "core": [
+    "vkGetMemoryWin32HandleNV": {
+      "(VK_NV_external_memory_win32)": [
         {
-          "vuid": "VUID-vkDestroyBuffer-buffer-00922",
-          "text": " All submitted commands that refer to <code>buffer</code>, either directly or via a <code>VkBufferView</code>, <strong class=\"purple\">must</strong> have completed execution"
+          "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-01326",
+          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a flag specified in <a href=\"#VkExportMemoryAllocateInfoNV\">VkExportMemoryAllocateInfoNV</a>::<code>handleTypes</code> when allocating <code>memory</code>"
         },
         {
-          "vuid": "VUID-vkDestroyBuffer-buffer-00923",
-          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>buffer</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+          "vuid": "VUID-vkGetMemoryWin32HandleNV-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-vkDestroyBuffer-buffer-00924",
-          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>buffer</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-vkGetMemoryWin32HandleNV-memory-parameter",
+          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
         },
         {
-          "vuid": "VUID-vkDestroyBuffer-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-parameter",
+          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
         },
         {
-          "vuid": "VUID-vkDestroyBuffer-buffer-parameter",
-          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
+          "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-requiredbitmask",
+          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
         },
         {
-          "vuid": "VUID-vkDestroyBuffer-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"
+          "vuid": "VUID-vkGetMemoryWin32HandleNV-pHandle-parameter",
+          "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value"
         },
         {
-          "vuid": "VUID-vkDestroyBuffer-buffer-parent",
-          "text": " If <code>buffer</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+          "vuid": "VUID-vkGetMemoryWin32HandleNV-memory-parent",
+          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
         }
       ]
     },
-    "vkCreateBufferView": {
-      "core": [
+    "VkMemoryAllocateFlagsInfo": {
+      "(VK_VERSION_1_1,VK_KHR_device_group)": [
         {
-          "vuid": "VUID-vkCreateBufferView-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-VkMemoryAllocateFlagsInfo-deviceMask-00675",
+          "text": " If <code>VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT</code> is set, <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask"
         },
         {
-          "vuid": "VUID-vkCreateBufferView-pCreateInfo-parameter",
-          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBufferViewCreateInfo\">VkBufferViewCreateInfo</a> structure"
+          "vuid": "VUID-VkMemoryAllocateFlagsInfo-deviceMask-00676",
+          "text": " If <code>VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT</code> is set, <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
         },
         {
-          "vuid": "VUID-vkCreateBufferView-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"
+          "vuid": "VUID-VkMemoryAllocateFlagsInfo-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO</code>"
         },
         {
-          "vuid": "VUID-vkCreateBufferView-pView-parameter",
-          "text": " <code>pView</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkBufferView\">VkBufferView</a> handle"
+          "vuid": "VUID-VkMemoryAllocateFlagsInfo-flags-parameter",
+          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkMemoryAllocateFlagBits\">VkMemoryAllocateFlagBits</a> values"
         }
       ]
     },
-    "VkBufferViewCreateInfo": {
+    "VkMemoryOpaqueCaptureAddressAllocateInfo": {
+      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
+        {
+          "vuid": "VUID-VkMemoryOpaqueCaptureAddressAllocateInfo-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO</code>"
+        }
+      ]
+    },
+    "vkFreeMemory": {
       "core": [
         {
-          "vuid": "VUID-VkBufferViewCreateInfo-offset-00925",
-          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>"
+          "vuid": "VUID-vkFreeMemory-memory-00677",
+          "text": " All submitted commands that refer to <code>memory</code> (via images or buffers) <strong class=\"purple\">must</strong> have completed execution"
         },
         {
-          "vuid": "VUID-VkBufferViewCreateInfo-range-00928",
-          "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>range</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+          "vuid": "VUID-vkFreeMemory-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-VkBufferViewCreateInfo-range-00929",
-          "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>range</code> <strong class=\"purple\">must</strong> be an integer multiple of the texel block size of <code>format</code>"
+          "vuid": "VUID-vkFreeMemory-memory-parameter",
+          "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
         },
         {
-          "vuid": "VUID-VkBufferViewCreateInfo-range-00930",
-          "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, the number of texel buffer elements given by <span class=\"eq\">({lfloor}<code>range</code> / (texel block size){rfloor} {times} (texels per block))</span> where texel block size and texels per block are as defined in the <a href=\"#formats-compatibility\">Compatible Formats</a> table for <code>format</code>, <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxTexelBufferElements</code>"
+          "vuid": "VUID-vkFreeMemory-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"
         },
         {
-          "vuid": "VUID-VkBufferViewCreateInfo-offset-00931",
-          "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, the sum of <code>offset</code> and <code>range</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
-        },
+          "vuid": "VUID-vkFreeMemory-memory-parent",
+          "text": " If <code>memory</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+        }
+      ]
+    },
+    "vkMapMemory": {
+      "core": [
         {
-          "vuid": "VUID-VkBufferViewCreateInfo-range-04059",
-          "text": " If <code>range</code> is equal to <code>VK_WHOLE_SIZE</code>, the number of texel buffer elements given by <span class=\"eq\">({lfloor}(size - <code>offset</code>) / (texel block size){rfloor} {times} (texels per block))</span> where size is the size of <code>buffer</code>, and texel block size and texels per block are as defined in the <a href=\"#formats-compatibility\">Compatible Formats</a> table for <code>format</code>, <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxTexelBufferElements</code>"
+          "vuid": "VUID-vkMapMemory-memory-00678",
+          "text": " <code>memory</code> <strong class=\"purple\">must</strong> not be currently host mapped"
         },
         {
-          "vuid": "VUID-VkBufferViewCreateInfo-buffer-00932",
-          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing at least one of <code>VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT</code> or <code>VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</code>"
+          "vuid": "VUID-vkMapMemory-offset-00679",
+          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
         },
         {
-          "vuid": "VUID-VkBufferViewCreateInfo-buffer-00933",
-          "text": " If <code>buffer</code> was created with <code>usage</code> containing <code>VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT</code>, <code>format</code> <strong class=\"purple\">must</strong> be supported for uniform texel buffers, as specified by the <code>VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT</code> flag in <code>VkFormatProperties</code>::<code>bufferFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
+          "vuid": "VUID-vkMapMemory-size-00680",
+          "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
         },
         {
-          "vuid": "VUID-VkBufferViewCreateInfo-buffer-00934",
-          "text": " If <code>buffer</code> was created with <code>usage</code> containing <code>VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</code>, <code>format</code> <strong class=\"purple\">must</strong> be supported for storage texel buffers, as specified by the <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT</code> flag in <code>VkFormatProperties</code>::<code>bufferFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
+          "vuid": "VUID-vkMapMemory-size-00681",
+          "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to the size of the <code>memory</code> minus <code>offset</code>"
         },
         {
-          "vuid": "VUID-VkBufferViewCreateInfo-buffer-00935",
-          "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+          "vuid": "VUID-vkMapMemory-memory-00682",
+          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created with a memory type that reports <code>VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT</code>"
         },
         {
-          "vuid": "VUID-VkBufferViewCreateInfo-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO</code>"
+          "vuid": "VUID-vkMapMemory-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-VkBufferViewCreateInfo-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-vkMapMemory-memory-parameter",
+          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
         },
         {
-          "vuid": "VUID-VkBufferViewCreateInfo-flags-zerobitmask",
+          "vuid": "VUID-vkMapMemory-flags-zerobitmask",
           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
         },
         {
-          "vuid": "VUID-VkBufferViewCreateInfo-buffer-parameter",
-          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
+          "vuid": "VUID-vkMapMemory-ppData-parameter",
+          "text": " <code>ppData</code> <strong class=\"purple\">must</strong> be a valid pointer to a pointer value"
         },
         {
-          "vuid": "VUID-VkBufferViewCreateInfo-format-parameter",
-          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
+          "vuid": "VUID-vkMapMemory-memory-parent",
+          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
         }
       ],
-      "!(VK_EXT_texel_buffer_alignment)": [
+      "(VK_KHR_device_group)": [
         {
-          "vuid": "VUID-VkBufferViewCreateInfo-offset-00926",
-          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minTexelBufferOffsetAlignment</code>"
+          "vuid": "VUID-vkMapMemory-memory-00683",
+          "text": " <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated with multiple instances"
         }
-      ],
-      "(VK_EXT_texel_buffer_alignment)": [
+      ]
+    },
+    "vkFlushMappedMemoryRanges": {
+      "core": [
         {
-          "vuid": "VUID-VkBufferViewCreateInfo-offset-02749",
-          "text": " If the <a href=\"#features-texelBufferAlignment\">texelBufferAlignment</a> feature is not enabled, <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minTexelBufferOffsetAlignment</code>"
+          "vuid": "VUID-vkFlushMappedMemoryRanges-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-VkBufferViewCreateInfo-buffer-02750",
-          "text": " If the <a href=\"#features-texelBufferAlignment\">texelBufferAlignment</a> feature is enabled and if <code>buffer</code> was created with <code>usage</code> containing <code>VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</code>, <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of the lesser of <a href=\"#VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT\">VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT</a>::<code>storageTexelBufferOffsetAlignmentBytes</code> or, if <a href=\"#VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT\">VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT</a>::<code>storageTexelBufferOffsetSingleTexelAlignment</code> is <code>VK_TRUE</code>, the size of a texel of the requested <code>format</code>. If the size of a texel is a multiple of three bytes, then the size of a single component of <code>format</code> is used instead"
+          "vuid": "VUID-vkFlushMappedMemoryRanges-pMemoryRanges-parameter",
+          "text": " <code>pMemoryRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryRangeCount</code> valid <a href=\"#VkMappedMemoryRange\">VkMappedMemoryRange</a> structures"
         },
         {
-          "vuid": "VUID-VkBufferViewCreateInfo-buffer-02751",
-          "text": " If the <a href=\"#features-texelBufferAlignment\">texelBufferAlignment</a> feature is enabled and if <code>buffer</code> was created with <code>usage</code> containing <code>VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT</code>, <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of the lesser of <a href=\"#VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT\">VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT</a>::<code>uniformTexelBufferOffsetAlignmentBytes</code> or, if <a href=\"#VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT\">VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT</a>::<code>uniformTexelBufferOffsetSingleTexelAlignment</code> is <code>VK_TRUE</code>, the size of a texel of the requested <code>format</code>. If the size of a texel is a multiple of three bytes, then the size of a single component of <code>format</code> is used instead"
+          "vuid": "VUID-vkFlushMappedMemoryRanges-memoryRangeCount-arraylength",
+          "text": " <code>memoryRangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
         }
       ]
     },
-    "vkDestroyBufferView": {
+    "vkInvalidateMappedMemoryRanges": {
       "core": [
         {
-          "vuid": "VUID-vkDestroyBufferView-bufferView-00936",
-          "text": " All submitted commands that refer to <code>bufferView</code> <strong class=\"purple\">must</strong> have completed execution"
+          "vuid": "VUID-vkInvalidateMappedMemoryRanges-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-vkDestroyBufferView-bufferView-00937",
-          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>bufferView</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+          "vuid": "VUID-vkInvalidateMappedMemoryRanges-pMemoryRanges-parameter",
+          "text": " <code>pMemoryRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryRangeCount</code> valid <a href=\"#VkMappedMemoryRange\">VkMappedMemoryRange</a> structures"
         },
         {
-          "vuid": "VUID-vkDestroyBufferView-bufferView-00938",
-          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>bufferView</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-vkInvalidateMappedMemoryRanges-memoryRangeCount-arraylength",
+          "text": " <code>memoryRangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+        }
+      ]
+    },
+    "VkMappedMemoryRange": {
+      "core": [
+        {
+          "vuid": "VUID-VkMappedMemoryRange-memory-00684",
+          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be currently host mapped"
         },
         {
-          "vuid": "VUID-vkDestroyBufferView-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-VkMappedMemoryRange-size-00685",
+          "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>offset</code> and <code>size</code> <strong class=\"purple\">must</strong> specify a range contained within the currently mapped range of <code>memory</code>"
         },
         {
-          "vuid": "VUID-vkDestroyBufferView-bufferView-parameter",
-          "text": " If <code>bufferView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>bufferView</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBufferView\">VkBufferView</a> handle"
+          "vuid": "VUID-VkMappedMemoryRange-size-00686",
+          "text": " If <code>size</code> is equal to <code>VK_WHOLE_SIZE</code>, <code>offset</code> <strong class=\"purple\">must</strong> be within the currently mapped range of <code>memory</code>"
         },
         {
-          "vuid": "VUID-vkDestroyBufferView-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"
+          "vuid": "VUID-VkMappedMemoryRange-size-01389",
+          "text": " If <code>size</code> is equal to <code>VK_WHOLE_SIZE</code>, the end of the current mapping of <code>memory</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>nonCoherentAtomSize</code> bytes from the beginning of the memory object"
         },
         {
-          "vuid": "VUID-vkDestroyBufferView-bufferView-parent",
-          "text": " If <code>bufferView</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+          "vuid": "VUID-VkMappedMemoryRange-offset-00687",
+          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>nonCoherentAtomSize</code>"
+        },
+        {
+          "vuid": "VUID-VkMappedMemoryRange-size-01390",
+          "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> either be a multiple of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>nonCoherentAtomSize</code>, or <code>offset</code> plus <code>size</code> <strong class=\"purple\">must</strong> equal the size of <code>memory</code>"
+        },
+        {
+          "vuid": "VUID-VkMappedMemoryRange-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE</code>"
+        },
+        {
+          "vuid": "VUID-VkMappedMemoryRange-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+        },
+        {
+          "vuid": "VUID-VkMappedMemoryRange-memory-parameter",
+          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
         }
       ]
     },
-    "vkCreateImage": {
+    "vkUnmapMemory": {
       "core": [
         {
-          "vuid": "VUID-vkCreateImage-flags-00939",
-          "text": " If the <code>flags</code> member of <code>pCreateInfo</code> includes <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, creating this <code>VkImage</code> <strong class=\"purple\">must</strong> not cause the total required sparse memory for all currently valid sparse resources on the device to exceed <code>VkPhysicalDeviceLimits</code>::<code>sparseAddressSpaceSize</code>"
+          "vuid": "VUID-vkUnmapMemory-memory-00689",
+          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be currently host mapped"
         },
         {
-          "vuid": "VUID-vkCreateImage-device-parameter",
+          "vuid": "VUID-vkUnmapMemory-device-parameter",
           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-vkCreateImage-pCreateInfo-parameter",
-          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> structure"
-        },
-        {
-          "vuid": "VUID-vkCreateImage-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"
+          "vuid": "VUID-vkUnmapMemory-memory-parameter",
+          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
         },
         {
-          "vuid": "VUID-vkCreateImage-pImage-parameter",
-          "text": " <code>pImage</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkImage\">VkImage</a> handle"
+          "vuid": "VUID-vkUnmapMemory-memory-parent",
+          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
         }
       ]
     },
-    "VkImageCreateInfo": {
+    "vkGetDeviceMemoryCommitment": {
       "core": [
         {
-          "vuid": "VUID-VkImageCreateInfo-imageCreateMaxMipLevels-02251",
-          "text": " Each of the following values (as described in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>) <strong class=\"purple\">must</strong> not be undefined <code>imageCreateMaxMipLevels</code>, <code>imageCreateMaxArrayLayers</code>, <code>imageCreateMaxExtent</code>, and <code>imageCreateSampleCounts</code>"
+          "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-00690",
+          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created with a memory type that reports <code>VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT</code>"
         },
         {
-          "vuid": "VUID-VkImageCreateInfo-sharingMode-00941",
-          "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueFamilyIndexCount</code> <code>uint32_t</code> values"
+          "vuid": "VUID-vkGetDeviceMemoryCommitment-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-VkImageCreateInfo-sharingMode-00942",
-          "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>queueFamilyIndexCount</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>"
+          "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-parameter",
+          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
         },
         {
-          "vuid": "VUID-VkImageCreateInfo-extent-00944",
-          "text": " <code>extent.width</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+          "vuid": "VUID-vkGetDeviceMemoryCommitment-pCommittedMemoryInBytes-parameter",
+          "text": " <code>pCommittedMemoryInBytes</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceSize</code> value"
         },
         {
-          "vuid": "VUID-VkImageCreateInfo-extent-00945",
-          "text": " <code>extent.height</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
-        },
+          "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-parent",
+          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+        }
+      ]
+    },
+    "vkGetDeviceGroupPeerMemoryFeatures": {
+      "(VK_VERSION_1_1,VK_KHR_device_group)": [
         {
-          "vuid": "VUID-VkImageCreateInfo-extent-00946",
-          "text": " <code>extent.depth</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-heapIndex-00691",
+          "text": " <code>heapIndex</code> <strong class=\"purple\">must</strong> be less than <code>memoryHeapCount</code>"
         },
         {
-          "vuid": "VUID-VkImageCreateInfo-mipLevels-00947",
-          "text": " <code>mipLevels</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-localDeviceIndex-00692",
+          "text": " <code>localDeviceIndex</code> <strong class=\"purple\">must</strong> be a valid device index"
         },
         {
-          "vuid": "VUID-VkImageCreateInfo-arrayLayers-00948",
-          "text": " <code>arrayLayers</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-remoteDeviceIndex-00693",
+          "text": " <code>remoteDeviceIndex</code> <strong class=\"purple\">must</strong> be a valid device index"
         },
         {
-          "vuid": "VUID-VkImageCreateInfo-flags-00949",
-          "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>"
+          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-localDeviceIndex-00694",
+          "text": " <code>localDeviceIndex</code> <strong class=\"purple\">must</strong> not equal <code>remoteDeviceIndex</code>"
         },
         {
-          "vuid": "VUID-VkImageCreateInfo-extent-02252",
-          "text": " <code>extent.width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>imageCreateMaxExtent.width</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)"
+          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-VkImageCreateInfo-extent-02253",
-          "text": " <code>extent.height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>imageCreateMaxExtent.height</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)"
-        },
+          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-pPeerMemoryFeatures-parameter",
+          "text": " <code>pPeerMemoryFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPeerMemoryFeatureFlags\">VkPeerMemoryFeatureFlags</a> value"
+        }
+      ]
+    },
+    "vkGetDeviceMemoryOpaqueCaptureAddress": {
+      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
         {
-          "vuid": "VUID-VkImageCreateInfo-extent-02254",
-          "text": " <code>extent.depth</code> <strong class=\"purple\">must</strong> be less than or equal to <code>imageCreateMaxExtent.depth</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)"
+          "vuid": "VUID-vkGetDeviceMemoryOpaqueCaptureAddress-None-03334",
+          "text": " The <a href=\"#features-bufferDeviceAddress\">bufferDeviceAddress</a> feature <strong class=\"purple\">must</strong> be enabled"
         },
         {
-          "vuid": "VUID-VkImageCreateInfo-imageType-00954",
-          "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code> and <code>flags</code> contains <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code>, <code>extent.width</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be equal and <code>arrayLayers</code> <strong class=\"purple\">must</strong> be greater than or equal to 6"
+          "vuid": "VUID-vkGetDeviceMemoryOpaqueCaptureAddress-device-03335",
+          "text": " If <code>device</code> was created with multiple physical devices, then the <a href=\"#features-bufferDeviceAddressMultiDevice\">bufferDeviceAddressMultiDevice</a> feature <strong class=\"purple\">must</strong> be enabled"
         },
         {
-          "vuid": "VUID-VkImageCreateInfo-imageType-00956",
-          "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_1D</code>, both <code>extent.height</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>"
+          "vuid": "VUID-vkGetDeviceMemoryOpaqueCaptureAddress-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-VkImageCreateInfo-imageType-00957",
-          "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>"
-        },
+          "vuid": "VUID-vkGetDeviceMemoryOpaqueCaptureAddress-pInfo-parameter",
+          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDeviceMemoryOpaqueCaptureAddressInfo\">VkDeviceMemoryOpaqueCaptureAddressInfo</a> structure"
+        }
+      ]
+    },
+    "VkDeviceMemoryOpaqueCaptureAddressInfo": {
+      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
         {
-          "vuid": "VUID-VkImageCreateInfo-mipLevels-00958",
-          "text": " <code>mipLevels</code> <strong class=\"purple\">must</strong> be less than or equal to the number of levels in the complete mipmap chain based on <span class=\"eq\"><code>extent.width</code></span>, <span class=\"eq\"><code>extent.height</code></span>, and <span class=\"eq\"><code>extent.depth</code></span>"
+          "vuid": "VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-memory-03336",
+          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated with <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT</code>"
         },
         {
-          "vuid": "VUID-VkImageCreateInfo-mipLevels-02255",
-          "text": " <code>mipLevels</code> <strong class=\"purple\">must</strong> be less than or equal to <code>imageCreateMaxMipLevels</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)"
+          "vuid": "VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO</code>"
         },
         {
-          "vuid": "VUID-VkImageCreateInfo-arrayLayers-02256",
-          "text": " <code>arrayLayers</code> <strong class=\"purple\">must</strong> be less than or equal to <code>imageCreateMaxArrayLayers</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)"
+          "vuid": "VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+        },
+        {
+          "vuid": "VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-memory-parameter",
+          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
+        }
+      ]
+    },
+    "vkCreateBuffer": {
+      "core": [
+        {
+          "vuid": "VUID-vkCreateBuffer-flags-00911",
+          "text": " If the <code>flags</code> member of <code>pCreateInfo</code> includes <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>, creating this <code>VkBuffer</code> <strong class=\"purple\">must</strong> not cause the total required sparse memory for all currently valid sparse resources on the device to exceed <code>VkPhysicalDeviceLimits</code>::<code>sparseAddressSpaceSize</code>"
+        },
+        {
+          "vuid": "VUID-vkCreateBuffer-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+        },
+        {
+          "vuid": "VUID-vkCreateBuffer-pCreateInfo-parameter",
+          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBufferCreateInfo\">VkBufferCreateInfo</a> structure"
+        },
+        {
+          "vuid": "VUID-vkCreateBuffer-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"
+        },
+        {
+          "vuid": "VUID-vkCreateBuffer-pBuffer-parameter",
+          "text": " <code>pBuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkBuffer\">VkBuffer</a> handle"
+        }
+      ]
+    },
+    "VkBufferCreateInfo": {
+      "core": [
+        {
+          "vuid": "VUID-VkBufferCreateInfo-size-00912",
+          "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+        },
+        {
+          "vuid": "VUID-VkBufferCreateInfo-sharingMode-00913",
+          "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueFamilyIndexCount</code> <code>uint32_t</code> values"
+        },
+        {
+          "vuid": "VUID-VkBufferCreateInfo-sharingMode-00914",
+          "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>queueFamilyIndexCount</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>"
+        },
+        {
+          "vuid": "VUID-VkBufferCreateInfo-flags-00915",
+          "text": " If the <a href=\"#features-sparseBinding\">sparse bindings</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>"
+        },
+        {
+          "vuid": "VUID-VkBufferCreateInfo-flags-00916",
+          "text": " If the <a href=\"#features-sparseResidencyBuffer\">sparse buffer residency</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>"
+        },
+        {
+          "vuid": "VUID-VkBufferCreateInfo-flags-00917",
+          "text": " If the <a href=\"#features-sparseResidencyAliased\">sparse aliased residency</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code>"
+        },
+        {
+          "vuid": "VUID-VkBufferCreateInfo-flags-00918",
+          "text": " If <code>flags</code> contains <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> or <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code>, it <strong class=\"purple\">must</strong> also contain <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>"
+        },
+        {
+          "vuid": "VUID-VkBufferCreateInfo-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO</code>"
+        },
+        {
+          "vuid": "VUID-VkBufferCreateInfo-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=\"#VkBufferDeviceAddressCreateInfoEXT\">VkBufferDeviceAddressCreateInfoEXT</a>, <a href=\"#VkBufferOpaqueCaptureAddressCreateInfo\">VkBufferOpaqueCaptureAddressCreateInfo</a>, <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>, or <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>"
+        },
+        {
+          "vuid": "VUID-VkBufferCreateInfo-sType-unique",
+          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
+        },
+        {
+          "vuid": "VUID-VkBufferCreateInfo-flags-parameter",
+          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferCreateFlagBits\">VkBufferCreateFlagBits</a> values"
+        },
+        {
+          "vuid": "VUID-VkBufferCreateInfo-usage-parameter",
+          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferUsageFlagBits\">VkBufferUsageFlagBits</a> values"
+        },
+        {
+          "vuid": "VUID-VkBufferCreateInfo-usage-requiredbitmask",
+          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
+        },
+        {
+          "vuid": "VUID-VkBufferCreateInfo-sharingMode-parameter",
+          "text": " <code>sharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value"
+        }
+      ],
+      "!(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
+        {
+          "vuid": "VUID-VkBufferCreateInfo-sharingMode-01391",
+          "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> for the <code>physicalDevice</code> that was used to create <code>device</code>"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
+        {
+          "vuid": "VUID-VkBufferCreateInfo-sharingMode-01419",
+          "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by either <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> or <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties2\">vkGetPhysicalDeviceQueueFamilyProperties2</a> for the <code>physicalDevice</code> that was used to create <code>device</code>"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
+        {
+          "vuid": "VUID-VkBufferCreateInfo-pNext-00920",
+          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a> structure, its <code>handleTypes</code> member <strong class=\"purple\">must</strong> only contain bits that are also in <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>::<code>externalMemoryProperties.compatibleHandleTypes</code>, as returned by <a href=\"#vkGetPhysicalDeviceExternalBufferProperties\">vkGetPhysicalDeviceExternalBufferProperties</a> with <code>pExternalBufferInfo-&gt;handleType</code> equal to any one of the handle types specified in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code>"
+        }
+      ],
+      "(VK_VERSION_1_1)": [
+        {
+          "vuid": "VUID-VkBufferCreateInfo-flags-01887",
+          "text": " If the protected memory feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_PROTECTED_BIT</code>"
+        },
+        {
+          "vuid": "VUID-VkBufferCreateInfo-None-01888",
+          "text": " If any of the bits <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code> are set, <code>VK_BUFFER_CREATE_PROTECTED_BIT</code> <strong class=\"purple\">must</strong> not also be set"
+        }
+      ],
+      "(VK_NV_dedicated_allocation)": [
+        {
+          "vuid": "VUID-VkBufferCreateInfo-pNext-01571",
+          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a> structure, and the <code>dedicatedAllocation</code> member of the chained structure is <code>VK_TRUE</code>, then <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code>"
+        }
+      ],
+      "(VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address)+(VK_EXT_buffer_device_address)": [
+        {
+          "vuid": "VUID-VkBufferCreateInfo-deviceAddress-02604",
+          "text": " If <a href=\"#VkBufferDeviceAddressCreateInfoEXT\">VkBufferDeviceAddressCreateInfoEXT</a>::<code>deviceAddress</code> is not zero, <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code>"
+        }
+      ],
+      "(VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address)+(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
+        {
+          "vuid": "VUID-VkBufferCreateInfo-opaqueCaptureAddress-03337",
+          "text": " If <a href=\"#VkBufferOpaqueCaptureAddressCreateInfo\">VkBufferOpaqueCaptureAddressCreateInfo</a>::<code>opaqueCaptureAddress</code> is not zero, <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code>"
+        }
+      ],
+      "(VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address)": [
+        {
+          "vuid": "VUID-VkBufferCreateInfo-flags-03338",
+          "text": " If <code>flags</code> includes <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code>, the <a href=\"#features-bufferDeviceAddressCaptureReplay\">bufferDeviceAddressCaptureReplay</a> or <a href=\"#features-bufferDeviceAddressCaptureReplayEXT\"><code>VkPhysicalDeviceBufferDeviceAddressFeaturesEXT</code>::<code>bufferDeviceAddressCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled"
+        }
+      ]
+    },
+    "VkDedicatedAllocationBufferCreateInfoNV": {
+      "(VK_NV_dedicated_allocation)": [
+        {
+          "vuid": "VUID-VkDedicatedAllocationBufferCreateInfoNV-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV</code>"
+        }
+      ]
+    },
+    "VkExternalMemoryBufferCreateInfo": {
+      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
+        {
+          "vuid": "VUID-VkExternalMemoryBufferCreateInfo-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO</code>"
+        },
+        {
+          "vuid": "VUID-VkExternalMemoryBufferCreateInfo-handleTypes-parameter",
+          "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values"
+        }
+      ]
+    },
+    "VkBufferOpaqueCaptureAddressCreateInfo": {
+      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
+        {
+          "vuid": "VUID-VkBufferOpaqueCaptureAddressCreateInfo-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO</code>"
+        }
+      ]
+    },
+    "VkBufferDeviceAddressCreateInfoEXT": {
+      "(VK_EXT_buffer_device_address)": [
+        {
+          "vuid": "VUID-VkBufferDeviceAddressCreateInfoEXT-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT</code>"
+        }
+      ]
+    },
+    "vkDestroyBuffer": {
+      "core": [
+        {
+          "vuid": "VUID-vkDestroyBuffer-buffer-00922",
+          "text": " All submitted commands that refer to <code>buffer</code>, either directly or via a <code>VkBufferView</code>, <strong class=\"purple\">must</strong> have completed execution"
+        },
+        {
+          "vuid": "VUID-vkDestroyBuffer-buffer-00923",
+          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>buffer</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+        },
+        {
+          "vuid": "VUID-vkDestroyBuffer-buffer-00924",
+          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>buffer</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+        },
+        {
+          "vuid": "VUID-vkDestroyBuffer-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+        },
+        {
+          "vuid": "VUID-vkDestroyBuffer-buffer-parameter",
+          "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
+        },
+        {
+          "vuid": "VUID-vkDestroyBuffer-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"
+        },
+        {
+          "vuid": "VUID-vkDestroyBuffer-buffer-parent",
+          "text": " If <code>buffer</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+        }
+      ]
+    },
+    "vkCreateBufferView": {
+      "core": [
+        {
+          "vuid": "VUID-vkCreateBufferView-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+        },
+        {
+          "vuid": "VUID-vkCreateBufferView-pCreateInfo-parameter",
+          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBufferViewCreateInfo\">VkBufferViewCreateInfo</a> structure"
+        },
+        {
+          "vuid": "VUID-vkCreateBufferView-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"
+        },
+        {
+          "vuid": "VUID-vkCreateBufferView-pView-parameter",
+          "text": " <code>pView</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkBufferView\">VkBufferView</a> handle"
+        }
+      ]
+    },
+    "VkBufferViewCreateInfo": {
+      "core": [
+        {
+          "vuid": "VUID-VkBufferViewCreateInfo-offset-00925",
+          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>"
+        },
+        {
+          "vuid": "VUID-VkBufferViewCreateInfo-range-00928",
+          "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>range</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+        },
+        {
+          "vuid": "VUID-VkBufferViewCreateInfo-range-00929",
+          "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>range</code> <strong class=\"purple\">must</strong> be an integer multiple of the texel block size of <code>format</code>"
+        },
+        {
+          "vuid": "VUID-VkBufferViewCreateInfo-range-00930",
+          "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, the number of texel buffer elements given by <span class=\"eq\">({lfloor}<code>range</code> / (texel block size){rfloor} {times} (texels per block))</span> where texel block size and texels per block are as defined in the <a href=\"#formats-compatibility\">Compatible Formats</a> table for <code>format</code>, <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxTexelBufferElements</code>"
+        },
+        {
+          "vuid": "VUID-VkBufferViewCreateInfo-offset-00931",
+          "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, the sum of <code>offset</code> and <code>range</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
+        },
+        {
+          "vuid": "VUID-VkBufferViewCreateInfo-range-04059",
+          "text": " If <code>range</code> is equal to <code>VK_WHOLE_SIZE</code>, the number of texel buffer elements given by <span class=\"eq\">({lfloor}(size - <code>offset</code>) / (texel block size){rfloor} {times} (texels per block))</span> where size is the size of <code>buffer</code>, and texel block size and texels per block are as defined in the <a href=\"#formats-compatibility\">Compatible Formats</a> table for <code>format</code>, <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxTexelBufferElements</code>"
+        },
+        {
+          "vuid": "VUID-VkBufferViewCreateInfo-buffer-00932",
+          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing at least one of <code>VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT</code> or <code>VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</code>"
+        },
+        {
+          "vuid": "VUID-VkBufferViewCreateInfo-buffer-00933",
+          "text": " If <code>buffer</code> was created with <code>usage</code> containing <code>VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT</code>, <code>format</code> <strong class=\"purple\">must</strong> be supported for uniform texel buffers, as specified by the <code>VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT</code> flag in <code>VkFormatProperties</code>::<code>bufferFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
+        },
+        {
+          "vuid": "VUID-VkBufferViewCreateInfo-buffer-00934",
+          "text": " If <code>buffer</code> was created with <code>usage</code> containing <code>VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</code>, <code>format</code> <strong class=\"purple\">must</strong> be supported for storage texel buffers, as specified by the <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT</code> flag in <code>VkFormatProperties</code>::<code>bufferFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
+        },
+        {
+          "vuid": "VUID-VkBufferViewCreateInfo-buffer-00935",
+          "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+        },
+        {
+          "vuid": "VUID-VkBufferViewCreateInfo-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO</code>"
+        },
+        {
+          "vuid": "VUID-VkBufferViewCreateInfo-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+        },
+        {
+          "vuid": "VUID-VkBufferViewCreateInfo-flags-zerobitmask",
+          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+        },
+        {
+          "vuid": "VUID-VkBufferViewCreateInfo-buffer-parameter",
+          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
+        },
+        {
+          "vuid": "VUID-VkBufferViewCreateInfo-format-parameter",
+          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
+        }
+      ],
+      "!(VK_EXT_texel_buffer_alignment)": [
+        {
+          "vuid": "VUID-VkBufferViewCreateInfo-offset-00926",
+          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minTexelBufferOffsetAlignment</code>"
+        }
+      ],
+      "(VK_EXT_texel_buffer_alignment)": [
+        {
+          "vuid": "VUID-VkBufferViewCreateInfo-offset-02749",
+          "text": " If the <a href=\"#features-texelBufferAlignment\">texelBufferAlignment</a> feature is not enabled, <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minTexelBufferOffsetAlignment</code>"
+        },
+        {
+          "vuid": "VUID-VkBufferViewCreateInfo-buffer-02750",
+          "text": " If the <a href=\"#features-texelBufferAlignment\">texelBufferAlignment</a> feature is enabled and if <code>buffer</code> was created with <code>usage</code> containing <code>VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</code>, <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of the lesser of <a href=\"#VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT\">VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT</a>::<code>storageTexelBufferOffsetAlignmentBytes</code> or, if <a href=\"#VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT\">VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT</a>::<code>storageTexelBufferOffsetSingleTexelAlignment</code> is <code>VK_TRUE</code>, the size of a texel of the requested <code>format</code>. If the size of a texel is a multiple of three bytes, then the size of a single component of <code>format</code> is used instead"
+        },
+        {
+          "vuid": "VUID-VkBufferViewCreateInfo-buffer-02751",
+          "text": " If the <a href=\"#features-texelBufferAlignment\">texelBufferAlignment</a> feature is enabled and if <code>buffer</code> was created with <code>usage</code> containing <code>VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT</code>, <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of the lesser of <a href=\"#VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT\">VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT</a>::<code>uniformTexelBufferOffsetAlignmentBytes</code> or, if <a href=\"#VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT\">VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT</a>::<code>uniformTexelBufferOffsetSingleTexelAlignment</code> is <code>VK_TRUE</code>, the size of a texel of the requested <code>format</code>. If the size of a texel is a multiple of three bytes, then the size of a single component of <code>format</code> is used instead"
+        }
+      ]
+    },
+    "vkDestroyBufferView": {
+      "core": [
+        {
+          "vuid": "VUID-vkDestroyBufferView-bufferView-00936",
+          "text": " All submitted commands that refer to <code>bufferView</code> <strong class=\"purple\">must</strong> have completed execution"
+        },
+        {
+          "vuid": "VUID-vkDestroyBufferView-bufferView-00937",
+          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>bufferView</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+        },
+        {
+          "vuid": "VUID-vkDestroyBufferView-bufferView-00938",
+          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>bufferView</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+        },
+        {
+          "vuid": "VUID-vkDestroyBufferView-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+        },
+        {
+          "vuid": "VUID-vkDestroyBufferView-bufferView-parameter",
+          "text": " If <code>bufferView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>bufferView</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBufferView\">VkBufferView</a> handle"
+        },
+        {
+          "vuid": "VUID-vkDestroyBufferView-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"
+        },
+        {
+          "vuid": "VUID-vkDestroyBufferView-bufferView-parent",
+          "text": " If <code>bufferView</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+        }
+      ]
+    },
+    "vkCreateImage": {
+      "core": [
+        {
+          "vuid": "VUID-vkCreateImage-flags-00939",
+          "text": " If the <code>flags</code> member of <code>pCreateInfo</code> includes <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, creating this <code>VkImage</code> <strong class=\"purple\">must</strong> not cause the total required sparse memory for all currently valid sparse resources on the device to exceed <code>VkPhysicalDeviceLimits</code>::<code>sparseAddressSpaceSize</code>"
+        },
+        {
+          "vuid": "VUID-vkCreateImage-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+        },
+        {
+          "vuid": "VUID-vkCreateImage-pCreateInfo-parameter",
+          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> structure"
+        },
+        {
+          "vuid": "VUID-vkCreateImage-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"
+        },
+        {
+          "vuid": "VUID-vkCreateImage-pImage-parameter",
+          "text": " <code>pImage</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkImage\">VkImage</a> handle"
+        }
+      ]
+    },
+    "VkImageCreateInfo": {
+      "core": [
+        {
+          "vuid": "VUID-VkImageCreateInfo-imageCreateMaxMipLevels-02251",
+          "text": " Each of the following values (as described in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>) <strong class=\"purple\">must</strong> not be undefined <code>imageCreateMaxMipLevels</code>, <code>imageCreateMaxArrayLayers</code>, <code>imageCreateMaxExtent</code>, and <code>imageCreateSampleCounts</code>"
+        },
+        {
+          "vuid": "VUID-VkImageCreateInfo-sharingMode-00941",
+          "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueFamilyIndexCount</code> <code>uint32_t</code> values"
+        },
+        {
+          "vuid": "VUID-VkImageCreateInfo-sharingMode-00942",
+          "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>queueFamilyIndexCount</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>"
+        },
+        {
+          "vuid": "VUID-VkImageCreateInfo-extent-00944",
+          "text": " <code>extent.width</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+        },
+        {
+          "vuid": "VUID-VkImageCreateInfo-extent-00945",
+          "text": " <code>extent.height</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+        },
+        {
+          "vuid": "VUID-VkImageCreateInfo-extent-00946",
+          "text": " <code>extent.depth</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+        },
+        {
+          "vuid": "VUID-VkImageCreateInfo-mipLevels-00947",
+          "text": " <code>mipLevels</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+        },
+        {
+          "vuid": "VUID-VkImageCreateInfo-arrayLayers-00948",
+          "text": " <code>arrayLayers</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+        },
+        {
+          "vuid": "VUID-VkImageCreateInfo-flags-00949",
+          "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>"
+        },
+        {
+          "vuid": "VUID-VkImageCreateInfo-extent-02252",
+          "text": " <code>extent.width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>imageCreateMaxExtent.width</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)"
+        },
+        {
+          "vuid": "VUID-VkImageCreateInfo-extent-02253",
+          "text": " <code>extent.height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>imageCreateMaxExtent.height</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)"
+        },
+        {
+          "vuid": "VUID-VkImageCreateInfo-extent-02254",
+          "text": " <code>extent.depth</code> <strong class=\"purple\">must</strong> be less than or equal to <code>imageCreateMaxExtent.depth</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)"
+        },
+        {
+          "vuid": "VUID-VkImageCreateInfo-imageType-00954",
+          "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code> and <code>flags</code> contains <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code>, <code>extent.width</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be equal and <code>arrayLayers</code> <strong class=\"purple\">must</strong> be greater than or equal to 6"
+        },
+        {
+          "vuid": "VUID-VkImageCreateInfo-imageType-00956",
+          "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_1D</code>, both <code>extent.height</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>"
+        },
+        {
+          "vuid": "VUID-VkImageCreateInfo-imageType-00957",
+          "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>"
+        },
+        {
+          "vuid": "VUID-VkImageCreateInfo-mipLevels-00958",
+          "text": " <code>mipLevels</code> <strong class=\"purple\">must</strong> be less than or equal to the number of levels in the complete mipmap chain based on <span class=\"eq\"><code>extent.width</code></span>, <span class=\"eq\"><code>extent.height</code></span>, and <span class=\"eq\"><code>extent.depth</code></span>"
+        },
+        {
+          "vuid": "VUID-VkImageCreateInfo-mipLevels-02255",
+          "text": " <code>mipLevels</code> <strong class=\"purple\">must</strong> be less than or equal to <code>imageCreateMaxMipLevels</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)"
+        },
+        {
+          "vuid": "VUID-VkImageCreateInfo-arrayLayers-02256",
+          "text": " <code>arrayLayers</code> <strong class=\"purple\">must</strong> be less than or equal to <code>imageCreateMaxArrayLayers</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)"
         },
         {
           "vuid": "VUID-VkImageCreateInfo-imageType-00961",
           "text": " If <code>image</code> was not created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, or if the <code>format</code> of the <code>image</code> is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar</a> format and if <code>subresourceRange.aspectMask</code> is <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, <code>format</code> <strong class=\"purple\">must</strong> be identical to the <code>format</code> used to create <code>image</code>"
         },
         {
+          "vuid": "VUID-VkImageViewCreateInfo-format-04724",
+          "text": " If <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y′C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>, then the pNext chain <strong class=\"purple\">must</strong> include a <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a> structure with a conversion value other than VK_NULL_HANDLE"
+        },
+        {
           "vuid": "VUID-VkImageViewCreateInfo-format-04714",
           "text": " If <code>format</code> has a <code>_422</code> or <code>_420</code> suffix then <code>image</code> <strong class=\"purple\">must</strong> have been created with a width that is a multiple of 2"
         },
         }
       ]
     },
-    "vkGetBufferMemoryRequirements": {
-      "core": [
+    "vkCreateAccelerationStructureNV": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
         {
-          "vuid": "VUID-vkGetBufferMemoryRequirements-device-parameter",
+          "vuid": "VUID-vkCreateAccelerationStructureNV-device-parameter",
           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-vkGetBufferMemoryRequirements-buffer-parameter",
-          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
+          "vuid": "VUID-vkCreateAccelerationStructureNV-pCreateInfo-parameter",
+          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureCreateInfoNV\">VkAccelerationStructureCreateInfoNV</a> structure"
         },
         {
-          "vuid": "VUID-vkGetBufferMemoryRequirements-pMemoryRequirements-parameter",
-          "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure"
+          "vuid": "VUID-vkCreateAccelerationStructureNV-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"
         },
         {
-          "vuid": "VUID-vkGetBufferMemoryRequirements-buffer-parent",
-          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+          "vuid": "VUID-vkCreateAccelerationStructureNV-pAccelerationStructure-parameter",
+          "text": " <code>pAccelerationStructure</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle"
         }
       ]
     },
-    "vkGetImageMemoryRequirements": {
-      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
-        {
-          "vuid": "VUID-vkGetImageMemoryRequirements-image-01588",
-          "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> flag set"
-        }
-      ],
-      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
-        {
-          "vuid": "VUID-vkGetImageMemoryRequirements-image-04004",
-          "text": " If <code>image</code> was created with the <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> external memory handle type, then <code>image</code> <strong class=\"purple\">must</strong> be bound to memory"
-        }
-      ],
-      "core": [
+    "VkAccelerationStructureCreateInfoNV": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
         {
-          "vuid": "VUID-vkGetImageMemoryRequirements-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-VkAccelerationStructureCreateInfoNV-compactedSize-02421",
+          "text": " If <code>compactedSize</code> is not <code>0</code> then both <code>info.geometryCount</code> and <code>info.instanceCount</code> <strong class=\"purple\">must</strong> be <code>0</code>"
         },
         {
-          "vuid": "VUID-vkGetImageMemoryRequirements-image-parameter",
-          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
+          "vuid": "VUID-VkAccelerationStructureCreateInfoNV-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV</code>"
         },
         {
-          "vuid": "VUID-vkGetImageMemoryRequirements-pMemoryRequirements-parameter",
-          "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure"
+          "vuid": "VUID-VkAccelerationStructureCreateInfoNV-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-vkGetImageMemoryRequirements-image-parent",
-          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+          "vuid": "VUID-VkAccelerationStructureCreateInfoNV-info-parameter",
+          "text": " <code>info</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a> structure"
         }
       ]
     },
-    "vkGetBufferMemoryRequirements2": {
-      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
+    "VkAccelerationStructureInfoNV": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
         {
-          "vuid": "VUID-vkGetBufferMemoryRequirements2-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-VkAccelerationStructureInfoNV-geometryCount-02422",
+          "text": " <code>geometryCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxGeometryCount</code>"
         },
         {
-          "vuid": "VUID-vkGetBufferMemoryRequirements2-pInfo-parameter",
-          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBufferMemoryRequirementsInfo2\">VkBufferMemoryRequirementsInfo2</a> structure"
+          "vuid": "VUID-VkAccelerationStructureInfoNV-instanceCount-02423",
+          "text": " <code>instanceCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxInstanceCount</code>"
         },
         {
-          "vuid": "VUID-vkGetBufferMemoryRequirements2-pMemoryRequirements-parameter",
-          "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements2\">VkMemoryRequirements2</a> structure"
-        }
-      ]
-    },
-    "VkBufferMemoryRequirementsInfo2": {
-      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
-        {
-          "vuid": "VUID-VkBufferMemoryRequirementsInfo2-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2</code>"
+          "vuid": "VUID-VkAccelerationStructureInfoNV-maxTriangleCount-02424",
+          "text": " The total number of triangles in all geometries <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxTriangleCount</code>"
         },
         {
-          "vuid": "VUID-VkBufferMemoryRequirementsInfo2-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-VkAccelerationStructureInfoNV-type-02425",
+          "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV</code> then <code>geometryCount</code> <strong class=\"purple\">must</strong> be <code>0</code>"
         },
         {
-          "vuid": "VUID-VkBufferMemoryRequirementsInfo2-buffer-parameter",
-          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
-        }
-      ]
-    },
-    "vkGetImageMemoryRequirements2": {
-      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
-        {
-          "vuid": "VUID-vkGetImageMemoryRequirements2-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-VkAccelerationStructureInfoNV-type-02426",
+          "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV</code> then <code>instanceCount</code> <strong class=\"purple\">must</strong> be <code>0</code>"
         },
         {
-          "vuid": "VUID-vkGetImageMemoryRequirements2-pInfo-parameter",
-          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
+          "vuid": "VUID-VkAccelerationStructureInfoNV-type-02786",
+          "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV</code> then the <code>geometryType</code> member of each geometry in <code>pGeometries</code> <strong class=\"purple\">must</strong> be the same"
         },
         {
-          "vuid": "VUID-vkGetImageMemoryRequirements2-pMemoryRequirements-parameter",
-          "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements2\">VkMemoryRequirements2</a> structure"
-        }
-      ]
-    },
-    "VkImageMemoryRequirementsInfo2": {
-      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
-        {
-          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01589",
-          "text": " If <code>image</code> was created with a <em>multi-planar</em> format and the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> flag, there <strong class=\"purple\">must</strong> be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> included in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
+          "vuid": "VUID-VkAccelerationStructureInfoNV-flags-02592",
+          "text": " If <code>flags</code> has the <code>VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV</code> bit set, then it <strong class=\"purple\">must</strong> not have the <code>VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV</code> bit set"
         },
         {
-          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01590",
-          "text": " If <code>image</code> was not created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> flag, there <strong class=\"purple\">must</strong> not be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> included in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
-        }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [
-        {
-          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-02279",
-          "text": " If <code>image</code> was created with <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> and with <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then there <strong class=\"purple\">must</strong> be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> included in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
+          "vuid": "VUID-VkAccelerationStructureInfoNV-scratch-02781",
+          "text": " <code>scratch</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_RAY_TRACING_BIT_NV</code> usage flag"
         },
         {
-          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-02280",
-          "text": " If <code>image</code> was created with a single-plane format and with any <code>tiling</code> other than <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then there <strong class=\"purple\">must</strong> not be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> included in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
-        }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+!(VK_EXT_image_drm_format_modifier)": [
-        {
-          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01591",
-          "text": " If <code>image</code> was created with a single-plane format, there <strong class=\"purple\">must</strong> not be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> included in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
-        }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
-        {
-          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01897",
-          "text": " If <code>image</code> was created with the <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> external memory handle type, then <code>image</code> <strong class=\"purple\">must</strong> be bound to memory"
-        }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
-        {
-          "vuid": "VUID-VkImageMemoryRequirementsInfo2-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2</code>"
+          "vuid": "VUID-VkAccelerationStructureInfoNV-instanceData-02782",
+          "text": " If <code>instanceData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>instanceData</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_RAY_TRACING_BIT_NV</code> usage flag"
         },
         {
-          "vuid": "VUID-VkImageMemoryRequirementsInfo2-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=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a>"
+          "vuid": "VUID-VkAccelerationStructureInfoNV-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV</code>"
         },
         {
-          "vuid": "VUID-VkImageMemoryRequirementsInfo2-sType-unique",
-          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
+          "vuid": "VUID-VkAccelerationStructureInfoNV-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-parameter",
-          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
-        }
-      ]
-    },
-    "VkImagePlaneMemoryRequirementsInfo": {
-      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
-        {
-          "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02281",
-          "text": " If the image&#8217;s <code>tiling</code> is <code>VK_IMAGE_TILING_LINEAR</code> or <code>VK_IMAGE_TILING_OPTIMAL</code>, then <code>planeAspect</code> <strong class=\"purple\">must</strong> be a single valid <em>format plane</em> for the image (that is, for a two-plane image <code>planeAspect</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, and for a three-plane image <code>planeAspect</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>)"
+          "vuid": "VUID-VkAccelerationStructureInfoNV-type-parameter",
+          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureTypeNV\">VkAccelerationStructureTypeNV</a> value"
         },
         {
-          "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO</code>"
+          "vuid": "VUID-VkAccelerationStructureInfoNV-flags-parameter",
+          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBuildAccelerationStructureFlagBitsNV\">VkBuildAccelerationStructureFlagBitsNV</a> values"
         },
         {
-          "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-parameter",
-          "text": " <code>planeAspect</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> value"
+          "vuid": "VUID-VkAccelerationStructureInfoNV-pGeometries-parameter",
+          "text": " If <code>geometryCount</code> is not <code>0</code>, <code>pGeometries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>geometryCount</code> valid <a href=\"#VkGeometryNV\">VkGeometryNV</a> structures"
         }
       ],
-      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)+(VK_KHR_acceleration_structure)": [
         {
-          "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02282",
-          "text": " If the image&#8217;s <code>tiling</code> is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then <code>planeAspect</code> <strong class=\"purple\">must</strong> be a single valid <em>memory plane</em> for the image (that is, <code>aspectMask</code> <strong class=\"purple\">must</strong> specify a plane index that is less than the <a href=\"#VkDrmFormatModifierPropertiesEXT\">VkDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifierPlaneCount</code> associated with the image&#8217;s <code>format</code> and <a href=\"#VkImageDrmFormatModifierPropertiesEXT\">VkImageDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifier</code>)"
+          "vuid": "VUID-VkAccelerationStructureInfoNV-type-04623",
+          "text": " <code>type</code> <strong class=\"purple\">must</strong> not be <code>VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR</code>"
         }
       ]
     },
-    "VkMemoryRequirements2": {
-      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
+    "vkCreateAccelerationStructureKHR": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
         {
-          "vuid": "VUID-VkMemoryRequirements2-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2</code>"
+          "vuid": "VUID-vkCreateAccelerationStructureKHR-accelerationStructure-03611",
+          "text": " The <a href=\"#features-accelerationStructure\"><code>accelerationStructure</code></a> feature <strong class=\"purple\">must</strong> be enabled"
         },
         {
-          "vuid": "VUID-VkMemoryRequirements2-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=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>"
+          "vuid": "VUID-vkCreateAccelerationStructureKHR-deviceAddress-03488",
+          "text": " If <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>deviceAddress</code> is not zero, the <a href=\"#features-accelerationStructureCaptureReplay\"><code>accelerationStructureCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled"
         },
         {
-          "vuid": "VUID-VkMemoryRequirements2-sType-unique",
-          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
-        }
-      ]
-    },
-    "VkMemoryDedicatedRequirements": {
-      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
+          "vuid": "VUID-vkCreateAccelerationStructureKHR-device-03489",
+          "text": " If <code>device</code> was created with multiple physical devices, then the <a href=\"#features-bufferDeviceAddressMultiDevice\">bufferDeviceAddressMultiDevice</a> feature <strong class=\"purple\">must</strong> be enabled"
+        },
         {
-          "vuid": "VUID-VkMemoryDedicatedRequirements-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS</code>"
+          "vuid": "VUID-vkCreateAccelerationStructureKHR-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+        },
+        {
+          "vuid": "VUID-vkCreateAccelerationStructureKHR-pCreateInfo-parameter",
+          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a> structure"
+        },
+        {
+          "vuid": "VUID-vkCreateAccelerationStructureKHR-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"
+        },
+        {
+          "vuid": "VUID-vkCreateAccelerationStructureKHR-pAccelerationStructure-parameter",
+          "text": " <code>pAccelerationStructure</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
         }
       ]
     },
-    "vkBindBufferMemory": {
-      "core": [
+    "VkAccelerationStructureCreateInfoKHR": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
         {
-          "vuid": "VUID-vkBindBufferMemory-buffer-01029",
-          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
+          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-deviceAddress-03612",
+          "text": " If <code>deviceAddress</code> is not zero, <code>createFlags</code> <strong class=\"purple\">must</strong> include <code>VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR</code>"
         },
         {
-          "vuid": "VUID-vkBindBufferMemory-buffer-01030",
-          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
+          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-createFlags-03613",
+          "text": " If <code>createFlags</code> includes <code>VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR</code>, <a href=\"#VkPhysicalDeviceAccelerationStructureFeaturesKHR\">VkPhysicalDeviceAccelerationStructureFeaturesKHR</a>::<code>accelerationStructureCaptureReplay</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>"
         },
         {
-          "vuid": "VUID-vkBindBufferMemory-memoryOffset-01031",
-          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
+          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-buffer-03614",
+          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing <code>VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR</code>"
         },
         {
-          "vuid": "VUID-vkBindBufferMemory-memory-01035",
-          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code>"
+          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-buffer-03615",
+          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not have been created with <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>"
         },
         {
-          "vuid": "VUID-vkBindBufferMemory-memoryOffset-01036",
-          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code>"
+          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-offset-03616",
+          "text": " The sum of <code>offset</code> and <code>size</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>"
         },
         {
-          "vuid": "VUID-vkBindBufferMemory-size-01037",
-          "text": " The <code>size</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>"
+          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-offset-03734",
+          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>256</code> bytes"
         },
         {
-          "vuid": "VUID-vkBindBufferMemory-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR</code>"
         },
         {
-          "vuid": "VUID-vkBindBufferMemory-buffer-parameter",
-          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
+          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-vkBindBufferMemory-memory-parameter",
-          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
+          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-createFlags-parameter",
+          "text": " <code>createFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccelerationStructureCreateFlagBitsKHR\">VkAccelerationStructureCreateFlagBitsKHR</a> values"
         },
         {
-          "vuid": "VUID-vkBindBufferMemory-buffer-parent",
-          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-buffer-parameter",
+          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
         },
         {
-          "vuid": "VUID-vkBindBufferMemory-memory-parent",
-          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-type-parameter",
+          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureTypeKHR\">VkAccelerationStructureTypeKHR</a> value"
         }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
+      ]
+    },
+    "vkGetAccelerationStructureBuildSizesKHR": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
         {
-          "vuid": "VUID-vkBindBufferMemory-buffer-01444",
-          "text": " If <code>buffer</code> requires a dedicated allocation(as reported by <a href=\"#vkGetBufferMemoryRequirements2\">vkGetBufferMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::requiresDedicatedAllocation for <code>buffer</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> equal to <code>buffer</code>"
+          "vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-rayTracingPipeline-03617",
+          "text": " The <a href=\"#features-rayTracingPipeline\"><code>rayTracingPipeline</code></a> or <a href=\"#features-rayQuery\"><code>rayQuery</code></a> feature <strong class=\"purple\">must</strong> be enabled"
         },
         {
-          "vuid": "VUID-vkBindBufferMemory-memory-01508",
-          "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>buffer</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code>, and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
-        }
-      ],
-      "(VK_VERSION_1_1)": [
-        {
-          "vuid": "VUID-vkBindBufferMemory-None-01898",
-          "text": " If buffer was created with the <code>VK_BUFFER_CREATE_PROTECTED_BIT</code> bit set, the buffer <strong class=\"purple\">must</strong> be bound to a memory object allocated with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>"
+          "vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-device-03618",
+          "text": " If <code>device</code> was created with multiple physical devices, then the <a href=\"#features-bufferDeviceAddressMultiDevice\">bufferDeviceAddressMultiDevice</a> feature <strong class=\"purple\">must</strong> be enabled"
         },
         {
-          "vuid": "VUID-vkBindBufferMemory-None-01899",
-          "text": " If buffer was created with the <code>VK_BUFFER_CREATE_PROTECTED_BIT</code> bit not set, the buffer <strong class=\"purple\">must</strong> not be bound to a memory object created with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>"
-        }
-      ],
-      "(VK_NV_dedicated_allocation)": [
-        {
-          "vuid": "VUID-vkBindBufferMemory-buffer-01038",
-          "text": " If <code>buffer</code> was created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>::<code>buffer</code> equal to a buffer handle created with identical creation parameters to <code>buffer</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
-        }
-      ],
-      "(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
+          "vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-pBuildInfo-03619",
+          "text": " If <code>pBuildInfo-&gt;geometryCount</code> is not <code>0</code>, <code>pMaxPrimitiveCounts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pBuildInfo-&gt;geometryCount</code> <code>uint32_t</code> values"
+        },
         {
-          "vuid": "VUID-vkBindBufferMemory-buffer-01039",
-          "text": " If <code>buffer</code> was not created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image"
-        }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
+          "vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-pBuildInfo-03785",
+          "text": " If <code>pBuildInfo-&gt;pGeometries</code> or <code>pBuildInfo-&gt;ppGeometries</code> has a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, each <code>pMaxPrimitiveCounts</code>[i] <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>maxInstanceCount</code>"
+        },
         {
-          "vuid": "VUID-vkBindBufferMemory-memory-02726",
-          "text": " If the value of <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> used to allocate <code>memory</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> include at least one of the handles set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created"
-        }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_external_memory)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
+          "vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+        },
         {
-          "vuid": "VUID-vkBindBufferMemory-memory-02727",
-          "text": " If <code>memory</code> was created by a memory import operation, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created"
-        }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
+          "vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-buildType-parameter",
+          "text": " <code>buildType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureBuildTypeKHR\">VkAccelerationStructureBuildTypeKHR</a> value"
+        },
         {
-          "vuid": "VUID-vkBindBufferMemory-memory-02985",
-          "text": " If <code>memory</code> was created by a memory import operation, that is not <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> with a non-<code>NULL</code> <code>buffer</code> value, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created"
+          "vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-pBuildInfo-parameter",
+          "text": " <code>pBuildInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structure"
         },
         {
-          "vuid": "VUID-vkBindBufferMemory-memory-02986",
-          "text": " If <code>memory</code> was created with the <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> memory import operation with a non-<code>NULL</code> <code>buffer</code> value, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created"
-        }
-      ],
-      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
+          "vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-pMaxPrimitiveCounts-parameter",
+          "text": " If <code>pMaxPrimitiveCounts</code> is not <code>NULL</code>, <code>pMaxPrimitiveCounts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pBuildInfo-&gt;geometryCount</code> <code>uint32_t</code> values"
+        },
         {
-          "vuid": "VUID-vkBindBufferMemory-bufferDeviceAddress-03339",
-          "text": " If the <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeatures\">VkPhysicalDeviceBufferDeviceAddressFeatures</a>::<code>bufferDeviceAddress</code> feature is enabled and <code>buffer</code> was created with the <code>VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT</code> bit set, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated with the <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT</code> bit set"
+          "vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-pSizeInfo-parameter",
+          "text": " <code>pSizeInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkAccelerationStructureBuildSizesInfoKHR\">VkAccelerationStructureBuildSizesInfoKHR</a> structure"
         }
       ]
     },
-    "vkBindBufferMemory2": {
-      "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
-        {
-          "vuid": "VUID-vkBindBufferMemory2-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
-        },
+    "VkAccelerationStructureBuildSizesInfoKHR": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
         {
-          "vuid": "VUID-vkBindBufferMemory2-pBindInfos-parameter",
-          "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <a href=\"#VkBindBufferMemoryInfo\">VkBindBufferMemoryInfo</a> structures"
+          "vuid": "VUID-VkAccelerationStructureBuildSizesInfoKHR-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR</code>"
         },
         {
-          "vuid": "VUID-vkBindBufferMemory2-bindInfoCount-arraylength",
-          "text": " <code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+          "vuid": "VUID-VkAccelerationStructureBuildSizesInfoKHR-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         }
       ]
     },
-    "VkBindBufferMemoryInfo": {
-      "core": [
+    "VkGeometryNV": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
         {
-          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01029",
-          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
+          "vuid": "VUID-VkGeometryNV-geometryType-03503",
+          "text": " <code>geometryType</code> <strong class=\"purple\">must</strong> be <code>VK_GEOMETRY_TYPE_TRIANGLES_NV</code> or <code>VK_GEOMETRY_TYPE_AABBS_NV</code>"
         },
         {
-          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01030",
-          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
+          "vuid": "VUID-VkGeometryNV-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GEOMETRY_NV</code>"
         },
         {
-          "vuid": "VUID-VkBindBufferMemoryInfo-memoryOffset-01031",
-          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
+          "vuid": "VUID-VkGeometryNV-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-VkBindBufferMemoryInfo-memory-01035",
-          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code>"
+          "vuid": "VUID-VkGeometryNV-geometryType-parameter",
+          "text": " <code>geometryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryTypeKHR\">VkGeometryTypeKHR</a> value"
         },
         {
-          "vuid": "VUID-VkBindBufferMemoryInfo-memoryOffset-01036",
-          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code>"
+          "vuid": "VUID-VkGeometryNV-geometry-parameter",
+          "text": " <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryDataNV\">VkGeometryDataNV</a> structure"
         },
         {
-          "vuid": "VUID-VkBindBufferMemoryInfo-size-01037",
-          "text": " The <code>size</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>"
+          "vuid": "VUID-VkGeometryNV-flags-parameter",
+          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkGeometryFlagBitsKHR\">VkGeometryFlagBitsKHR</a> values"
         }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
+      ]
+    },
+    "VkGeometryDataNV": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
         {
-          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01444",
-          "text": " If <code>buffer</code> requires a dedicated allocation(as reported by <a href=\"#vkGetBufferMemoryRequirements2\">vkGetBufferMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::requiresDedicatedAllocation for <code>buffer</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> equal to <code>buffer</code>"
+          "vuid": "VUID-VkGeometryDataNV-triangles-parameter",
+          "text": " <code>triangles</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryTrianglesNV\">VkGeometryTrianglesNV</a> structure"
         },
         {
-          "vuid": "VUID-VkBindBufferMemoryInfo-memory-01508",
-          "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>buffer</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code>, and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
+          "vuid": "VUID-VkGeometryDataNV-aabbs-parameter",
+          "text": " <code>aabbs</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryAABBNV\">VkGeometryAABBNV</a> structure"
         }
-      ],
-      "(VK_VERSION_1_1)": [
+      ]
+    },
+    "VkGeometryTrianglesNV": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
         {
-          "vuid": "VUID-VkBindBufferMemoryInfo-None-01898",
-          "text": " If buffer was created with the <code>VK_BUFFER_CREATE_PROTECTED_BIT</code> bit set, the buffer <strong class=\"purple\">must</strong> be bound to a memory object allocated with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>"
+          "vuid": "VUID-VkGeometryTrianglesNV-vertexOffset-02428",
+          "text": " <code>vertexOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>vertexData</code>"
         },
         {
-          "vuid": "VUID-VkBindBufferMemoryInfo-None-01899",
-          "text": " If buffer was created with the <code>VK_BUFFER_CREATE_PROTECTED_BIT</code> bit not set, the buffer <strong class=\"purple\">must</strong> not be bound to a memory object created with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>"
-        }
-      ],
-      "(VK_NV_dedicated_allocation)": [
+          "vuid": "VUID-VkGeometryTrianglesNV-vertexOffset-02429",
+          "text": " <code>vertexOffset</code> <strong class=\"purple\">must</strong> be a multiple of the component size of <code>vertexFormat</code>"
+        },
         {
-          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01038",
-          "text": " If <code>buffer</code> was created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>::<code>buffer</code> equal to a buffer handle created with identical creation parameters to <code>buffer</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
-        }
-      ],
-      "(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
+          "vuid": "VUID-VkGeometryTrianglesNV-vertexFormat-02430",
+          "text": " <code>vertexFormat</code> <strong class=\"purple\">must</strong> be one of <code>VK_FORMAT_R32G32B32_SFLOAT</code>, <code>VK_FORMAT_R32G32_SFLOAT</code>, <code>VK_FORMAT_R16G16B16_SFLOAT</code>, <code>VK_FORMAT_R16G16_SFLOAT</code>, <code>VK_FORMAT_R16G16_SNORM</code>, or <code>VK_FORMAT_R16G16B16_SNORM</code>"
+        },
         {
-          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01039",
-          "text": " If <code>buffer</code> was not created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image"
-        }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
+          "vuid": "VUID-VkGeometryTrianglesNV-vertexStride-03818",
+          "text": " <code>vertexStride</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>32</sup>-1</span>"
+        },
         {
-          "vuid": "VUID-VkBindBufferMemoryInfo-memory-02726",
-          "text": " If the value of <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> used to allocate <code>memory</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> include at least one of the handles set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created"
-        }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_external_memory)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
+          "vuid": "VUID-VkGeometryTrianglesNV-indexOffset-02431",
+          "text": " <code>indexOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>indexData</code>"
+        },
         {
-          "vuid": "VUID-VkBindBufferMemoryInfo-memory-02727",
-          "text": " If <code>memory</code> was created by a memory import operation, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created"
-        }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
+          "vuid": "VUID-VkGeometryTrianglesNV-indexOffset-02432",
+          "text": " <code>indexOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of <code>indexType</code>"
+        },
         {
-          "vuid": "VUID-VkBindBufferMemoryInfo-memory-02985",
-          "text": " If <code>memory</code> was created by a memory import operation, that is not <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> with a non-<code>NULL</code> <code>buffer</code> value, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created"
+          "vuid": "VUID-VkGeometryTrianglesNV-indexType-02433",
+          "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be <code>VK_INDEX_TYPE_UINT16</code>, <code>VK_INDEX_TYPE_UINT32</code>, or <code>VK_INDEX_TYPE_NONE_NV</code>"
         },
         {
-          "vuid": "VUID-VkBindBufferMemoryInfo-memory-02986",
-          "text": " If <code>memory</code> was created with the <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> memory import operation with a non-<code>NULL</code> <code>buffer</code> value, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created"
-        }
-      ],
-      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
+          "vuid": "VUID-VkGeometryTrianglesNV-indexData-02434",
+          "text": " <code>indexData</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> if <code>indexType</code> is <code>VK_INDEX_TYPE_NONE_NV</code>"
+        },
         {
-          "vuid": "VUID-VkBindBufferMemoryInfo-bufferDeviceAddress-03339",
-          "text": " If the <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeatures\">VkPhysicalDeviceBufferDeviceAddressFeatures</a>::<code>bufferDeviceAddress</code> feature is enabled and <code>buffer</code> was created with the <code>VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT</code> bit set, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated with the <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT</code> bit set"
-        }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_device_group)": [
+          "vuid": "VUID-VkGeometryTrianglesNV-indexData-02435",
+          "text": " <code>indexData</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle if <code>indexType</code> is not <code>VK_INDEX_TYPE_NONE_NV</code>"
+        },
         {
-          "vuid": "VUID-VkBindBufferMemoryInfo-pNext-01605",
-          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindBufferMemoryDeviceGroupInfo\">VkBindBufferMemoryDeviceGroupInfo</a> structure, all instances of <code>memory</code> specified by <a href=\"#VkBindBufferMemoryDeviceGroupInfo\">VkBindBufferMemoryDeviceGroupInfo</a>::<code>pDeviceIndices</code> <strong class=\"purple\">must</strong> have been allocated"
-        }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
+          "vuid": "VUID-VkGeometryTrianglesNV-indexCount-02436",
+          "text": " <code>indexCount</code> <strong class=\"purple\">must</strong> be <code>0</code> if <code>indexType</code> is <code>VK_INDEX_TYPE_NONE_NV</code>"
+        },
         {
-          "vuid": "VUID-VkBindBufferMemoryInfo-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO</code>"
+          "vuid": "VUID-VkGeometryTrianglesNV-transformOffset-02437",
+          "text": " <code>transformOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>transformData</code>"
         },
         {
-          "vuid": "VUID-VkBindBufferMemoryInfo-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=\"#VkBindBufferMemoryDeviceGroupInfo\">VkBindBufferMemoryDeviceGroupInfo</a>"
+          "vuid": "VUID-VkGeometryTrianglesNV-transformOffset-02438",
+          "text": " <code>transformOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>16</code>"
         },
         {
-          "vuid": "VUID-VkBindBufferMemoryInfo-sType-unique",
-          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
+          "vuid": "VUID-VkGeometryTrianglesNV-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV</code>"
         },
         {
-          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-parameter",
-          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
+          "vuid": "VUID-VkGeometryTrianglesNV-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-VkBindBufferMemoryInfo-memory-parameter",
-          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
+          "vuid": "VUID-VkGeometryTrianglesNV-vertexData-parameter",
+          "text": " If <code>vertexData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>vertexData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
         },
         {
-          "vuid": "VUID-VkBindBufferMemoryInfo-commonparent",
-          "text": " Both of <code>buffer</code>, and <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
-        }
-      ]
-    },
-    "VkBindBufferMemoryDeviceGroupInfo": {
-      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
+          "vuid": "VUID-VkGeometryTrianglesNV-vertexFormat-parameter",
+          "text": " <code>vertexFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
+        },
         {
-          "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-deviceIndexCount-01606",
-          "text": " <code>deviceIndexCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device"
+          "vuid": "VUID-VkGeometryTrianglesNV-indexData-parameter",
+          "text": " If <code>indexData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>indexData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
         },
         {
-          "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-pDeviceIndices-01607",
-          "text": " All elements of <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices"
+          "vuid": "VUID-VkGeometryTrianglesNV-indexType-parameter",
+          "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value"
         },
         {
-          "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO</code>"
+          "vuid": "VUID-VkGeometryTrianglesNV-transformData-parameter",
+          "text": " If <code>transformData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>transformData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
         },
         {
-          "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-pDeviceIndices-parameter",
-          "text": " If <code>deviceIndexCount</code> is not <code>0</code>, <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>deviceIndexCount</code> <code>uint32_t</code> values"
+          "vuid": "VUID-VkGeometryTrianglesNV-commonparent",
+          "text": " Each of <code>indexData</code>, <code>transformData</code>, and <code>vertexData</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>"
         }
       ]
     },
-    "vkBindImageMemory": {
-      "core": [
+    "VkGeometryAABBNV": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
         {
-          "vuid": "VUID-vkBindImageMemory-image-01044",
-          "text": " <code>image</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
+          "vuid": "VUID-VkGeometryAABBNV-offset-02439",
+          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>aabbData</code>"
         },
         {
-          "vuid": "VUID-vkBindImageMemory-image-01045",
-          "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
+          "vuid": "VUID-VkGeometryAABBNV-offset-02440",
+          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>8</code>"
         },
         {
-          "vuid": "VUID-vkBindImageMemory-memoryOffset-01046",
-          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
+          "vuid": "VUID-VkGeometryAABBNV-stride-02441",
+          "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>8</code>"
         },
         {
-          "vuid": "VUID-vkBindImageMemory-memory-01047",
-          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetImageMemoryRequirements</code> with <code>image</code>"
+          "vuid": "VUID-VkGeometryAABBNV-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV</code>"
         },
         {
-          "vuid": "VUID-vkBindImageMemory-memoryOffset-01048",
-          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetImageMemoryRequirements</code> with <code>image</code>"
+          "vuid": "VUID-VkGeometryAABBNV-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-vkBindImageMemory-size-01049",
-          "text": " The difference of the size of <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements\">vkGetImageMemoryRequirements</a> with the same <code>image</code>"
-        },
+          "vuid": "VUID-VkGeometryAABBNV-aabbData-parameter",
+          "text": " If <code>aabbData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>aabbData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
+        }
+      ]
+    },
+    "vkDestroyAccelerationStructureKHR": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
         {
-          "vuid": "VUID-vkBindImageMemory-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02442",
+          "text": " All submitted commands that refer to <code>accelerationStructure</code> <strong class=\"purple\">must</strong> have completed execution"
         },
         {
-          "vuid": "VUID-vkBindImageMemory-image-parameter",
-          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
+          "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02443",
+          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>accelerationStructure</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
         },
         {
-          "vuid": "VUID-vkBindImageMemory-memory-parameter",
-          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
+          "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02444",
+          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>accelerationStructure</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-vkBindImageMemory-image-parent",
-          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+          "vuid": "VUID-vkDestroyAccelerationStructureKHR-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-vkBindImageMemory-memory-parent",
-          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
-        }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
+          "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-parameter",
+          "text": " If <code>accelerationStructure</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
+        },
         {
-          "vuid": "VUID-vkBindImageMemory-image-01445",
-          "text": " If <code>image</code> requires a dedicated allocation (as reported by <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::requiresDedicatedAllocation for <code>image</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> equal to <code>image</code>"
-        }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VK_NV_dedicated_allocation_image_aliasing)": [
+          "vuid": "VUID-vkDestroyAccelerationStructureKHR-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"
+        },
         {
-          "vuid": "VUID-vkBindImageMemory-memory-01509",
-          "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
+          "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-parent",
+          "text": " If <code>accelerationStructure</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
         }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_NV_dedicated_allocation_image_aliasing)": [
+      ]
+    },
+    "vkDestroyAccelerationStructureNV": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
         {
-          "vuid": "VUID-vkBindImageMemory-memory-02628",
-          "text": " If the <a href=\"#features-dedicatedAllocationImageAliasing\">dedicated allocation image aliasing</a> feature is not enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
+          "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-03752",
+          "text": " All submitted commands that refer to <code>accelerationStructure</code> <strong class=\"purple\">must</strong> have completed execution"
         },
         {
-          "vuid": "VUID-vkBindImageMemory-memory-02629",
-          "text": " If the <a href=\"#features-dedicatedAllocationImageAliasing\">dedicated allocation image aliasing</a> feature is enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero, and <code>image</code> <strong class=\"purple\">must</strong> be either equal to <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> or an image that was created using the same parameters in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>, with the exception that <code>extent</code> and <code>arrayLayers</code> <strong class=\"purple\">may</strong> differ subject to the following restrictions: every dimension in the <code>extent</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created; and the <code>arrayLayers</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created"
-        }
-      ],
-      "(VK_VERSION_1_1)": [
-        {
-          "vuid": "VUID-vkBindImageMemory-None-01901",
-          "text": " If image was created with the <code>VK_IMAGE_CREATE_PROTECTED_BIT</code> bit set, the image <strong class=\"purple\">must</strong> be bound to a memory object allocated with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>"
+          "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-03753",
+          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>accelerationStructure</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
         },
         {
-          "vuid": "VUID-vkBindImageMemory-None-01902",
-          "text": " If image was created with the <code>VK_IMAGE_CREATE_PROTECTED_BIT</code> bit not set, the image <strong class=\"purple\">must</strong> not be bound to a memory object created with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>"
-        }
-      ],
-      "(VK_NV_dedicated_allocation)": [
+          "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-03754",
+          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>accelerationStructure</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+        },
         {
-          "vuid": "VUID-vkBindImageMemory-image-01050",
-          "text": " If <code>image</code> was created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>::<code>image</code> equal to an image handle created with identical creation parameters to <code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
-        }
-      ],
-      "(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
+          "vuid": "VUID-vkDestroyAccelerationStructureNV-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+        },
         {
-          "vuid": "VUID-vkBindImageMemory-image-01051",
-          "text": " If <code>image</code> was not created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image"
-        }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
+          "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-parameter",
+          "text": " If <code>accelerationStructure</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle"
+        },
         {
-          "vuid": "VUID-vkBindImageMemory-memory-02728",
-          "text": " If the value of <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> used to allocate <code>memory</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> include at least one of the handles set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created"
-        }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_external_memory)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
+          "vuid": "VUID-vkDestroyAccelerationStructureNV-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"
+        },
         {
-          "vuid": "VUID-vkBindImageMemory-memory-02729",
-          "text": " If <code>memory</code> was created by a memory import operation, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created"
+          "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-parent",
+          "text": " If <code>accelerationStructure</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
         }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
+      ]
+    },
+    "vkGetAccelerationStructureMemoryRequirementsNV": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
         {
-          "vuid": "VUID-vkBindImageMemory-memory-02989",
-          "text": " If <code>memory</code> was created by a memory import operation, that is not <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> with a non-<code>NULL</code> <code>buffer</code> value, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created"
+          "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-vkBindImageMemory-memory-02990",
-          "text": " If <code>memory</code> was created with the <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> memory import operation with a non-<code>NULL</code> <code>buffer</code> value, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created"
-        }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+          "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-pInfo-parameter",
+          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureMemoryRequirementsInfoNV\">VkAccelerationStructureMemoryRequirementsInfoNV</a> structure"
+        },
         {
-          "vuid": "VUID-vkBindImageMemory-image-01608",
-          "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> set"
+          "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-pMemoryRequirements-parameter",
+          "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements2KHR\">VkMemoryRequirements2KHR</a> structure"
         }
       ]
     },
-    "vkBindImageMemory2": {
-      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+    "VkAccelerationStructureMemoryRequirementsInfoNV": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
         {
-          "vuid": "VUID-vkBindImageMemory2-pBindInfos-02858",
-          "text": " If any <a href=\"#VkBindImageMemoryInfo\">VkBindImageMemoryInfo</a>::image was created with <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> then all planes of <a href=\"#VkBindImageMemoryInfo\">VkBindImageMemoryInfo</a>::image <strong class=\"purple\">must</strong> be bound individually in separate <code>pBindInfos</code>"
+          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV</code>"
         },
         {
-          "vuid": "VUID-vkBindImageMemory2-pBindInfos-04006",
-          "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> not refer to the same image subresource more than once"
+          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+        },
+        {
+          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-type-parameter",
+          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureMemoryRequirementsTypeNV\">VkAccelerationStructureMemoryRequirementsTypeNV</a> value"
+        },
+        {
+          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-accelerationStructure-parameter",
+          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle"
         }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
+      ]
+    },
+    "vkBindAccelerationStructureMemoryNV": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
         {
-          "vuid": "VUID-vkBindImageMemory2-device-parameter",
+          "vuid": "VUID-vkBindAccelerationStructureMemoryNV-device-parameter",
           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-vkBindImageMemory2-pBindInfos-parameter",
-          "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <a href=\"#VkBindImageMemoryInfo\">VkBindImageMemoryInfo</a> structures"
+          "vuid": "VUID-vkBindAccelerationStructureMemoryNV-pBindInfos-parameter",
+          "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <a href=\"#VkBindAccelerationStructureMemoryInfoNV\">VkBindAccelerationStructureMemoryInfoNV</a> structures"
         },
         {
-          "vuid": "VUID-vkBindImageMemory2-bindInfoCount-arraylength",
+          "vuid": "VUID-vkBindAccelerationStructureMemoryNV-bindInfoCount-arraylength",
           "text": " <code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
         }
       ]
     },
-    "VkBindImageMemoryInfo": {
-      "core": [
+    "VkBindAccelerationStructureMemoryInfoNV": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-image-01044",
-          "text": " <code>image</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
+          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-accelerationStructure-03620",
+          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
         },
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-image-01045",
-          "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
+          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memoryOffset-03621",
+          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
         },
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-memoryOffset-01046",
-          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
-        }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
+          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memory-03622",
+          "text": " <code>memory</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 from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsNV\">vkGetAccelerationStructureMemoryRequirementsNV</a> with <code>accelerationStructure</code> and <code>type</code> of <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV</code>"
+        },
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-image-01445",
-          "text": " If <code>image</code> requires a dedicated allocation (as reported by <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::requiresDedicatedAllocation for <code>image</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> equal to <code>image</code>"
-        }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VK_NV_dedicated_allocation_image_aliasing)": [
+          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memoryOffset-03623",
+          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsNV\">vkGetAccelerationStructureMemoryRequirementsNV</a> with <code>accelerationStructure</code> and <code>type</code> of <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV</code>"
+        },
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-memory-01509",
-          "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
-        }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_NV_dedicated_allocation_image_aliasing)": [
+          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-size-03624",
+          "text": " The <code>size</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsNV\">vkGetAccelerationStructureMemoryRequirementsNV</a> with <code>accelerationStructure</code> and <code>type</code> of <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>"
+        },
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-memory-02628",
-          "text": " If the <a href=\"#features-dedicatedAllocationImageAliasing\">dedicated allocation image aliasing</a> feature is not enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
+          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV</code>"
         },
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-memory-02629",
-          "text": " If the <a href=\"#features-dedicatedAllocationImageAliasing\">dedicated allocation image aliasing</a> feature is enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero, and <code>image</code> <strong class=\"purple\">must</strong> be either equal to <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> or an image that was created using the same parameters in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>, with the exception that <code>extent</code> and <code>arrayLayers</code> <strong class=\"purple\">may</strong> differ subject to the following restrictions: every dimension in the <code>extent</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created; and the <code>arrayLayers</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created"
-        }
-      ],
-      "(VK_VERSION_1_1)": [
+          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+        },
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-None-01901",
-          "text": " If image was created with the <code>VK_IMAGE_CREATE_PROTECTED_BIT</code> bit set, the image <strong class=\"purple\">must</strong> be bound to a memory object allocated with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>"
+          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-accelerationStructure-parameter",
+          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle"
         },
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-None-01902",
-          "text": " If image was created with the <code>VK_IMAGE_CREATE_PROTECTED_BIT</code> bit not set, the image <strong class=\"purple\">must</strong> not be bound to a memory object created with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>"
-        }
-      ],
-      "(VK_NV_dedicated_allocation)": [
+          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memory-parameter",
+          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
+        },
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-image-01050",
-          "text": " If <code>image</code> was created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>::<code>image</code> equal to an image handle created with identical creation parameters to <code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
-        }
-      ],
-      "(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
+          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-pDeviceIndices-parameter",
+          "text": " If <code>deviceIndexCount</code> is not <code>0</code>, <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>deviceIndexCount</code> <code>uint32_t</code> values"
+        },
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-image-01051",
-          "text": " If <code>image</code> was not created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image"
+          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-commonparent",
+          "text": " Both of <code>accelerationStructure</code>, and <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
         }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
+      ]
+    },
+    "vkGetAccelerationStructureHandleNV": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-memory-02728",
-          "text": " If the value of <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> used to allocate <code>memory</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> include at least one of the handles set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created"
-        }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_external_memory)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
+          "vuid": "VUID-vkGetAccelerationStructureHandleNV-dataSize-02240",
+          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be large enough to contain the result of the query, as described above"
+        },
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-memory-02729",
-          "text": " If <code>memory</code> was created by a memory import operation, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created"
-        }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
+          "vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-02787",
+          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object via <a href=\"#vkBindAccelerationStructureMemoryNV\">vkBindAccelerationStructureMemoryNV</a>"
+        },
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-memory-02989",
-          "text": " If <code>memory</code> was created by a memory import operation, that is not <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> with a non-<code>NULL</code> <code>buffer</code> value, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created"
+          "vuid": "VUID-vkGetAccelerationStructureHandleNV-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-memory-02990",
-          "text": " If <code>memory</code> was created with the <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> memory import operation with a non-<code>NULL</code> <code>buffer</code> value, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created"
-        }
-      ],
-      "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+          "vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parameter",
+          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle"
+        },
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-memory-01612",
-          "text": " <code>memory</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 from a call to <a href=\"#vkGetImageMemoryRequirements\">vkGetImageMemoryRequirements</a> with <code>image</code>"
+          "vuid": "VUID-vkGetAccelerationStructureHandleNV-pData-parameter",
+          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
         },
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-memoryOffset-01613",
-          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements\">vkGetImageMemoryRequirements</a> with <code>image</code>"
+          "vuid": "VUID-vkGetAccelerationStructureHandleNV-dataSize-arraylength",
+          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
         },
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-memory-01614",
-          "text": " The difference of the size of <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements\">vkGetImageMemoryRequirements</a> with the same <code>image</code>"
+          "vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parent",
+          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
         }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+      ]
+    },
+    "vkGetAccelerationStructureDeviceAddressKHR": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01615",
-          "text": " If the <code>pNext</code> chain does not include a <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memory</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 from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code>"
+          "vuid": "VUID-vkGetAccelerationStructureDeviceAddressKHR-device-03504",
+          "text": " If <code>device</code> was created with multiple physical devices, then the <a href=\"#features-bufferDeviceAddressMultiDevice\">bufferDeviceAddressMultiDevice</a> feature <strong class=\"purple\">must</strong> be enabled"
         },
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01616",
-          "text": " If the <code>pNext</code> chain does not include a <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code>"
+          "vuid": "VUID-vkGetAccelerationStructureDeviceAddressKHR-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01617",
-          "text": " If the <code>pNext</code> chain does not include a <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, the difference of the size of <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with the same <code>image</code>"
+          "vuid": "VUID-vkGetAccelerationStructureDeviceAddressKHR-pInfo-parameter",
+          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureDeviceAddressInfoKHR\">VkAccelerationStructureDeviceAddressInfoKHR</a> structure"
+        }
+      ]
+    },
+    "VkAccelerationStructureDeviceAddressInfoKHR": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
+        {
+          "vuid": "VUID-VkAccelerationStructureDeviceAddressInfoKHR-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR</code>"
         },
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01618",
-          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>image</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> bit set"
+          "vuid": "VUID-VkAccelerationStructureDeviceAddressInfoKHR-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01619",
-          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memory</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 from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code> and where <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a>::<code>planeAspect</code> corresponds to the <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a>::<code>planeAspect</code> in the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure&#8217;s <code>pNext</code> chain"
+          "vuid": "VUID-VkAccelerationStructureDeviceAddressInfoKHR-accelerationStructure-parameter",
+          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
+        }
+      ]
+    },
+    "vkGetBufferMemoryRequirements": {
+      "core": [
+        {
+          "vuid": "VUID-vkGetBufferMemoryRequirements-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01620",
-          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code> and where <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a>::<code>planeAspect</code> corresponds to the <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a>::<code>planeAspect</code> in the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure&#8217;s <code>pNext</code> chain"
+          "vuid": "VUID-vkGetBufferMemoryRequirements-buffer-parameter",
+          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
         },
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01621",
-          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, the difference of the size of <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with the same <code>image</code> and where <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a>::<code>planeAspect</code> corresponds to the <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a>::<code>planeAspect</code> in the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure&#8217;s <code>pNext</code> chain"
+          "vuid": "VUID-vkGetBufferMemoryRequirements-pMemoryRequirements-parameter",
+          "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure"
+        },
+        {
+          "vuid": "VUID-vkGetBufferMemoryRequirements-buffer-parent",
+          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+        }
+      ]
+    },
+    "vkGetImageMemoryRequirements": {
+      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+        {
+          "vuid": "VUID-vkGetImageMemoryRequirements-image-01588",
+          "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> flag set"
         }
       ],
-      "!(VK_VERSION_1_1+VK_KHR_swapchain)+!(VK_KHR_device_group+VK_KHR_swapchain)": [
+      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-memory-01625",
-          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
+          "vuid": "VUID-vkGetImageMemoryRequirements-image-04004",
+          "text": " If <code>image</code> was created with the <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> external memory handle type, then <code>image</code> <strong class=\"purple\">must</strong> be bound to memory"
         }
       ],
-      "(VK_VERSION_1_1,VK_KHR_device_group)": [
+      "core": [
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01626",
-          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a> structure, all instances of <code>memory</code> specified by <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>pDeviceIndices</code> <strong class=\"purple\">must</strong> have been allocated"
+          "vuid": "VUID-vkGetImageMemoryRequirements-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01627",
-          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a> structure, and <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>splitInstanceBindRegionCount</code> is not zero, then <code>image</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT</code> bit set"
+          "vuid": "VUID-vkGetImageMemoryRequirements-image-parameter",
+          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
         },
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01628",
-          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a> structure, all elements of <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be valid rectangles contained within the dimensions of <code>image</code>"
+          "vuid": "VUID-vkGetImageMemoryRequirements-pMemoryRequirements-parameter",
+          "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure"
         },
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01629",
-          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a> structure, the union of the areas of all elements of <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>pSplitInstanceBindRegions</code> that correspond to the same instance of <code>image</code> <strong class=\"purple\">must</strong> cover the entire image"
+          "vuid": "VUID-vkGetImageMemoryRequirements-image-parent",
+          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
         }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [
+      ]
+    },
+    "vkGetBufferMemoryRequirements2": {
+      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-image-01630",
-          "text": " If <code>image</code> was created with a valid swapchain handle in <a href=\"#VkImageSwapchainCreateInfoKHR\">VkImageSwapchainCreateInfoKHR</a>::<code>swapchain</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a> structure containing the same swapchain handle"
+          "vuid": "VUID-vkGetBufferMemoryRequirements2-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01631",
-          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a> structure, <code>memory</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
+          "vuid": "VUID-vkGetBufferMemoryRequirements2-pInfo-parameter",
+          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBufferMemoryRequirementsInfo2\">VkBufferMemoryRequirementsInfo2</a> structure"
         },
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01632",
-          "text": " If the <code>pNext</code> chain does not include a <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a> structure, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
+          "vuid": "VUID-vkGetBufferMemoryRequirements2-pMemoryRequirements-parameter",
+          "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements2\">VkMemoryRequirements2</a> structure"
         }
-      ],
-      "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
-        {
-          "vuid": "VUID-VkBindImageMemoryInfo-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO</code>"
-        },
-        {
-          "vuid": "VUID-VkBindImageMemoryInfo-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=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>, <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a>, or <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a>"
-        },
+      ]
+    },
+    "VkBufferMemoryRequirementsInfo2": {
+      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-sType-unique",
-          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
+          "vuid": "VUID-VkBufferMemoryRequirementsInfo2-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2</code>"
         },
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-image-parameter",
-          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
+          "vuid": "VUID-VkBufferMemoryRequirementsInfo2-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-VkBindImageMemoryInfo-commonparent",
-          "text": " Both of <code>image</code>, and <code>memory</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>"
+          "vuid": "VUID-VkBufferMemoryRequirementsInfo2-buffer-parameter",
+          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
         }
       ]
     },
-    "VkBindImageMemoryDeviceGroupInfo": {
-      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
-        {
-          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-deviceIndexCount-01633",
-          "text": " At least one of <code>deviceIndexCount</code> and <code>splitInstanceBindRegionCount</code> <strong class=\"purple\">must</strong> be zero"
-        },
+    "vkGetImageMemoryRequirements2": {
+      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
         {
-          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-deviceIndexCount-01634",
-          "text": " <code>deviceIndexCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device"
+          "vuid": "VUID-vkGetImageMemoryRequirements2-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-01635",
-          "text": " All elements of <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices"
+          "vuid": "VUID-vkGetImageMemoryRequirements2-pInfo-parameter",
+          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
         },
         {
-          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-splitInstanceBindRegionCount-01636",
-          "text": " <code>splitInstanceBindRegionCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device squared"
-        },
+          "vuid": "VUID-vkGetImageMemoryRequirements2-pMemoryRequirements-parameter",
+          "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements2\">VkMemoryRequirements2</a> structure"
+        }
+      ]
+    },
+    "VkImageMemoryRequirementsInfo2": {
+      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
         {
-          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pSplitInstanceBindRegions-01637",
-          "text": " Elements of <code>pSplitInstanceBindRegions</code> that correspond to the same instance of an image <strong class=\"purple\">must</strong> not overlap"
+          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01589",
+          "text": " If <code>image</code> was created with a <em>multi-planar</em> format and the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> flag, there <strong class=\"purple\">must</strong> be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> included in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
         },
         {
-          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-offset-01638",
-          "text": " The <code>offset.x</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be a multiple of the sparse image block width (<code>VkSparseImageFormatProperties</code>::<code>imageGranularity.width</code>) of all non-metadata aspects of the image"
-        },
+          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01590",
+          "text": " If <code>image</code> was not created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> flag, there <strong class=\"purple\">must</strong> not be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> included in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [
         {
-          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-offset-01639",
-          "text": " The <code>offset.y</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be a multiple of the sparse image block height (<code>VkSparseImageFormatProperties</code>::<code>imageGranularity.height</code>) of all non-metadata aspects of the image"
+          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-02279",
+          "text": " If <code>image</code> was created with <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> and with <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then there <strong class=\"purple\">must</strong> be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> included in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
         },
         {
-          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-extent-01640",
-          "text": " The <code>extent.width</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block width of all non-metadata aspects of the image, or else <code>extent.width</code> &#43; <code>offset.x</code> <strong class=\"purple\">must</strong> equal the width of the image subresource"
-        },
+          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-02280",
+          "text": " If <code>image</code> was created with a single-plane format and with any <code>tiling</code> other than <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then there <strong class=\"purple\">must</strong> not be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> included in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+!(VK_EXT_image_drm_format_modifier)": [
         {
-          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-extent-01641",
-          "text": " The <code>extent.height</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block height of all non-metadata aspects of the image, or else <code>extent.height</code> &#43; <code>offset.y</code> <strong class=\"purple\">must</strong> equal the width of the image subresource"
-        },
+          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01591",
+          "text": " If <code>image</code> was created with a single-plane format, there <strong class=\"purple\">must</strong> not be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> included in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
         {
-          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO</code>"
-        },
+          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01897",
+          "text": " If <code>image</code> was created with the <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> external memory handle type, then <code>image</code> <strong class=\"purple\">must</strong> be bound to memory"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
         {
-          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-parameter",
-          "text": " If <code>deviceIndexCount</code> is not <code>0</code>, <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>deviceIndexCount</code> <code>uint32_t</code> values"
+          "vuid": "VUID-VkImageMemoryRequirementsInfo2-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2</code>"
         },
         {
-          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pSplitInstanceBindRegions-parameter",
-          "text": " If <code>splitInstanceBindRegionCount</code> is not <code>0</code>, <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>splitInstanceBindRegionCount</code> <a href=\"#VkRect2D\">VkRect2D</a> structures"
-        }
-      ]
-    },
-    "VkBindImageMemorySwapchainInfoKHR": {
-      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [
-        {
-          "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-imageIndex-01644",
-          "text": " <code>imageIndex</code> <strong class=\"purple\">must</strong> be less than the number of images in <code>swapchain</code>"
+          "vuid": "VUID-VkImageMemoryRequirementsInfo2-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=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a>"
         },
         {
-          "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR</code>"
+          "vuid": "VUID-VkImageMemoryRequirementsInfo2-sType-unique",
+          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
         },
         {
-          "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-swapchain-parameter",
-          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle"
+          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-parameter",
+          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
         }
       ]
     },
-    "VkBindImagePlaneMemoryInfo": {
-      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+    "VkImagePlaneMemoryRequirementsInfo": {
+      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
         {
-          "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-02283",
+          "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02281",
           "text": " If the image&#8217;s <code>tiling</code> is <code>VK_IMAGE_TILING_LINEAR</code> or <code>VK_IMAGE_TILING_OPTIMAL</code>, then <code>planeAspect</code> <strong class=\"purple\">must</strong> be a single valid <em>format plane</em> for the image (that is, for a two-plane image <code>planeAspect</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, and for a three-plane image <code>planeAspect</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>)"
         },
         {
-          "vuid": "VUID-VkBindImagePlaneMemoryInfo-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO</code>"
+          "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO</code>"
         },
         {
-          "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-parameter",
+          "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-parameter",
           "text": " <code>planeAspect</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> value"
         }
       ],
-      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [
+      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [
         {
-          "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-02284",
+          "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02282",
           "text": " If the image&#8217;s <code>tiling</code> is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then <code>planeAspect</code> <strong class=\"purple\">must</strong> be a single valid <em>memory plane</em> for the image (that is, <code>aspectMask</code> <strong class=\"purple\">must</strong> specify a plane index that is less than the <a href=\"#VkDrmFormatModifierPropertiesEXT\">VkDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifierPlaneCount</code> associated with the image&#8217;s <code>format</code> and <a href=\"#VkImageDrmFormatModifierPropertiesEXT\">VkImageDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifier</code>)"
         }
       ]
     },
-    "vkCreateAccelerationStructureNV": {
-      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
-        {
-          "vuid": "VUID-vkCreateAccelerationStructureNV-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
-        },
+    "VkMemoryRequirements2": {
+      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
         {
-          "vuid": "VUID-vkCreateAccelerationStructureNV-pCreateInfo-parameter",
-          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureCreateInfoNV\">VkAccelerationStructureCreateInfoNV</a> structure"
+          "vuid": "VUID-VkMemoryRequirements2-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2</code>"
         },
         {
-          "vuid": "VUID-vkCreateAccelerationStructureNV-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"
+          "vuid": "VUID-VkMemoryRequirements2-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=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>"
         },
         {
-          "vuid": "VUID-vkCreateAccelerationStructureNV-pAccelerationStructure-parameter",
-          "text": " <code>pAccelerationStructure</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle"
+          "vuid": "VUID-VkMemoryRequirements2-sType-unique",
+          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
         }
       ]
     },
-    "VkAccelerationStructureCreateInfoNV": {
-      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
-        {
-          "vuid": "VUID-VkAccelerationStructureCreateInfoNV-compactedSize-02421",
-          "text": " If <code>compactedSize</code> is not <code>0</code> then both <code>info.geometryCount</code> and <code>info.instanceCount</code> <strong class=\"purple\">must</strong> be <code>0</code>"
-        },
-        {
-          "vuid": "VUID-VkAccelerationStructureCreateInfoNV-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV</code>"
-        },
-        {
-          "vuid": "VUID-VkAccelerationStructureCreateInfoNV-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
-        },
+    "VkMemoryDedicatedRequirements": {
+      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
         {
-          "vuid": "VUID-VkAccelerationStructureCreateInfoNV-info-parameter",
-          "text": " <code>info</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a> structure"
+          "vuid": "VUID-VkMemoryDedicatedRequirements-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS</code>"
         }
       ]
     },
-    "VkAccelerationStructureInfoNV": {
-      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
+    "vkBindBufferMemory": {
+      "core": [
         {
-          "vuid": "VUID-VkAccelerationStructureInfoNV-geometryCount-02422",
-          "text": " <code>geometryCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxGeometryCount</code>"
+          "vuid": "VUID-vkBindBufferMemory-buffer-01029",
+          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureInfoNV-instanceCount-02423",
-          "text": " <code>instanceCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxInstanceCount</code>"
+          "vuid": "VUID-vkBindBufferMemory-buffer-01030",
+          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureInfoNV-maxTriangleCount-02424",
-          "text": " The total number of triangles in all geometries <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxTriangleCount</code>"
+          "vuid": "VUID-vkBindBufferMemory-memoryOffset-01031",
+          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureInfoNV-type-02425",
-          "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV</code> then <code>geometryCount</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+          "vuid": "VUID-vkBindBufferMemory-memory-01035",
+          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code>"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureInfoNV-type-02426",
-          "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV</code> then <code>instanceCount</code> <strong class=\"purple\">must</strong> be <code>0</code>"
+          "vuid": "VUID-vkBindBufferMemory-memoryOffset-01036",
+          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code>"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureInfoNV-type-02786",
-          "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV</code> then the <code>geometryType</code> member of each geometry in <code>pGeometries</code> <strong class=\"purple\">must</strong> be the same"
+          "vuid": "VUID-vkBindBufferMemory-size-01037",
+          "text": " The <code>size</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureInfoNV-flags-02592",
-          "text": " If <code>flags</code> has the <code>VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV</code> bit set, then it <strong class=\"purple\">must</strong> not have the <code>VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV</code> bit set"
+          "vuid": "VUID-vkBindBufferMemory-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureInfoNV-scratch-02781",
-          "text": " <code>scratch</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_RAY_TRACING_BIT_NV</code> usage flag"
+          "vuid": "VUID-vkBindBufferMemory-buffer-parameter",
+          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureInfoNV-instanceData-02782",
-          "text": " If <code>instanceData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>instanceData</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_RAY_TRACING_BIT_NV</code> usage flag"
+          "vuid": "VUID-vkBindBufferMemory-memory-parameter",
+          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureInfoNV-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV</code>"
+          "vuid": "VUID-vkBindBufferMemory-buffer-parent",
+          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureInfoNV-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
-        },
+          "vuid": "VUID-vkBindBufferMemory-memory-parent",
+          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
         {
-          "vuid": "VUID-VkAccelerationStructureInfoNV-type-parameter",
-          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureTypeNV\">VkAccelerationStructureTypeNV</a> value"
+          "vuid": "VUID-vkBindBufferMemory-buffer-01444",
+          "text": " If <code>buffer</code> requires a dedicated allocation(as reported by <a href=\"#vkGetBufferMemoryRequirements2\">vkGetBufferMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::requiresDedicatedAllocation for <code>buffer</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> equal to <code>buffer</code>"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureInfoNV-flags-parameter",
-          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBuildAccelerationStructureFlagBitsNV\">VkBuildAccelerationStructureFlagBitsNV</a> values"
+          "vuid": "VUID-vkBindBufferMemory-memory-01508",
+          "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>buffer</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code>, and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
+        }
+      ],
+      "(VK_VERSION_1_1)": [
+        {
+          "vuid": "VUID-vkBindBufferMemory-None-01898",
+          "text": " If buffer was created with the <code>VK_BUFFER_CREATE_PROTECTED_BIT</code> bit set, the buffer <strong class=\"purple\">must</strong> be bound to a memory object allocated with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureInfoNV-pGeometries-parameter",
-          "text": " If <code>geometryCount</code> is not <code>0</code>, <code>pGeometries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>geometryCount</code> valid <a href=\"#VkGeometryNV\">VkGeometryNV</a> structures"
+          "vuid": "VUID-vkBindBufferMemory-None-01899",
+          "text": " If buffer was created with the <code>VK_BUFFER_CREATE_PROTECTED_BIT</code> bit not set, the buffer <strong class=\"purple\">must</strong> not be bound to a memory object created with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>"
         }
       ],
-      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)+(VK_KHR_acceleration_structure)": [
+      "(VK_NV_dedicated_allocation)": [
         {
-          "vuid": "VUID-VkAccelerationStructureInfoNV-type-04623",
-          "text": " <code>type</code> <strong class=\"purple\">must</strong> not be <code>VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR</code>"
+          "vuid": "VUID-vkBindBufferMemory-buffer-01038",
+          "text": " If <code>buffer</code> was created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>::<code>buffer</code> equal to a buffer handle created with identical creation parameters to <code>buffer</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
         }
-      ]
-    },
-    "vkCreateAccelerationStructureKHR": {
-      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
-        {
-          "vuid": "VUID-vkCreateAccelerationStructureKHR-accelerationStructure-03611",
-          "text": " The <a href=\"#features-accelerationStructure\"><code>accelerationStructure</code></a> feature <strong class=\"purple\">must</strong> be enabled"
-        },
+      ],
+      "(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
         {
-          "vuid": "VUID-vkCreateAccelerationStructureKHR-deviceAddress-03488",
-          "text": " If <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>deviceAddress</code> is not zero, the <a href=\"#features-accelerationStructureCaptureReplay\"><code>accelerationStructureCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled"
-        },
+          "vuid": "VUID-vkBindBufferMemory-buffer-01039",
+          "text": " If <code>buffer</code> was not created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
         {
-          "vuid": "VUID-vkCreateAccelerationStructureKHR-device-03489",
-          "text": " If <code>device</code> was created with multiple physical devices, then the <a href=\"#features-bufferDeviceAddressMultiDevice\">bufferDeviceAddressMultiDevice</a> feature <strong class=\"purple\">must</strong> be enabled"
-        },
+          "vuid": "VUID-vkBindBufferMemory-memory-02726",
+          "text": " If the value of <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> used to allocate <code>memory</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> include at least one of the handles set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_external_memory)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
         {
-          "vuid": "VUID-vkCreateAccelerationStructureKHR-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
-        },
+          "vuid": "VUID-vkBindBufferMemory-memory-02727",
+          "text": " If <code>memory</code> was created by a memory import operation, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
         {
-          "vuid": "VUID-vkCreateAccelerationStructureKHR-pCreateInfo-parameter",
-          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a> structure"
+          "vuid": "VUID-vkBindBufferMemory-memory-02985",
+          "text": " If <code>memory</code> was created by a memory import operation, that is not <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> with a non-<code>NULL</code> <code>buffer</code> value, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created"
         },
         {
-          "vuid": "VUID-vkCreateAccelerationStructureKHR-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"
-        },
+          "vuid": "VUID-vkBindBufferMemory-memory-02986",
+          "text": " If <code>memory</code> was created with the <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> memory import operation with a non-<code>NULL</code> <code>buffer</code> value, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created"
+        }
+      ],
+      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
         {
-          "vuid": "VUID-vkCreateAccelerationStructureKHR-pAccelerationStructure-parameter",
-          "text": " <code>pAccelerationStructure</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
+          "vuid": "VUID-vkBindBufferMemory-bufferDeviceAddress-03339",
+          "text": " If the <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeatures\">VkPhysicalDeviceBufferDeviceAddressFeatures</a>::<code>bufferDeviceAddress</code> feature is enabled and <code>buffer</code> was created with the <code>VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT</code> bit set, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated with the <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT</code> bit set"
         }
       ]
     },
-    "VkAccelerationStructureCreateInfoKHR": {
-      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
+    "vkBindBufferMemory2": {
+      "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
         {
-          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-deviceAddress-03612",
-          "text": " If <code>deviceAddress</code> is not zero, <code>createFlags</code> <strong class=\"purple\">must</strong> include <code>VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR</code>"
+          "vuid": "VUID-vkBindBufferMemory2-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-createFlags-03613",
-          "text": " If <code>createFlags</code> includes <code>VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR</code>, <a href=\"#VkPhysicalDeviceAccelerationStructureFeaturesKHR\">VkPhysicalDeviceAccelerationStructureFeaturesKHR</a>::<code>accelerationStructureCaptureReplay</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>"
+          "vuid": "VUID-vkBindBufferMemory2-pBindInfos-parameter",
+          "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <a href=\"#VkBindBufferMemoryInfo\">VkBindBufferMemoryInfo</a> structures"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-buffer-03614",
-          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing <code>VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR</code>"
-        },
+          "vuid": "VUID-vkBindBufferMemory2-bindInfoCount-arraylength",
+          "text": " <code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+        }
+      ]
+    },
+    "VkBindBufferMemoryInfo": {
+      "core": [
         {
-          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-buffer-03615",
-          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not have been created with <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>"
+          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01029",
+          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-offset-03616",
-          "text": " The sum of <code>offset</code> and <code>size</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>"
+          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01030",
+          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-offset-03734",
-          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>256</code> bytes"
+          "vuid": "VUID-VkBindBufferMemoryInfo-memoryOffset-01031",
+          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR</code>"
+          "vuid": "VUID-VkBindBufferMemoryInfo-memory-01035",
+          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code>"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-VkBindBufferMemoryInfo-memoryOffset-01036",
+          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code>"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-createFlags-parameter",
-          "text": " <code>createFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccelerationStructureCreateFlagBitsKHR\">VkAccelerationStructureCreateFlagBitsKHR</a> values"
-        },
+          "vuid": "VUID-VkBindBufferMemoryInfo-size-01037",
+          "text": " The <code>size</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
         {
-          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-buffer-parameter",
-          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
+          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01444",
+          "text": " If <code>buffer</code> requires a dedicated allocation(as reported by <a href=\"#vkGetBufferMemoryRequirements2\">vkGetBufferMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::requiresDedicatedAllocation for <code>buffer</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> equal to <code>buffer</code>"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-type-parameter",
-          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureTypeKHR\">VkAccelerationStructureTypeKHR</a> value"
+          "vuid": "VUID-VkBindBufferMemoryInfo-memory-01508",
+          "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>buffer</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code>, and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
         }
-      ]
-    },
-    "vkGetAccelerationStructureBuildSizesKHR": {
-      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
-        {
-          "vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-rayTracingPipeline-03617",
-          "text": " The <a href=\"#features-rayTracingPipeline\"><code>rayTracingPipeline</code></a> or <a href=\"#features-rayQuery\"><code>rayQuery</code></a> feature <strong class=\"purple\">must</strong> be enabled"
-        },
+      ],
+      "(VK_VERSION_1_1)": [
         {
-          "vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-device-03618",
-          "text": " If <code>device</code> was created with multiple physical devices, then the <a href=\"#features-bufferDeviceAddressMultiDevice\">bufferDeviceAddressMultiDevice</a> feature <strong class=\"purple\">must</strong> be enabled"
+          "vuid": "VUID-VkBindBufferMemoryInfo-None-01898",
+          "text": " If buffer was created with the <code>VK_BUFFER_CREATE_PROTECTED_BIT</code> bit set, the buffer <strong class=\"purple\">must</strong> be bound to a memory object allocated with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>"
         },
         {
-          "vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-pBuildInfo-03619",
-          "text": " If <code>pBuildInfo-&gt;geometryCount</code> is not <code>0</code>, <code>pMaxPrimitiveCounts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pBuildInfo-&gt;geometryCount</code> <code>uint32_t</code> values"
-        },
+          "vuid": "VUID-VkBindBufferMemoryInfo-None-01899",
+          "text": " If buffer was created with the <code>VK_BUFFER_CREATE_PROTECTED_BIT</code> bit not set, the buffer <strong class=\"purple\">must</strong> not be bound to a memory object created with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>"
+        }
+      ],
+      "(VK_NV_dedicated_allocation)": [
         {
-          "vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-pBuildInfo-03785",
-          "text": " If <code>pBuildInfo-&gt;pGeometries</code> or <code>pBuildInfo-&gt;ppGeometries</code> has a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, each <code>pMaxPrimitiveCounts</code>[i] <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>maxInstanceCount</code>"
-        },
+          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01038",
+          "text": " If <code>buffer</code> was created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>::<code>buffer</code> equal to a buffer handle created with identical creation parameters to <code>buffer</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
+        }
+      ],
+      "(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
         {
-          "vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
-        },
+          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01039",
+          "text": " If <code>buffer</code> was not created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
         {
-          "vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-buildType-parameter",
-          "text": " <code>buildType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureBuildTypeKHR\">VkAccelerationStructureBuildTypeKHR</a> value"
-        },
+          "vuid": "VUID-VkBindBufferMemoryInfo-memory-02726",
+          "text": " If the value of <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> used to allocate <code>memory</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> include at least one of the handles set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_external_memory)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
         {
-          "vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-pBuildInfo-parameter",
-          "text": " <code>pBuildInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structure"
-        },
+          "vuid": "VUID-VkBindBufferMemoryInfo-memory-02727",
+          "text": " If <code>memory</code> was created by a memory import operation, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
         {
-          "vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-pMaxPrimitiveCounts-parameter",
-          "text": " <code>pMaxPrimitiveCounts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pBuildInfo-&gt;geometryCount</code> <code>uint32_t</code> values"
+          "vuid": "VUID-VkBindBufferMemoryInfo-memory-02985",
+          "text": " If <code>memory</code> was created by a memory import operation, that is not <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> with a non-<code>NULL</code> <code>buffer</code> value, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created"
         },
         {
-          "vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-pSizeInfo-parameter",
-          "text": " <code>pSizeInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkAccelerationStructureBuildSizesInfoKHR\">VkAccelerationStructureBuildSizesInfoKHR</a> structure"
+          "vuid": "VUID-VkBindBufferMemoryInfo-memory-02986",
+          "text": " If <code>memory</code> was created with the <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> memory import operation with a non-<code>NULL</code> <code>buffer</code> value, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created"
         }
-      ]
-    },
-    "VkAccelerationStructureBuildSizesInfoKHR": {
-      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
+      ],
+      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
         {
-          "vuid": "VUID-VkAccelerationStructureBuildSizesInfoKHR-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR</code>"
-        },
+          "vuid": "VUID-VkBindBufferMemoryInfo-bufferDeviceAddress-03339",
+          "text": " If the <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeatures\">VkPhysicalDeviceBufferDeviceAddressFeatures</a>::<code>bufferDeviceAddress</code> feature is enabled and <code>buffer</code> was created with the <code>VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT</code> bit set, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated with the <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT</code> bit set"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_device_group)": [
         {
-          "vuid": "VUID-VkAccelerationStructureBuildSizesInfoKHR-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-VkBindBufferMemoryInfo-pNext-01605",
+          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindBufferMemoryDeviceGroupInfo\">VkBindBufferMemoryDeviceGroupInfo</a> structure, all instances of <code>memory</code> specified by <a href=\"#VkBindBufferMemoryDeviceGroupInfo\">VkBindBufferMemoryDeviceGroupInfo</a>::<code>pDeviceIndices</code> <strong class=\"purple\">must</strong> have been allocated"
         }
-      ]
-    },
-    "VkGeometryNV": {
-      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
+      ],
+      "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
         {
-          "vuid": "VUID-VkGeometryNV-geometryType-03503",
-          "text": " <code>geometryType</code> <strong class=\"purple\">must</strong> be <code>VK_GEOMETRY_TYPE_TRIANGLES_NV</code> or <code>VK_GEOMETRY_TYPE_AABBS_NV</code>"
+          "vuid": "VUID-VkBindBufferMemoryInfo-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO</code>"
         },
         {
-          "vuid": "VUID-VkGeometryNV-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GEOMETRY_NV</code>"
+          "vuid": "VUID-VkBindBufferMemoryInfo-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=\"#VkBindBufferMemoryDeviceGroupInfo\">VkBindBufferMemoryDeviceGroupInfo</a>"
         },
         {
-          "vuid": "VUID-VkGeometryNV-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-VkBindBufferMemoryInfo-sType-unique",
+          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
         },
         {
-          "vuid": "VUID-VkGeometryNV-geometryType-parameter",
-          "text": " <code>geometryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryTypeKHR\">VkGeometryTypeKHR</a> value"
+          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-parameter",
+          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
         },
         {
-          "vuid": "VUID-VkGeometryNV-geometry-parameter",
-          "text": " <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryDataNV\">VkGeometryDataNV</a> structure"
+          "vuid": "VUID-VkBindBufferMemoryInfo-memory-parameter",
+          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
         },
         {
-          "vuid": "VUID-VkGeometryNV-flags-parameter",
-          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkGeometryFlagBitsKHR\">VkGeometryFlagBitsKHR</a> values"
+          "vuid": "VUID-VkBindBufferMemoryInfo-commonparent",
+          "text": " Both of <code>buffer</code>, and <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
         }
       ]
     },
-    "VkGeometryDataNV": {
-      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
+    "VkBindBufferMemoryDeviceGroupInfo": {
+      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
         {
-          "vuid": "VUID-VkGeometryDataNV-triangles-parameter",
-          "text": " <code>triangles</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryTrianglesNV\">VkGeometryTrianglesNV</a> structure"
+          "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-deviceIndexCount-01606",
+          "text": " <code>deviceIndexCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device"
         },
         {
-          "vuid": "VUID-VkGeometryDataNV-aabbs-parameter",
-          "text": " <code>aabbs</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryAABBNV\">VkGeometryAABBNV</a> structure"
+          "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-pDeviceIndices-01607",
+          "text": " All elements of <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices"
+        },
+        {
+          "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO</code>"
+        },
+        {
+          "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-pDeviceIndices-parameter",
+          "text": " If <code>deviceIndexCount</code> is not <code>0</code>, <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>deviceIndexCount</code> <code>uint32_t</code> values"
         }
       ]
     },
-    "VkGeometryTrianglesNV": {
-      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
+    "vkBindImageMemory": {
+      "core": [
         {
-          "vuid": "VUID-VkGeometryTrianglesNV-vertexOffset-02428",
-          "text": " <code>vertexOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>vertexData</code>"
+          "vuid": "VUID-vkBindImageMemory-image-01044",
+          "text": " <code>image</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
         },
         {
-          "vuid": "VUID-VkGeometryTrianglesNV-vertexOffset-02429",
-          "text": " <code>vertexOffset</code> <strong class=\"purple\">must</strong> be a multiple of the component size of <code>vertexFormat</code>"
+          "vuid": "VUID-vkBindImageMemory-image-01045",
+          "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
         },
         {
-          "vuid": "VUID-VkGeometryTrianglesNV-vertexFormat-02430",
-          "text": " <code>vertexFormat</code> <strong class=\"purple\">must</strong> be one of <code>VK_FORMAT_R32G32B32_SFLOAT</code>, <code>VK_FORMAT_R32G32_SFLOAT</code>, <code>VK_FORMAT_R16G16B16_SFLOAT</code>, <code>VK_FORMAT_R16G16_SFLOAT</code>, <code>VK_FORMAT_R16G16_SNORM</code>, or <code>VK_FORMAT_R16G16B16_SNORM</code>"
+          "vuid": "VUID-vkBindImageMemory-memoryOffset-01046",
+          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
         },
         {
-          "vuid": "VUID-VkGeometryTrianglesNV-vertexStride-03818",
-          "text": " <code>vertexStride</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>32</sup>-1</span>"
+          "vuid": "VUID-vkBindImageMemory-memory-01047",
+          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetImageMemoryRequirements</code> with <code>image</code>"
         },
         {
-          "vuid": "VUID-VkGeometryTrianglesNV-indexOffset-02431",
-          "text": " <code>indexOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>indexData</code>"
+          "vuid": "VUID-vkBindImageMemory-memoryOffset-01048",
+          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetImageMemoryRequirements</code> with <code>image</code>"
         },
         {
-          "vuid": "VUID-VkGeometryTrianglesNV-indexOffset-02432",
-          "text": " <code>indexOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of <code>indexType</code>"
+          "vuid": "VUID-vkBindImageMemory-size-01049",
+          "text": " The difference of the size of <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements\">vkGetImageMemoryRequirements</a> with the same <code>image</code>"
         },
         {
-          "vuid": "VUID-VkGeometryTrianglesNV-indexType-02433",
-          "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be <code>VK_INDEX_TYPE_UINT16</code>, <code>VK_INDEX_TYPE_UINT32</code>, or <code>VK_INDEX_TYPE_NONE_NV</code>"
+          "vuid": "VUID-vkBindImageMemory-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-VkGeometryTrianglesNV-indexData-02434",
-          "text": " <code>indexData</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> if <code>indexType</code> is <code>VK_INDEX_TYPE_NONE_NV</code>"
+          "vuid": "VUID-vkBindImageMemory-image-parameter",
+          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
         },
         {
-          "vuid": "VUID-VkGeometryTrianglesNV-indexData-02435",
-          "text": " <code>indexData</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle if <code>indexType</code> is not <code>VK_INDEX_TYPE_NONE_NV</code>"
+          "vuid": "VUID-vkBindImageMemory-memory-parameter",
+          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
         },
         {
-          "vuid": "VUID-VkGeometryTrianglesNV-indexCount-02436",
-          "text": " <code>indexCount</code> <strong class=\"purple\">must</strong> be <code>0</code> if <code>indexType</code> is <code>VK_INDEX_TYPE_NONE_NV</code>"
+          "vuid": "VUID-vkBindImageMemory-image-parent",
+          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
         },
         {
-          "vuid": "VUID-VkGeometryTrianglesNV-transformOffset-02437",
-          "text": " <code>transformOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>transformData</code>"
-        },
+          "vuid": "VUID-vkBindImageMemory-memory-parent",
+          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
         {
-          "vuid": "VUID-VkGeometryTrianglesNV-transformOffset-02438",
-          "text": " <code>transformOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>16</code>"
-        },
+          "vuid": "VUID-vkBindImageMemory-image-01445",
+          "text": " If <code>image</code> requires a dedicated allocation (as reported by <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::requiresDedicatedAllocation for <code>image</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> equal to <code>image</code>"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VK_NV_dedicated_allocation_image_aliasing)": [
         {
-          "vuid": "VUID-VkGeometryTrianglesNV-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV</code>"
+          "vuid": "VUID-vkBindImageMemory-memory-01509",
+          "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_NV_dedicated_allocation_image_aliasing)": [
+        {
+          "vuid": "VUID-vkBindImageMemory-memory-02628",
+          "text": " If the <a href=\"#features-dedicatedAllocationImageAliasing\">dedicated allocation image aliasing</a> feature is not enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
         },
         {
-          "vuid": "VUID-VkGeometryTrianglesNV-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-vkBindImageMemory-memory-02629",
+          "text": " If the <a href=\"#features-dedicatedAllocationImageAliasing\">dedicated allocation image aliasing</a> feature is enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero, and <code>image</code> <strong class=\"purple\">must</strong> be either equal to <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> or an image that was created using the same parameters in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>, with the exception that <code>extent</code> and <code>arrayLayers</code> <strong class=\"purple\">may</strong> differ subject to the following restrictions: every dimension in the <code>extent</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created; and the <code>arrayLayers</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created"
+        }
+      ],
+      "(VK_VERSION_1_1)": [
+        {
+          "vuid": "VUID-vkBindImageMemory-None-01901",
+          "text": " If image was created with the <code>VK_IMAGE_CREATE_PROTECTED_BIT</code> bit set, the image <strong class=\"purple\">must</strong> be bound to a memory object allocated with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>"
         },
         {
-          "vuid": "VUID-VkGeometryTrianglesNV-vertexData-parameter",
-          "text": " If <code>vertexData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>vertexData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
+          "vuid": "VUID-vkBindImageMemory-None-01902",
+          "text": " If image was created with the <code>VK_IMAGE_CREATE_PROTECTED_BIT</code> bit not set, the image <strong class=\"purple\">must</strong> not be bound to a memory object created with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>"
+        }
+      ],
+      "(VK_NV_dedicated_allocation)": [
+        {
+          "vuid": "VUID-vkBindImageMemory-image-01050",
+          "text": " If <code>image</code> was created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>::<code>image</code> equal to an image handle created with identical creation parameters to <code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
+        }
+      ],
+      "(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
+        {
+          "vuid": "VUID-vkBindImageMemory-image-01051",
+          "text": " If <code>image</code> was not created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
+        {
+          "vuid": "VUID-vkBindImageMemory-memory-02728",
+          "text": " If the value of <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> used to allocate <code>memory</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> include at least one of the handles set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_external_memory)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
+        {
+          "vuid": "VUID-vkBindImageMemory-memory-02729",
+          "text": " If <code>memory</code> was created by a memory import operation, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
+        {
+          "vuid": "VUID-vkBindImageMemory-memory-02989",
+          "text": " If <code>memory</code> was created by a memory import operation, that is not <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> with a non-<code>NULL</code> <code>buffer</code> value, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created"
         },
         {
-          "vuid": "VUID-VkGeometryTrianglesNV-vertexFormat-parameter",
-          "text": " <code>vertexFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
+          "vuid": "VUID-vkBindImageMemory-memory-02990",
+          "text": " If <code>memory</code> was created with the <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> memory import operation with a non-<code>NULL</code> <code>buffer</code> value, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+        {
+          "vuid": "VUID-vkBindImageMemory-image-01608",
+          "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> set"
+        }
+      ]
+    },
+    "vkBindImageMemory2": {
+      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
+        {
+          "vuid": "VUID-vkBindImageMemory2-pBindInfos-02858",
+          "text": " If any <a href=\"#VkBindImageMemoryInfo\">VkBindImageMemoryInfo</a>::image was created with <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> then all planes of <a href=\"#VkBindImageMemoryInfo\">VkBindImageMemoryInfo</a>::image <strong class=\"purple\">must</strong> be bound individually in separate <code>pBindInfos</code>"
         },
         {
-          "vuid": "VUID-VkGeometryTrianglesNV-indexData-parameter",
-          "text": " If <code>indexData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>indexData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
-        },
+          "vuid": "VUID-vkBindImageMemory2-pBindInfos-04006",
+          "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> not refer to the same image subresource more than once"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
         {
-          "vuid": "VUID-VkGeometryTrianglesNV-indexType-parameter",
-          "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value"
+          "vuid": "VUID-vkBindImageMemory2-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-VkGeometryTrianglesNV-transformData-parameter",
-          "text": " If <code>transformData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>transformData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
+          "vuid": "VUID-vkBindImageMemory2-pBindInfos-parameter",
+          "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <a href=\"#VkBindImageMemoryInfo\">VkBindImageMemoryInfo</a> structures"
         },
         {
-          "vuid": "VUID-VkGeometryTrianglesNV-commonparent",
-          "text": " Each of <code>indexData</code>, <code>transformData</code>, and <code>vertexData</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>"
+          "vuid": "VUID-vkBindImageMemory2-bindInfoCount-arraylength",
+          "text": " <code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
         }
       ]
     },
-    "VkGeometryAABBNV": {
-      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
+    "VkBindImageMemoryInfo": {
+      "core": [
         {
-          "vuid": "VUID-VkGeometryAABBNV-offset-02439",
-          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>aabbData</code>"
+          "vuid": "VUID-VkBindImageMemoryInfo-image-01044",
+          "text": " <code>image</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
         },
         {
-          "vuid": "VUID-VkGeometryAABBNV-offset-02440",
-          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>8</code>"
+          "vuid": "VUID-VkBindImageMemoryInfo-image-01045",
+          "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
         },
         {
-          "vuid": "VUID-VkGeometryAABBNV-stride-02441",
-          "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>8</code>"
-        },
+          "vuid": "VUID-VkBindImageMemoryInfo-memoryOffset-01046",
+          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
         {
-          "vuid": "VUID-VkGeometryAABBNV-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV</code>"
-        },
+          "vuid": "VUID-VkBindImageMemoryInfo-image-01445",
+          "text": " If <code>image</code> requires a dedicated allocation (as reported by <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::requiresDedicatedAllocation for <code>image</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> equal to <code>image</code>"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VK_NV_dedicated_allocation_image_aliasing)": [
         {
-          "vuid": "VUID-VkGeometryAABBNV-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-VkBindImageMemoryInfo-memory-01509",
+          "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_NV_dedicated_allocation_image_aliasing)": [
+        {
+          "vuid": "VUID-VkBindImageMemoryInfo-memory-02628",
+          "text": " If the <a href=\"#features-dedicatedAllocationImageAliasing\">dedicated allocation image aliasing</a> feature is not enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
         },
         {
-          "vuid": "VUID-VkGeometryAABBNV-aabbData-parameter",
-          "text": " If <code>aabbData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>aabbData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
+          "vuid": "VUID-VkBindImageMemoryInfo-memory-02629",
+          "text": " If the <a href=\"#features-dedicatedAllocationImageAliasing\">dedicated allocation image aliasing</a> feature is enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero, and <code>image</code> <strong class=\"purple\">must</strong> be either equal to <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> or an image that was created using the same parameters in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>, with the exception that <code>extent</code> and <code>arrayLayers</code> <strong class=\"purple\">may</strong> differ subject to the following restrictions: every dimension in the <code>extent</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created; and the <code>arrayLayers</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created"
         }
-      ]
-    },
-    "vkDestroyAccelerationStructureKHR": {
-      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
+      ],
+      "(VK_VERSION_1_1)": [
         {
-          "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02442",
-          "text": " All submitted commands that refer to <code>accelerationStructure</code> <strong class=\"purple\">must</strong> have completed execution"
+          "vuid": "VUID-VkBindImageMemoryInfo-None-01901",
+          "text": " If image was created with the <code>VK_IMAGE_CREATE_PROTECTED_BIT</code> bit set, the image <strong class=\"purple\">must</strong> be bound to a memory object allocated with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>"
         },
         {
-          "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02443",
-          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>accelerationStructure</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
-        },
+          "vuid": "VUID-VkBindImageMemoryInfo-None-01902",
+          "text": " If image was created with the <code>VK_IMAGE_CREATE_PROTECTED_BIT</code> bit not set, the image <strong class=\"purple\">must</strong> not be bound to a memory object created with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>"
+        }
+      ],
+      "(VK_NV_dedicated_allocation)": [
         {
-          "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02444",
-          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>accelerationStructure</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
-        },
+          "vuid": "VUID-VkBindImageMemoryInfo-image-01050",
+          "text": " If <code>image</code> was created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>::<code>image</code> equal to an image handle created with identical creation parameters to <code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
+        }
+      ],
+      "(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
         {
-          "vuid": "VUID-vkDestroyAccelerationStructureKHR-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
-        },
+          "vuid": "VUID-VkBindImageMemoryInfo-image-01051",
+          "text": " If <code>image</code> was not created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
         {
-          "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-parameter",
-          "text": " If <code>accelerationStructure</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
-        },
+          "vuid": "VUID-VkBindImageMemoryInfo-memory-02728",
+          "text": " If the value of <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> used to allocate <code>memory</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> include at least one of the handles set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_external_memory)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
         {
-          "vuid": "VUID-vkDestroyAccelerationStructureKHR-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"
+          "vuid": "VUID-VkBindImageMemoryInfo-memory-02729",
+          "text": " If <code>memory</code> was created by a memory import operation, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
+        {
+          "vuid": "VUID-VkBindImageMemoryInfo-memory-02989",
+          "text": " If <code>memory</code> was created by a memory import operation, that is not <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> with a non-<code>NULL</code> <code>buffer</code> value, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created"
         },
         {
-          "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-parent",
-          "text": " If <code>accelerationStructure</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+          "vuid": "VUID-VkBindImageMemoryInfo-memory-02990",
+          "text": " If <code>memory</code> was created with the <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> memory import operation with a non-<code>NULL</code> <code>buffer</code> value, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created"
         }
-      ]
-    },
-    "vkDestroyAccelerationStructureNV": {
-      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
+      ],
+      "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
         {
-          "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-03752",
-          "text": " All submitted commands that refer to <code>accelerationStructure</code> <strong class=\"purple\">must</strong> have completed execution"
+          "vuid": "VUID-VkBindImageMemoryInfo-memory-01612",
+          "text": " <code>memory</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 from a call to <a href=\"#vkGetImageMemoryRequirements\">vkGetImageMemoryRequirements</a> with <code>image</code>"
         },
         {
-          "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-03753",
-          "text": " If <code>VkAllocationCallbacks</code> were provided when <code>accelerationStructure</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
+          "vuid": "VUID-VkBindImageMemoryInfo-memoryOffset-01613",
+          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements\">vkGetImageMemoryRequirements</a> with <code>image</code>"
         },
         {
-          "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-03754",
-          "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>accelerationStructure</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
-        },
+          "vuid": "VUID-VkBindImageMemoryInfo-memory-01614",
+          "text": " The difference of the size of <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements\">vkGetImageMemoryRequirements</a> with the same <code>image</code>"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
         {
-          "vuid": "VUID-vkDestroyAccelerationStructureNV-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01615",
+          "text": " If the <code>pNext</code> chain does not include a <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memory</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 from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code>"
         },
         {
-          "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-parameter",
-          "text": " If <code>accelerationStructure</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle"
+          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01616",
+          "text": " If the <code>pNext</code> chain does not include a <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code>"
         },
         {
-          "vuid": "VUID-vkDestroyAccelerationStructureNV-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"
+          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01617",
+          "text": " If the <code>pNext</code> chain does not include a <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, the difference of the size of <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with the same <code>image</code>"
         },
         {
-          "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-parent",
-          "text": " If <code>accelerationStructure</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
-        }
-      ]
-    },
-    "vkGetAccelerationStructureMemoryRequirementsNV": {
-      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
+          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01618",
+          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>image</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> bit set"
+        },
         {
-          "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01619",
+          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memory</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 from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code> and where <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a>::<code>planeAspect</code> corresponds to the <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a>::<code>planeAspect</code> in the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure&#8217;s <code>pNext</code> chain"
         },
         {
-          "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-pInfo-parameter",
-          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureMemoryRequirementsInfoNV\">VkAccelerationStructureMemoryRequirementsInfoNV</a> structure"
+          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01620",
+          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code> and where <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a>::<code>planeAspect</code> corresponds to the <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a>::<code>planeAspect</code> in the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure&#8217;s <code>pNext</code> chain"
         },
         {
-          "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-pMemoryRequirements-parameter",
-          "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements2KHR\">VkMemoryRequirements2KHR</a> structure"
+          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01621",
+          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, the difference of the size of <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with the same <code>image</code> and where <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a>::<code>planeAspect</code> corresponds to the <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a>::<code>planeAspect</code> in the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure&#8217;s <code>pNext</code> chain"
         }
-      ]
-    },
-    "VkAccelerationStructureMemoryRequirementsInfoNV": {
-      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
+      ],
+      "!(VK_VERSION_1_1+VK_KHR_swapchain)+!(VK_KHR_device_group+VK_KHR_swapchain)": [
         {
-          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV</code>"
+          "vuid": "VUID-VkBindImageMemoryInfo-memory-01625",
+          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_device_group)": [
+        {
+          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01626",
+          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a> structure, all instances of <code>memory</code> specified by <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>pDeviceIndices</code> <strong class=\"purple\">must</strong> have been allocated"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01627",
+          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a> structure, and <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>splitInstanceBindRegionCount</code> is not zero, then <code>image</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT</code> bit set"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-type-parameter",
-          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureMemoryRequirementsTypeNV\">VkAccelerationStructureMemoryRequirementsTypeNV</a> value"
+          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01628",
+          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a> structure, all elements of <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be valid rectangles contained within the dimensions of <code>image</code>"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-accelerationStructure-parameter",
-          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle"
+          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01629",
+          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a> structure, the union of the areas of all elements of <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>pSplitInstanceBindRegions</code> that correspond to the same instance of <code>image</code> <strong class=\"purple\">must</strong> cover the entire image"
         }
-      ]
-    },
-    "vkBindAccelerationStructureMemoryNV": {
-      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
+      ],
+      "(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [
         {
-          "vuid": "VUID-vkBindAccelerationStructureMemoryNV-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-VkBindImageMemoryInfo-image-01630",
+          "text": " If <code>image</code> was created with a valid swapchain handle in <a href=\"#VkImageSwapchainCreateInfoKHR\">VkImageSwapchainCreateInfoKHR</a>::<code>swapchain</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a> structure containing the same swapchain handle"
         },
         {
-          "vuid": "VUID-vkBindAccelerationStructureMemoryNV-pBindInfos-parameter",
-          "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <a href=\"#VkBindAccelerationStructureMemoryInfoNV\">VkBindAccelerationStructureMemoryInfoNV</a> structures"
+          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01631",
+          "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a> structure, <code>memory</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
         },
         {
-          "vuid": "VUID-vkBindAccelerationStructureMemoryNV-bindInfoCount-arraylength",
-          "text": " <code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01632",
+          "text": " If the <code>pNext</code> chain does not include a <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a> structure, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
         }
-      ]
-    },
-    "VkBindAccelerationStructureMemoryInfoNV": {
-      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
+      ],
+      "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
         {
-          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-accelerationStructure-03620",
-          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
+          "vuid": "VUID-VkBindImageMemoryInfo-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO</code>"
         },
         {
-          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memoryOffset-03621",
-          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
+          "vuid": "VUID-VkBindImageMemoryInfo-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=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>, <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a>, or <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a>"
         },
         {
-          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memory-03622",
-          "text": " <code>memory</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 from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsNV\">vkGetAccelerationStructureMemoryRequirementsNV</a> with <code>accelerationStructure</code> and <code>type</code> of <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV</code>"
+          "vuid": "VUID-VkBindImageMemoryInfo-sType-unique",
+          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
         },
         {
-          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memoryOffset-03623",
-          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsNV\">vkGetAccelerationStructureMemoryRequirementsNV</a> with <code>accelerationStructure</code> and <code>type</code> of <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV</code>"
+          "vuid": "VUID-VkBindImageMemoryInfo-image-parameter",
+          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
         },
         {
-          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-size-03624",
-          "text": " The <code>size</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsNV\">vkGetAccelerationStructureMemoryRequirementsNV</a> with <code>accelerationStructure</code> and <code>type</code> of <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>"
-        },
+          "vuid": "VUID-VkBindImageMemoryInfo-commonparent",
+          "text": " Both of <code>image</code>, and <code>memory</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>"
+        }
+      ]
+    },
+    "VkBindImageMemoryDeviceGroupInfo": {
+      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
         {
-          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV</code>"
+          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-deviceIndexCount-01633",
+          "text": " At least one of <code>deviceIndexCount</code> and <code>splitInstanceBindRegionCount</code> <strong class=\"purple\">must</strong> be zero"
         },
         {
-          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-deviceIndexCount-01634",
+          "text": " <code>deviceIndexCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device"
         },
         {
-          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-accelerationStructure-parameter",
-          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle"
+          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-01635",
+          "text": " All elements of <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices"
         },
         {
-          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memory-parameter",
-          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
+          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-splitInstanceBindRegionCount-01636",
+          "text": " <code>splitInstanceBindRegionCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device squared"
         },
         {
-          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-pDeviceIndices-parameter",
-          "text": " If <code>deviceIndexCount</code> is not <code>0</code>, <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>deviceIndexCount</code> <code>uint32_t</code> values"
+          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pSplitInstanceBindRegions-01637",
+          "text": " Elements of <code>pSplitInstanceBindRegions</code> that correspond to the same instance of an image <strong class=\"purple\">must</strong> not overlap"
         },
         {
-          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-commonparent",
-          "text": " Both of <code>accelerationStructure</code>, and <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
-        }
-      ]
-    },
-    "vkGetAccelerationStructureHandleNV": {
-      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
-        {
-          "vuid": "VUID-vkGetAccelerationStructureHandleNV-dataSize-02240",
-          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be large enough to contain the result of the query, as described above"
+          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-offset-01638",
+          "text": " The <code>offset.x</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be a multiple of the sparse image block width (<code>VkSparseImageFormatProperties</code>::<code>imageGranularity.width</code>) of all non-metadata aspects of the image"
         },
         {
-          "vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-02787",
-          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object via <a href=\"#vkBindAccelerationStructureMemoryNV\">vkBindAccelerationStructureMemoryNV</a>"
+          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-offset-01639",
+          "text": " The <code>offset.y</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be a multiple of the sparse image block height (<code>VkSparseImageFormatProperties</code>::<code>imageGranularity.height</code>) of all non-metadata aspects of the image"
         },
         {
-          "vuid": "VUID-vkGetAccelerationStructureHandleNV-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-extent-01640",
+          "text": " The <code>extent.width</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block width of all non-metadata aspects of the image, or else <code>extent.width</code> &#43; <code>offset.x</code> <strong class=\"purple\">must</strong> equal the width of the image subresource"
         },
         {
-          "vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parameter",
-          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle"
+          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-extent-01641",
+          "text": " The <code>extent.height</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block height of all non-metadata aspects of the image, or else <code>extent.height</code> &#43; <code>offset.y</code> <strong class=\"purple\">must</strong> equal the width of the image subresource"
         },
         {
-          "vuid": "VUID-vkGetAccelerationStructureHandleNV-pData-parameter",
-          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
+          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO</code>"
         },
         {
-          "vuid": "VUID-vkGetAccelerationStructureHandleNV-dataSize-arraylength",
-          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-parameter",
+          "text": " If <code>deviceIndexCount</code> is not <code>0</code>, <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>deviceIndexCount</code> <code>uint32_t</code> values"
         },
         {
-          "vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parent",
-          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pSplitInstanceBindRegions-parameter",
+          "text": " If <code>splitInstanceBindRegionCount</code> is not <code>0</code>, <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>splitInstanceBindRegionCount</code> <a href=\"#VkRect2D\">VkRect2D</a> structures"
         }
       ]
     },
-    "vkGetAccelerationStructureDeviceAddressKHR": {
-      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
+    "VkBindImageMemorySwapchainInfoKHR": {
+      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [
         {
-          "vuid": "VUID-vkGetAccelerationStructureDeviceAddressKHR-device-03504",
-          "text": " If <code>device</code> was created with multiple physical devices, then the <a href=\"#features-bufferDeviceAddressMultiDevice\">bufferDeviceAddressMultiDevice</a> feature <strong class=\"purple\">must</strong> be enabled"
+          "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-imageIndex-01644",
+          "text": " <code>imageIndex</code> <strong class=\"purple\">must</strong> be less than the number of images in <code>swapchain</code>"
         },
         {
-          "vuid": "VUID-vkGetAccelerationStructureDeviceAddressKHR-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR</code>"
         },
         {
-          "vuid": "VUID-vkGetAccelerationStructureDeviceAddressKHR-pInfo-parameter",
-          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureDeviceAddressInfoKHR\">VkAccelerationStructureDeviceAddressInfoKHR</a> structure"
+          "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-swapchain-parameter",
+          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle"
         }
       ]
     },
-    "VkAccelerationStructureDeviceAddressInfoKHR": {
-      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
+    "VkBindImagePlaneMemoryInfo": {
+      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
         {
-          "vuid": "VUID-VkAccelerationStructureDeviceAddressInfoKHR-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR</code>"
+          "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-02283",
+          "text": " If the image&#8217;s <code>tiling</code> is <code>VK_IMAGE_TILING_LINEAR</code> or <code>VK_IMAGE_TILING_OPTIMAL</code>, then <code>planeAspect</code> <strong class=\"purple\">must</strong> be a single valid <em>format plane</em> for the image (that is, for a two-plane image <code>planeAspect</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, and for a three-plane image <code>planeAspect</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>)"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureDeviceAddressInfoKHR-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-VkBindImagePlaneMemoryInfo-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO</code>"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureDeviceAddressInfoKHR-accelerationStructure-parameter",
-          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
+          "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-parameter",
+          "text": " <code>planeAspect</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> value"
+        }
+      ],
+      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [
+        {
+          "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-02284",
+          "text": " If the image&#8217;s <code>tiling</code> is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then <code>planeAspect</code> <strong class=\"purple\">must</strong> be a single valid <em>memory plane</em> for the image (that is, <code>aspectMask</code> <strong class=\"purple\">must</strong> specify a plane index that is less than the <a href=\"#VkDrmFormatModifierPropertiesEXT\">VkDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifierPlaneCount</code> associated with the image&#8217;s <code>format</code> and <a href=\"#VkImageDrmFormatModifierPropertiesEXT\">VkImageDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifier</code>)"
         }
       ]
     },
       ]
     },
     "VkWriteDescriptorSetAccelerationStructureKHR": {
-      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
+      "(VK_KHR_acceleration_structure)": [
         {
           "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureKHR-accelerationStructureCount-02236",
           "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be equal to <code>descriptorCount</code> in the extended structure"
       ]
     },
     "VkWriteDescriptorSetAccelerationStructureNV": {
-      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
+      "(VK_NV_ray_tracing)": [
         {
           "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-accelerationStructureCount-03747",
           "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be equal to <code>descriptorCount</code> in the extended structure"
         },
         {
           "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-pData-01686",
-          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to a memory containing one or more valid instances of <a href=\"#VkDescriptorImageInfo\">VkDescriptorImageInfo</a>, <a href=\"#VkDescriptorBufferInfo\">VkDescriptorBufferInfo</a>, or <a href=\"#VkBufferView\">VkBufferView</a> in a layout defined by <code>descriptorUpdateTemplate</code> when it was created with <a href=\"#vkCreateDescriptorUpdateTemplateKHR\">vkCreateDescriptorUpdateTemplateKHR</a>"
+          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to a memory containing one or more valid instances of <a href=\"#VkDescriptorImageInfo\">VkDescriptorImageInfo</a>, <a href=\"#VkDescriptorBufferInfo\">VkDescriptorBufferInfo</a>, or <a href=\"#VkBufferView\">VkBufferView</a> in a layout defined by <code>descriptorUpdateTemplate</code> when it was created with <a href=\"#vkCreateDescriptorUpdateTemplate\">vkCreateDescriptorUpdateTemplate</a>"
         },
         {
           "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-parameter",
           "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
         }
       ],
+      "(VK_KHR_acceleration_structure)": [
+        {
+          "vuid": "VUID-vkCmdBeginQuery-queryType-04728",
+          "text": " The <code>queryType</code> used to create <code>queryPool</code> <strong class=\"purple\">must</strong> not be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code> or <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>"
+        }
+      ],
+      "(VK_NV_ray_tracing)": [
+        {
+          "vuid": "VUID-vkCmdBeginQuery-queryType-04729",
+          "text": " The <code>queryType</code> used to create <code>queryPool</code> <strong class=\"purple\">must</strong> not be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV</code>"
+        }
+      ],
       "(VK_VERSION_1_1)": [
         {
           "vuid": "VUID-vkCmdBeginQuery-commandBuffer-01885",
           "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> then <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>transformFeedbackQueries</code> <strong class=\"purple\">must</strong> be supported"
         }
       ],
+      "(VK_KHR_acceleration_structure)": [
+        {
+          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-04728",
+          "text": " The <code>queryType</code> used to create <code>queryPool</code> <strong class=\"purple\">must</strong> not be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code> or <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>"
+        }
+      ],
+      "(VK_NV_ray_tracing)": [
+        {
+          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-04729",
+          "text": " The <code>queryType</code> used to create <code>queryPool</code> <strong class=\"purple\">must</strong> not be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV</code>"
+        }
+      ],
       "(VK_VERSION_1_1)": [
         {
           "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-01885",
           "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_3D</code>, for each element of <code>pRegions</code>, <code>imageSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
         },
         {
+          "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-04725",
+          "text": " If {imageparam} is not a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferRowLength</code> multiplied by the texel block size of {imageparam} <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>31</sup>-1</span>"
+        },
+        {
+          "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-04726",
+          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferRowLength</code> divided by the compressed texel block width and then multiplied by the texel block size of {imageparam} <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>31</sup>-1</span>"
+        },
+        {
           "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-parameter",
           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
         },
           "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_3D</code>, for each element of <code>pRegions</code>, <code>imageSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
         },
         {
+          "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-04725",
+          "text": " If {imageparam} is not a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferRowLength</code> multiplied by the texel block size of {imageparam} <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>31</sup>-1</span>"
+        },
+        {
+          "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-04726",
+          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferRowLength</code> divided by the compressed texel block width and then multiplied by the texel block size of {imageparam} <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>31</sup>-1</span>"
+        },
+        {
           "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-parameter",
           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
         },
         {
           "vuid": "VUID-VkCopyBufferToImageInfo2KHR-baseArrayLayer-00213",
           "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_3D</code>, for each element of <code>pRegions</code>, <code>imageSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
+        },
+        {
+          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-04725",
+          "text": " If {imageparam} is not a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferRowLength</code> multiplied by the texel block size of {imageparam} <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>31</sup>-1</span>"
+        },
+        {
+          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-04726",
+          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferRowLength</code> divided by the compressed texel block width and then multiplied by the texel block size of {imageparam} <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>31</sup>-1</span>"
         }
       ],
       "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
         {
           "vuid": "VUID-VkCopyImageToBufferInfo2KHR-baseArrayLayer-00213",
           "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_3D</code>, for each element of <code>pRegions</code>, <code>imageSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
+        },
+        {
+          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-04725",
+          "text": " If {imageparam} is not a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferRowLength</code> multiplied by the texel block size of {imageparam} <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>31</sup>-1</span>"
+        },
+        {
+          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-04726",
+          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferRowLength</code> divided by the compressed texel block width and then multiplied by the texel block size of {imageparam} <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>31</sup>-1</span>"
         }
       ],
       "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
           "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the <a href=\"#renderpass-attachment-nonattachment\">Render Pass</a> chapter"
         },
         {
+          "vuid": "VUID-vkCmdDraw-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&#8217;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>"
+        },
+        {
           "vuid": "VUID-vkCmdDraw-None-04007",
           "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound"
         },
           "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the <a href=\"#renderpass-attachment-nonattachment\">Render Pass</a> chapter"
         },
         {
+          "vuid": "VUID-vkCmdDrawIndexed-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&#8217;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>"
+        },
+        {
           "vuid": "VUID-vkCmdDrawIndexed-None-04007",
           "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound"
         },
           "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the <a href=\"#renderpass-attachment-nonattachment\">Render Pass</a> chapter"
         },
         {
+          "vuid": "VUID-vkCmdDrawIndirect-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&#8217;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>"
+        },
+        {
           "vuid": "VUID-vkCmdDrawIndirect-None-04007",
           "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound"
         },
           "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the <a href=\"#renderpass-attachment-nonattachment\">Render Pass</a> chapter"
         },
         {
+          "vuid": "VUID-vkCmdDrawIndirectCount-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&#8217;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>"
+        },
+        {
           "vuid": "VUID-vkCmdDrawIndirectCount-None-04007",
           "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound"
         },
           "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the <a href=\"#renderpass-attachment-nonattachment\">Render Pass</a> chapter"
         },
         {
+          "vuid": "VUID-vkCmdDrawIndexedIndirect-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&#8217;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>"
+        },
+        {
           "vuid": "VUID-vkCmdDrawIndexedIndirect-None-04007",
           "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound"
         },
           "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the <a href=\"#renderpass-attachment-nonattachment\">Render Pass</a> chapter"
         },
         {
+          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-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&#8217;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>"
+        },
+        {
           "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04007",
           "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound"
         },
           "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the <a href=\"#renderpass-attachment-nonattachment\">Render Pass</a> chapter"
         },
         {
+          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-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&#8217;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>"
+        },
+        {
           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-04007",
           "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound"
         },
           "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the <a href=\"#renderpass-attachment-nonattachment\">Render Pass</a> chapter"
         },
         {
+          "vuid": "VUID-vkCmdDrawMeshTasksNV-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&#8217;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>"
+        },
+        {
           "vuid": "VUID-vkCmdDrawMeshTasksNV-taskCount-02119",
           "text": " <code>taskCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesNV</code>::<code>maxDrawMeshTasksCount</code>"
         }
           "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the <a href=\"#renderpass-attachment-nonattachment\">Render Pass</a> chapter"
         },
         {
+          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-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&#8217;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>"
+        },
+        {
           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02708",
           "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
         },
           "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the <a href=\"#renderpass-attachment-nonattachment\">Render Pass</a> chapter"
         },
         {
+          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-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&#8217;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>"
+        },
+        {
           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02708",
           "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
         },
           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT</code>"
         },
         {
-          "vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsPerPixel-parameter",
-          "text": " If <code>sampleLocationsPerPixel</code> is not <code>0</code>, <code>sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
-        },
-        {
           "vuid": "VUID-VkSampleLocationsInfoEXT-pSampleLocations-parameter",
           "text": " If <code>sampleLocationsCount</code> is not <code>0</code>, <code>pSampleLocations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>sampleLocationsCount</code> <a href=\"#VkSampleLocationEXT\">VkSampleLocationEXT</a> structures"
         }
           "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command, except for cases involving read-only access to depth/stencil attachments as described in the <a href=\"#renderpass-attachment-nonattachment\">Render Pass</a> chapter"
         },
         {
+          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-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&#8217;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>"
+        },
+        {
           "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-04007",
           "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound"
         },
         },
         {
           "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-01255",
-          "text": " <code>alphaMode</code> <strong class=\"purple\">must</strong> be <code>0</code> or one of the bits present in the <code>supportedAlpha</code> member of <code>VkDisplayPlaneCapabilitiesKHR</code> returned by <code>vkGetDisplayPlaneCapabilitiesKHR</code> for the display plane corresponding to <code>displayMode</code>"
+          "text": " <code>alphaMode</code> <strong class=\"purple\">must</strong> be one of the bits present in the <code>supportedAlpha</code> member of <code>VkDisplayPlaneCapabilitiesKHR</code> for the display plane corresponding to <code>displayMode</code>"
         },
         {
           "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-width-01256",
           "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"
         },
         {
-          "vuid": "VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-parent",
-          "text": " If <code>privateDataSlot</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
-        }
-      ]
-    },
-    "vkSetPrivateDataEXT": {
-      "(VK_EXT_private_data)": [
+          "vuid": "VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-parent",
+          "text": " If <code>privateDataSlot</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+        }
+      ]
+    },
+    "vkSetPrivateDataEXT": {
+      "(VK_EXT_private_data)": [
+        {
+          "vuid": "VUID-vkSetPrivateDataEXT-objectHandle-04016",
+          "text": " <code>objectHandle</code> <strong class=\"purple\">must</strong> be <code>device</code> or a child of <code>device</code>"
+        },
+        {
+          "vuid": "VUID-vkSetPrivateDataEXT-objectHandle-04017",
+          "text": " <code>objectHandle</code> <strong class=\"purple\">must</strong> be a valid handle to an object of type <code>objectType</code>"
+        },
+        {
+          "vuid": "VUID-vkSetPrivateDataEXT-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+        },
+        {
+          "vuid": "VUID-vkSetPrivateDataEXT-objectType-parameter",
+          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectType\">VkObjectType</a> value"
+        },
+        {
+          "vuid": "VUID-vkSetPrivateDataEXT-privateDataSlot-parameter",
+          "text": " <code>privateDataSlot</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPrivateDataSlotEXT\">VkPrivateDataSlotEXT</a> handle"
+        },
+        {
+          "vuid": "VUID-vkSetPrivateDataEXT-privateDataSlot-parent",
+          "text": " <code>privateDataSlot</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+        }
+      ]
+    },
+    "vkGetPrivateDataEXT": {
+      "(VK_EXT_private_data)": [
+        {
+          "vuid": "VUID-vkGetPrivateDataEXT-objectType-04018",
+          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be <code>VK_OBJECT_TYPE_DEVICE</code>, or an object type whose parent is <a href=\"#VkDevice\">VkDevice</a>"
+        },
+        {
+          "vuid": "VUID-vkGetPrivateDataEXT-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+        },
+        {
+          "vuid": "VUID-vkGetPrivateDataEXT-objectType-parameter",
+          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectType\">VkObjectType</a> value"
+        },
+        {
+          "vuid": "VUID-vkGetPrivateDataEXT-privateDataSlot-parameter",
+          "text": " <code>privateDataSlot</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPrivateDataSlotEXT\">VkPrivateDataSlotEXT</a> handle"
+        },
+        {
+          "vuid": "VUID-vkGetPrivateDataEXT-pData-parameter",
+          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint64_t</code> value"
+        },
+        {
+          "vuid": "VUID-vkGetPrivateDataEXT-privateDataSlot-parent",
+          "text": " <code>privateDataSlot</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+        }
+      ]
+    },
+    "vkCmdBuildAccelerationStructureNV": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
+        {
+          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-geometryCount-02241",
+          "text": " <code>geometryCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxGeometryCount</code>"
+        },
+        {
+          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-dst-02488",
+          "text": " <code>dst</code> <strong class=\"purple\">must</strong> have been created with compatible <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a> where <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>type</code> and <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>flags</code> are identical, <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>instanceCount</code> and <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>geometryCount</code> for <code>dst</code> are greater than or equal to the build size and each geometry in <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>pGeometries</code> for <code>dst</code> has greater than or equal to the number of vertices, indices, and AABBs"
+        },
+        {
+          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02489",
+          "text": " If <code>update</code> is <code>VK_TRUE</code>, <code>src</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
+        },
+        {
+          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02490",
+          "text": " If <code>update</code> is <code>VK_TRUE</code>, <code>src</code> <strong class=\"purple\">must</strong> have been built before with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV</code> set in <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>flags</code>"
+        },
+        {
+          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02491",
+          "text": " If <code>update</code> is <code>VK_FALSE</code>, the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsNV\">vkGetAccelerationStructureMemoryRequirementsNV</a> with <a href=\"#VkAccelerationStructureMemoryRequirementsInfoNV\">VkAccelerationStructureMemoryRequirementsInfoNV</a>::<code>accelerationStructure</code> set to <code>dst</code> and <a href=\"#VkAccelerationStructureMemoryRequirementsInfoNV\">VkAccelerationStructureMemoryRequirementsInfoNV</a>::<code>type</code> set to <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>scratch</code> minus <code>scratchOffset</code>"
+        },
+        {
+          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02492",
+          "text": " If <code>update</code> is <code>VK_TRUE</code>, the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsNV\">vkGetAccelerationStructureMemoryRequirementsNV</a> with <a href=\"#VkAccelerationStructureMemoryRequirementsInfoNV\">VkAccelerationStructureMemoryRequirementsInfoNV</a>::<code>accelerationStructure</code> set to <code>dst</code> and <a href=\"#VkAccelerationStructureMemoryRequirementsInfoNV\">VkAccelerationStructureMemoryRequirementsInfoNV</a>::<code>type</code> set to <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>scratch</code> minus <code>scratchOffset</code>"
+        },
+        {
+          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-scratch-03522",
+          "text": " <code>scratch</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_RAY_TRACING_BIT_NV</code> usage flag"
+        },
+        {
+          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-instanceData-03523",
+          "text": " If <code>instanceData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>instanceData</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_RAY_TRACING_BIT_NV</code> usage flag"
+        },
+        {
+          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-accelerationStructureReference-03786",
+          "text": " Each <a href=\"#VkAccelerationStructureInstanceKHR\">VkAccelerationStructureInstanceKHR</a>::<code>accelerationStructureReference</code> value in <code>instanceData</code> <strong class=\"purple\">must</strong> be a valid device address containing a value obtained from <a href=\"#vkGetAccelerationStructureHandleNV\">vkGetAccelerationStructureHandleNV</a>"
+        },
+        {
+          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-03524",
+          "text": " If <code>update</code> is <code>VK_TRUE</code>, then objects that were previously active <strong class=\"purple\">must</strong> not be made inactive as per <a href=\"#acceleration-structure-inactive-prims\">Inactive Primitives and Instances</a>"
+        },
         {
-          "vuid": "VUID-vkSetPrivateDataEXT-objectHandle-04016",
-          "text": " <code>objectHandle</code> <strong class=\"purple\">must</strong> be <code>device</code> or a child of <code>device</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-03525",
+          "text": " If <code>update</code> is <code>VK_TRUE</code>, then objects that were previously inactive <strong class=\"purple\">must</strong> not be made active as per <a href=\"#acceleration-structure-inactive-prims\">Inactive Primitives and Instances</a>"
         },
         {
-          "vuid": "VUID-vkSetPrivateDataEXT-objectHandle-04017",
-          "text": " <code>objectHandle</code> <strong class=\"purple\">must</strong> be a valid handle to an object of type <code>objectType</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-03526",
+          "text": " If <code>update</code> is <code>VK_TRUE</code>, the <code>src</code> and <code>dst</code> objects <strong class=\"purple\">must</strong> either be the same object or not have any <a href=\"#resources-memory-aliasing\">memory aliasing</a>"
         },
         {
-          "vuid": "VUID-vkSetPrivateDataEXT-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-parameter",
+          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
         },
         {
-          "vuid": "VUID-vkSetPrivateDataEXT-objectType-parameter",
-          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectType\">VkObjectType</a> value"
+          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-pInfo-parameter",
+          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a> structure"
         },
         {
-          "vuid": "VUID-vkSetPrivateDataEXT-privateDataSlot-parameter",
-          "text": " <code>privateDataSlot</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPrivateDataSlotEXT\">VkPrivateDataSlotEXT</a> handle"
+          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-instanceData-parameter",
+          "text": " If <code>instanceData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>instanceData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
         },
         {
-          "vuid": "VUID-vkSetPrivateDataEXT-privateDataSlot-parent",
-          "text": " <code>privateDataSlot</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
-        }
-      ]
-    },
-    "vkGetPrivateDataEXT": {
-      "(VK_EXT_private_data)": [
+          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-dst-parameter",
+          "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle"
+        },
         {
-          "vuid": "VUID-vkGetPrivateDataEXT-objectType-04018",
-          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be <code>VK_OBJECT_TYPE_DEVICE</code>, or an object type whose parent is <a href=\"#VkDevice\">VkDevice</a>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-src-parameter",
+          "text": " If <code>src</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>src</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle"
         },
         {
-          "vuid": "VUID-vkGetPrivateDataEXT-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-scratch-parameter",
+          "text": " <code>scratch</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
         },
         {
-          "vuid": "VUID-vkGetPrivateDataEXT-objectType-parameter",
-          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectType\">VkObjectType</a> value"
+          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-recording",
+          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
         },
         {
-          "vuid": "VUID-vkGetPrivateDataEXT-privateDataSlot-parameter",
-          "text": " <code>privateDataSlot</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPrivateDataSlotEXT\">VkPrivateDataSlotEXT</a> handle"
+          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-cmdpool",
+          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
         },
         {
-          "vuid": "VUID-vkGetPrivateDataEXT-pData-parameter",
-          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint64_t</code> value"
+          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-renderpass",
+          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
         },
         {
-          "vuid": "VUID-vkGetPrivateDataEXT-privateDataSlot-parent",
-          "text": " <code>privateDataSlot</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commonparent",
+          "text": " Each of <code>commandBuffer</code>, <code>dst</code>, <code>instanceData</code>, <code>scratch</code>, and <code>src</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>"
         }
       ]
     },
-    "vkCmdTraceRaysNV": {
+    "vkCmdBuildAccelerationStructuresKHR": {
       "core": [
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-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> 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&#8217;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>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-mode-04628",
+          "text": " The <code>mode</code> member of each element of <code>pInfos</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuildAccelerationStructureModeKHR\">VkBuildAccelerationStructureModeKHR</a> value"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-None-02691",
-          "text": " If a <code>VkImageView</code> is accessed using atomic operations as a result of this command, then the image view&#8217;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>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-srcAccelerationStructure-04629",
+          "text": " If the <code>srcAccelerationStructure</code> member of any element of <code>pInfos</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-None-02697",
-          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-04630",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-None-02698",
-          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03403",
+          "text": " The <code>srcAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> not be the same acceleration structure as the <code>dstAccelerationStructure</code> member of any other element of <code>pInfos</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-None-02699",
-          "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03698",
+          "text": " The <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> not be the same acceleration structure as the <code>dstAccelerationStructure</code> member of any other element of <code>pInfos</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-None-02700",
-          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03800",
+          "text": " The <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02701",
-          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03699",
+          "text": " For each element of <code>pInfos</code>, if its <code>type</code> member is <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code>, its <code>dstAccelerationStructure</code> member <strong class=\"purple\">must</strong> have been created with a value of <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>type</code> equal to either <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code> or <code>VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-None-02859",
-          "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03700",
+          "text": " For each element of <code>pInfos</code>, if its <code>type</code> member is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code>, its <code>dstAccelerationStructure</code> member <strong class=\"purple\">must</strong> have been created with a value of <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>type</code> equal to either <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code> or <code>VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-None-02702",
-          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> 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"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03663",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, <a href=\"#acceleration-structure-inactive-prims\">inactive primitives</a> in its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> not be made active"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-None-02703",
-          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> 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"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03664",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, active primitives in its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> not be made <a href=\"#acceleration-structure-inactive-prims\">inactive</a>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-None-02704",
-          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> 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"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-None-03407",
+          "text": " The <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> not be referenced by the <code>geometry.instances.data</code> member of any element of <code>pGeometries</code> or <code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code> in any other element of <code>pInfos</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-None-02705",
-          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound 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"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03701",
+          "text": " The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>srcAccelerationStructure</code> member of any other element of <code>pInfos</code> with a <code>mode</code> equal to <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, which is accessed by this command"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-None-02706",
-          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound 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"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03702",
+          "text": " The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>dstAccelerationStructure</code> member of any other element of <code>pInfos</code>, which is accessed by this command"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-None-04115",
-          "text": " If a <a href=\"#VkImageView\">VkImageView</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 image view&#8217;s format."
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03703",
+          "text": " The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>scratchData</code> member of any element of <code>pInfos</code> (including the same element), which is accessed by this command"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-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 image view&#8217;s format."
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-scratchData-03704",
+          "text": " The range of memory backing the <code>scratchData</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>scratchData</code> member of any other element of <code>pInfos</code>, which is accessed by this command"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-None-03429",
-          "text": " Any shader group handle referenced by this call <strong class=\"purple\">must</strong> have been queried from the currently bound ray tracing shader pipeline"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-scratchData-03705",
+          "text": " The range of memory backing the <code>scratchData</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>srcAccelerationStructure</code> member of any element of <code>pInfos</code> with a <code>mode</code> equal to <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code> (including the same element), which is accessed by this command"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-04624",
-          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03706",
+          "text": " The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing any acceleration structure referenced by the <code>geometry.instances.data</code> member of any element of <code>pGeometries</code> or <code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code> in any other element of <code>pInfos</code>, which is accessed by this command"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-maxRecursionDepth-03625",
-          "text": " This command <strong class=\"purple\">must</strong> not cause a trace ray instruction to be executed from a shader invocation with a <a href=\"#ray-tracing-recursion-depth\">recursion depth</a> greater than the value of <code>maxRecursionDepth</code> used to create the bound ray tracing pipeline"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03666",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-04042",
-          "text": " If <code>raygenShaderBindingTableBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03667",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> have been built before with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR</code> set in <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a>::<code>flags</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02455",
-          "text": " <code>raygenShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>raygenShaderBindingTableBuffer</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03668",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>srcAccelerationStructure</code> and <code>dstAccelerationStructure</code> members <strong class=\"purple\">must</strong> either be the same <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a>, or not have any <a href=\"#resources-memory-aliasing\">memory aliasing</a>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02456",
-          "text": " <code>raygenShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03758",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>geometryCount</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-04043",
-          "text": " If <code>missShaderBindingTableBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03759",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>flags</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02457",
-          "text": " <code>missShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>missShaderBindingTableBuffer</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03760",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>type</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02458",
-          "text": " <code>missShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03761",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, its <code>geometryType</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingTableBuffer-04044",
-          "text": " If <code>hitShaderBindingTableBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03762",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, its <code>flags</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02459",
-          "text": " <code>hitShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>hitShaderBindingTableBuffer</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03763",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, its <code>geometry.triangles.vertexFormat</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02460",
-          "text": " <code>hitShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03764",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, its <code>geometry.triangles.maxVertex</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingTableBuffer-04045",
-          "text": " If <code>callableShaderBindingTableBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03765",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, its <code>geometry.triangles.indexType</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02461",
-          "text": " <code>callableShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>callableShaderBindingTableBuffer</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03766",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if its <code>geometry.triangles.transformData</code> member was NULL when <code>srcAccelerationStructure</code> was last built, then it must be NULL."
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02462",
-          "text": " <code>callableShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03767",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if its <code>geometry.triangles.transformData</code> member was not NULL when <code>srcAccelerationStructure</code> was last built, then it may not be NULL."
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingStride-02463",
-          "text": " <code>missShaderBindingStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03768",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, and <code>geometry.triangles.indexType</code> is not <code>VK_INDEX_TYPE_NONE_KHR</code>, then the value of each index referenced index must be the same as the corresponding index value when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02464",
-          "text": " <code>hitShaderBindingStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-primitiveCount-03769",
+          "text": " For each <code>VkAccelerationStructureBuildRangeInfoKHR</code> referenced by this command, its <code>primitiveCount</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02465",
-          "text": " <code>callableShaderBindingStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-firstVertex-03770",
+          "text": " For each <code>VkAccelerationStructureBuildRangeInfoKHR</code> referenced by this command, if the corresponding geometry uses indices, its <code>firstVertex</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingStride-02466",
-          "text": " <code>missShaderBindingStride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxShaderGroupStride</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03801",
+          "text": " For each element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, the corresponding {maxinstancecheck} <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>maxInstanceCount</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02467",
-          "text": " <code>hitShaderBindingStride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxShaderGroupStride</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03707",
+          "text": " For each element of <code>pInfos</code>, the <code>buffer</code> used to create its <code>dstAccelerationStructure</code> member <strong class=\"purple\">must</strong> be bound to device memory"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02468",
-          "text": " <code>callableShaderBindingStride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxShaderGroupStride</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03708",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code> the <code>buffer</code> used to create its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> be bound to device memory"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-width-02469",
-          "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03709",
+          "text": " For each element of <code>pInfos</code>, the <code>buffer</code> used to create each acceleration structure referenced by the <code>geometry.instances.data</code> member of any element of <code>pGeometries</code> or <code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code> <strong class=\"purple\">must</strong> be bound to device memory"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-height-02470",
-          "text": " <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03671",
+          "text": " If <code>pInfos</code>[i].<code>mode</code> is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR</code>, all addresses between <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> and <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> + N - 1 <strong class=\"purple\">must</strong> be in the buffer device address range of the same buffer, where N is given by the <code>buildScratchSize</code> member of the <a href=\"#VkAccelerationStructureBuildSizesInfoKHR\">VkAccelerationStructureBuildSizesInfoKHR</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureBuildSizesKHR\">vkGetAccelerationStructureBuildSizesKHR</a> with an identical <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structure and primitive count"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-depth-02471",
-          "text": " <code>depth</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]"
-        }
-      ],
-      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
-        {
-          "vuid": "VUID-vkCmdTraceRaysNV-None-02692",
-          "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view&#8217;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>"
-        }
-      ],
-      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03672",
+          "text": " If <code>pInfos</code>[i].<code>mode</code> is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, all addresses between <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> and <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> + N - 1 <strong class=\"purple\">must</strong> be in the buffer device address range of the same buffer, where N is given by the <code>updateScratchSize</code> member of the <a href=\"#VkAccelerationStructureBuildSizesInfoKHR\">VkAccelerationStructureBuildSizesInfoKHR</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureBuildSizesKHR\">vkGetAccelerationStructureBuildSizesKHR</a> with an identical <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structure and primitive count"
+        },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-None-02693",
-          "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> 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>"
-        }
-      ],
-      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-geometry-03673",
+          "text": " The buffers from which the buffer device addresses for all of the <code>geometry.triangles.vertexData</code>, <code>geometry.triangles.indexData</code>, <code>geometry.triangles.transformData</code>, <code>geometry.aabbs.data</code>, and <code>geometry.instances.data</code> members of all <code>pInfos</code>[i].<code>pGeometries</code> and <code>pInfos</code>[i].<code>ppGeometries</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR</code> usage flag"
+        },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-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 <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03674",
+          "text": " The buffer from which the buffer device address <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_STORAGE_BUFFER_BIT</code> usage flag"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-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 <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
-        }
-      ],
-      "(VK_NV_corner_sampled_image)": [
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03802",
+          "text": " For each element of <code>pInfos</code>, its <code>scratchData.deviceAddress</code> member <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>"
+        },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-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>"
-        }
-      ],
-      "(VK_VERSION_1_1)": [
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03803",
+          "text": " For each element of <code>pInfos</code>, if <code>scratchData.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object"
+        },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02707",
-          "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource"
-        }
-      ],
-      "(VK_EXT_shader_image_atomic_int64)": [
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03710",
+          "text": " For each element of <code>pInfos</code>, its <code>scratchData.deviceAddress</code> member <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>minAccelerationStructureScratchOffsetAlignment</code>"
+        },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-SampledType-04470",
-          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel 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."
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03804",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, <code>geometry.triangles.vertexData.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-SampledType-04471",
-          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel 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."
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03805",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.vertexData.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-SampledType-04472",
-          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel 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."
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03711",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, <code>geometry.triangles.vertexData.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to the size in bytes of the smallest component of the format in <code>vertexFormat</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-SampledType-04473",
-          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel 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."
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03806",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.indexType</code> is not <code>VK_INDEX_TYPE_NONE_KHR</code>, <code>geometry.triangles.indexData.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-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."
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03807",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.indexType</code> is not <code>VK_INDEX_TYPE_NONE_KHR</code>, if <code>geometry.triangles.indexData.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-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."
-        }
-      ],
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing)+(VK_NV_ray_tracing)": [
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03712",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, and with <code>geometry.triangles.indexType</code> not equal to <code>VK_INDEX_TYPE_NONE_KHR</code>, <code>geometry.triangles.indexData.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to the size in bytes of the type in <code>indexType</code>"
+        },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-parameter",
-          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03808",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.transformData.deviceAddress</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-parameter",
-          "text": " <code>raygenShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03809",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.transformData.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-parameter",
-          "text": " If <code>missShaderBindingTableBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>missShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03810",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.transformData.deviceAddress</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be aligned to <code>16</code> bytes"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingTableBuffer-parameter",
-          "text": " If <code>hitShaderBindingTableBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>hitShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03811",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, <code>geometry.aabbs.data.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingTableBuffer-parameter",
-          "text": " If <code>callableShaderBindingTableBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>callableShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03812",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, if <code>geometry.aabbs.data.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-recording",
-          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03714",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, <code>geometry.aabbs.data.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to <code>8</code> bytes"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-cmdpool",
-          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03715",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, if <code>geometry.arrayOfPointers</code> is <code>VK_FALSE</code>, <code>geometry.instances.data.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to <code>16</code> bytes"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-renderpass",
-          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03716",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, if <code>geometry.arrayOfPointers</code> is <code>VK_TRUE</code>, <code>geometry.instances.data.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to <code>8</code> bytes"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysNV-commonparent",
-          "text": " Each of <code>callableShaderBindingTableBuffer</code>, <code>commandBuffer</code>, <code>hitShaderBindingTableBuffer</code>, <code>missShaderBindingTableBuffer</code>, and <code>raygenShaderBindingTableBuffer</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>"
-        }
-      ]
-    },
-    "vkCmdTraceRaysKHR": {
-      "core": [
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03717",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, if <code>geometry.arrayOfPointers</code> is <code>VK_TRUE</code>, each element of <code>geometry.instances.data.deviceAddress</code> in device memory <strong class=\"purple\">must</strong> be aligned to <code>16</code> bytes"
+        },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-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> 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&#8217;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>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03813",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, <code>geometry.instances.data.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-None-02691",
-          "text": " If a <code>VkImageView</code> is accessed using atomic operations as a result of this command, then the image view&#8217;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>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03814",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, if <code>geometry.instances.data.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-None-02697",
-          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03815",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, each <a href=\"#VkAccelerationStructureInstanceKHR\">VkAccelerationStructureInstanceKHR</a>::<code>accelerationStructureReference</code> value in <code>geometry.instances.data.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address containing a value obtained from <a href=\"#vkGetAccelerationStructureDeviceAddressKHR\">vkGetAccelerationStructureDeviceAddressKHR</a>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-None-02698",
-          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03675",
+          "text": " For each <code>pInfos</code>[i], <code>dstAccelerationStructure</code> <strong class=\"purple\">must</strong> have been created with a value of <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>size</code> greater than or equal to the memory size required by the build operation, as returned by <a href=\"#vkGetAccelerationStructureBuildSizesKHR\">vkGetAccelerationStructureBuildSizesKHR</a> with <span class=\"eq\"><code>pBuildInfo</code> = <code>pInfos</code>[i]</span> and with each element of the <code>pMaxPrimitiveCounts</code> array greater than or equal to the equivalent <code>ppBuildRangeInfos</code>[i][j].<code>primitiveCount</code> values for <code>j</code> in <span class=\"eq\">[0,<code>pInfos</code>[i].<code>geometryCount</code>)</span>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-None-02699",
-          "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-ppBuildRangeInfos-03676",
+          "text": " Each element of <code>ppBuildRangeInfos</code>[i] <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pInfos</code>[i].<code>geometryCount</code> <code>VkAccelerationStructureBuildRangeInfoKHR</code> structures"
+        }
+      ],
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
+        {
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-commandBuffer-parameter",
+          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-None-02700",
-          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-parameter",
+          "text": " <code>pInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> valid <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structures"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-02701",
-          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-ppBuildRangeInfos-parameter",
+          "text": " <code>ppBuildRangeInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> <a href=\"#VkAccelerationStructureBuildRangeInfoKHR\">VkAccelerationStructureBuildRangeInfoKHR</a> structures"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-None-02859",
-          "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-commandBuffer-recording",
+          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-None-02702",
-          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> 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"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-commandBuffer-cmdpool",
+          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-None-02703",
-          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> 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"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-renderpass",
+          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-None-02704",
-          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> 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"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-infoCount-arraylength",
+          "text": " <code>infoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+        }
+      ]
+    },
+    "vkCmdBuildAccelerationStructuresIndirectKHR": {
+      "core": [
+        {
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-mode-04628",
+          "text": " The <code>mode</code> member of each element of <code>pInfos</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuildAccelerationStructureModeKHR\">VkBuildAccelerationStructureModeKHR</a> value"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-None-02705",
-          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound 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"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-srcAccelerationStructure-04629",
+          "text": " If the <code>srcAccelerationStructure</code> member of any element of <code>pInfos</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-None-02706",
-          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound 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"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-04630",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-None-04115",
-          "text": " If a <a href=\"#VkImageView\">VkImageView</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 image view&#8217;s format."
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03403",
+          "text": " The <code>srcAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> not be the same acceleration structure as the <code>dstAccelerationStructure</code> member of any other element of <code>pInfos</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-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 image view&#8217;s format."
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03698",
+          "text": " The <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> not be the same acceleration structure as the <code>dstAccelerationStructure</code> member of any other element of <code>pInfos</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-None-03429",
-          "text": " Any shader group handle referenced by this call <strong class=\"purple\">must</strong> have been queried from the currently bound ray tracing shader pipeline"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03800",
+          "text": " The <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-maxPipelineRayRecursionDepth-03679",
-          "text": " This command <strong class=\"purple\">must</strong> not cause a shader call instruction to be executed from a shader invocation with a <a href=\"#ray-tracing-recursion-depth\">recursion depth</a> greater than the value of <code>maxPipelineRayRecursionDepth</code> used to create the bound ray tracing pipeline"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03699",
+          "text": " For each element of <code>pInfos</code>, if its <code>type</code> member is <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code>, its <code>dstAccelerationStructure</code> member <strong class=\"purple\">must</strong> have been created with a value of <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>type</code> equal to either <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code> or <code>VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-03680",
-          "text": " If the buffer from which <code>pRayGenShaderBindingTable-&gt;deviceAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03700",
+          "text": " For each element of <code>pInfos</code>, if its <code>type</code> member is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code>, its <code>dstAccelerationStructure</code> member <strong class=\"purple\">must</strong> have been created with a value of <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>type</code> equal to either <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code> or <code>VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-03681",
-          "text": " The buffer from which the <code>pRayGenShaderBindingTable-&gt;deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR</code> usage flag"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03663",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, <a href=\"#acceleration-structure-inactive-prims\">inactive primitives</a> in its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> not be made active"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-03682",
-          "text": " <code>pRayGenShaderBindingTable-&gt;deviceAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03664",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, active primitives in its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> not be made <a href=\"#acceleration-structure-inactive-prims\">inactive</a>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-size-04023",
-          "text": " The <code>size</code> member of <code>pRayGenShaderBindingTable</code> <strong class=\"purple\">must</strong> be equal to its <code>stride</code> member"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-None-03407",
+          "text": " The <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> not be referenced by the <code>geometry.instances.data</code> member of any element of <code>pGeometries</code> or <code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code> in any other element of <code>pInfos</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-03683",
-          "text": " If the buffer from which <code>pMissShaderBindingTable-&gt;deviceAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03701",
+          "text": " The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>srcAccelerationStructure</code> member of any other element of <code>pInfos</code> with a <code>mode</code> equal to <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, which is accessed by this command"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-03684",
-          "text": " The buffer from which the <code>pMissShaderBindingTable-&gt;deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR</code> usage flag"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03702",
+          "text": " The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>dstAccelerationStructure</code> member of any other element of <code>pInfos</code>, which is accessed by this command"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-03685",
-          "text": " <code>pMissShaderBindingTable-&gt;deviceAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03703",
+          "text": " The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>scratchData</code> member of any element of <code>pInfos</code> (including the same element), which is accessed by this command"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-stride-03686",
-          "text": " The <code>stride</code> member of <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupHandleAlignment</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-scratchData-03704",
+          "text": " The range of memory backing the <code>scratchData</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>scratchData</code> member of any other element of <code>pInfos</code>, which is accessed by this command"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-stride-04029",
-          "text": " The <code>stride</code> member of <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>maxShaderGroupStride</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-scratchData-03705",
+          "text": " The range of memory backing the <code>scratchData</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>srcAccelerationStructure</code> member of any element of <code>pInfos</code> with a <code>mode</code> equal to <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code> (including the same element), which is accessed by this command"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03687",
-          "text": " If the buffer from which <code>pHitShaderBindingTable-&gt;deviceAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03706",
+          "text": " The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing any acceleration structure referenced by the <code>geometry.instances.data</code> member of any element of <code>pGeometries</code> or <code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code> in any other element of <code>pInfos</code>, which is accessed by this command"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03688",
-          "text": " The buffer from which the <code>pHitShaderBindingTable-&gt;deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR</code> usage flag"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03666",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03689",
-          "text": " <code>pHitShaderBindingTable-&gt;deviceAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03667",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> have been built before with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR</code> set in <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a>::<code>flags</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-stride-03690",
-          "text": " The <code>stride</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupHandleAlignment</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03668",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>srcAccelerationStructure</code> and <code>dstAccelerationStructure</code> members <strong class=\"purple\">must</strong> either be the same <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a>, or not have any <a href=\"#resources-memory-aliasing\">memory aliasing</a>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-stride-04035",
-          "text": " The <code>stride</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>maxShaderGroupStride</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03758",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>geometryCount</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-03691",
-          "text": " If the buffer from which <code>pCallableShaderBindingTable-&gt;deviceAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03759",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>flags</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-03692",
-          "text": " The buffer from which the <code>pCallableShaderBindingTable-&gt;deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR</code> usage flag"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03760",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>type</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-03693",
-          "text": " <code>pCallableShaderBindingTable-&gt;deviceAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03761",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, its <code>geometryType</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-stride-03694",
-          "text": " The <code>stride</code> member of <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupHandleAlignment</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03762",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, its <code>flags</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-stride-04041",
-          "text": " The <code>stride</code> member of <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>maxShaderGroupStride</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03763",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, its <code>geometry.triangles.vertexFormat</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03695",
-          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>, the <code>deviceAddress</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> not be zero"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03764",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, its <code>geometry.triangles.maxVertex</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03696",
-          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>, the <code>deviceAddress</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> not be zero"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03765",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, its <code>geometry.triangles.indexType</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03697",
-          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>, the <code>deviceAddress</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> not be zero"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03766",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if its <code>geometry.triangles.transformData</code> member was NULL when <code>srcAccelerationStructure</code> was last built, then it must be NULL."
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03511",
-          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR</code>, the shader group handle identified by <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> contain a valid miss shader"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03767",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if its <code>geometry.triangles.transformData</code> member was not NULL when <code>srcAccelerationStructure</code> was last built, then it may not be NULL."
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03512",
-          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>, entries in <code>pHitShaderBindingTable</code> accessed as a result of this command in order to execute an any-hit shader <strong class=\"purple\">must</strong> not be set to zero"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03768",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, and <code>geometry.triangles.indexType</code> is not <code>VK_INDEX_TYPE_NONE_KHR</code>, then the value of each index referenced index must be the same as the corresponding index value when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03513",
-          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>, entries in <code>pHitShaderBindingTable</code> accessed as a result of this command in order to execute a closest hit shader <strong class=\"purple\">must</strong> not be set to zero"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-primitiveCount-03769",
+          "text": " For each <code>VkAccelerationStructureBuildRangeInfoKHR</code> referenced by this command, its <code>primitiveCount</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03514",
-          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>, entries in <code>pHitShaderBindingTable</code> accessed as a result of this command in order to execute an intersection shader <strong class=\"purple\">must</strong> not be set to zero"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-firstVertex-03770",
+          "text": " For each <code>VkAccelerationStructureBuildRangeInfoKHR</code> referenced by this command, if the corresponding geometry uses indices, its <code>firstVertex</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03720",
-          "text": " Any hit group entries in <code>pHitShaderBindingTable</code> accessed by this call from a geometry with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code> <strong class=\"purple\">must</strong> have been created with <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03801",
+          "text": " For each element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, the corresponding {maxinstancecheck} <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>maxInstanceCount</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03721",
-          "text": " Any hit group entries in <code>pHitShaderBindingTable</code> accessed by this call from a geometry with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_AABBS_KHR</code> <strong class=\"purple\">must</strong> have been created with <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03707",
+          "text": " For each element of <code>pInfos</code>, the <code>buffer</code> used to create its <code>dstAccelerationStructure</code> member <strong class=\"purple\">must</strong> be bound to device memory"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-04625",
-          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03708",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code> the <code>buffer</code> used to create its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> be bound to device memory"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-width-03626",
-          "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\"><code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0] {times} <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupSize</code>[0]</span>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03709",
+          "text": " For each element of <code>pInfos</code>, the <code>buffer</code> used to create each acceleration structure referenced by the <code>geometry.instances.data</code> member of any element of <code>pGeometries</code> or <code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code> <strong class=\"purple\">must</strong> be bound to device memory"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-height-03627",
-          "text": " <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\"><code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1] {times} <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupSize</code>[1]</span>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03671",
+          "text": " If <code>pInfos</code>[i].<code>mode</code> is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR</code>, all addresses between <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> and <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> + N - 1 <strong class=\"purple\">must</strong> be in the buffer device address range of the same buffer, where N is given by the <code>buildScratchSize</code> member of the <a href=\"#VkAccelerationStructureBuildSizesInfoKHR\">VkAccelerationStructureBuildSizesInfoKHR</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureBuildSizesKHR\">vkGetAccelerationStructureBuildSizesKHR</a> with an identical <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structure and primitive count"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-depth-03628",
-          "text": " <code>depth</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\"><code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2] {times} <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupSize</code>[2]</span>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03672",
+          "text": " If <code>pInfos</code>[i].<code>mode</code> is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, all addresses between <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> and <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> + N - 1 <strong class=\"purple\">must</strong> be in the buffer device address range of the same buffer, where N is given by the <code>updateScratchSize</code> member of the <a href=\"#VkAccelerationStructureBuildSizesInfoKHR\">VkAccelerationStructureBuildSizesInfoKHR</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureBuildSizesKHR\">vkGetAccelerationStructureBuildSizesKHR</a> with an identical <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structure and primitive count"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-width-03629",
-          "text": " <span class=\"eq\"><code>width</code> {times} <code>height</code> {times} <code>depth</code></span> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>maxRayDispatchInvocationCount</code>"
-        }
-      ],
-      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
-        {
-          "vuid": "VUID-vkCmdTraceRaysKHR-None-02692",
-          "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view&#8217;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>"
-        }
-      ],
-      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-geometry-03673",
+          "text": " The buffers from which the buffer device addresses for all of the <code>geometry.triangles.vertexData</code>, <code>geometry.triangles.indexData</code>, <code>geometry.triangles.transformData</code>, <code>geometry.aabbs.data</code>, and <code>geometry.instances.data</code> members of all <code>pInfos</code>[i].<code>pGeometries</code> and <code>pInfos</code>[i].<code>ppGeometries</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR</code> usage flag"
+        },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-None-02693",
-          "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> 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>"
-        }
-      ],
-      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03674",
+          "text": " The buffer from which the buffer device address <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_STORAGE_BUFFER_BIT</code> usage flag"
+        },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-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 <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03802",
+          "text": " For each element of <code>pInfos</code>, its <code>scratchData.deviceAddress</code> member <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-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 <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
-        }
-      ],
-      "(VK_NV_corner_sampled_image)": [
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03803",
+          "text": " For each element of <code>pInfos</code>, if <code>scratchData.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object"
+        },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-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>"
-        }
-      ],
-      "(VK_VERSION_1_1)": [
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03710",
+          "text": " For each element of <code>pInfos</code>, its <code>scratchData.deviceAddress</code> member <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>minAccelerationStructureScratchOffsetAlignment</code>"
+        },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-02707",
-          "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource"
-        }
-      ],
-      "(VK_EXT_shader_image_atomic_int64)": [
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03804",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, <code>geometry.triangles.vertexData.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>"
+        },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-SampledType-04470",
-          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel 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."
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03805",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.vertexData.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-SampledType-04471",
-          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel 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."
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03711",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, <code>geometry.triangles.vertexData.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to the size in bytes of the smallest component of the format in <code>vertexFormat</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-SampledType-04472",
-          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel 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."
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03806",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.indexType</code> is not <code>VK_INDEX_TYPE_NONE_KHR</code>, <code>geometry.triangles.indexData.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-SampledType-04473",
-          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel 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."
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03807",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.indexType</code> is not <code>VK_INDEX_TYPE_NONE_KHR</code>, if <code>geometry.triangles.indexData.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-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."
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03712",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, and with <code>geometry.triangles.indexType</code> not equal to <code>VK_INDEX_TYPE_NONE_KHR</code>, <code>geometry.triangles.indexData.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to the size in bytes of the type in <code>indexType</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-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."
-        }
-      ],
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing)+(VK_KHR_ray_tracing_pipeline)": [
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03808",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.transformData.deviceAddress</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>"
+        },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-parameter",
-          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03809",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.transformData.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-pRaygenShaderBindingTable-parameter",
-          "text": " <code>pRaygenShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedDeviceAddressRegionKHR\">VkStridedDeviceAddressRegionKHR</a> structure"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03810",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.transformData.deviceAddress</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be aligned to <code>16</code> bytes"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-parameter",
-          "text": " <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedDeviceAddressRegionKHR\">VkStridedDeviceAddressRegionKHR</a> structure"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03811",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, <code>geometry.aabbs.data.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-parameter",
-          "text": " <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedDeviceAddressRegionKHR\">VkStridedDeviceAddressRegionKHR</a> structure"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03812",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, if <code>geometry.aabbs.data.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-parameter",
-          "text": " <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedDeviceAddressRegionKHR\">VkStridedDeviceAddressRegionKHR</a> structure"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03714",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, <code>geometry.aabbs.data.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to <code>8</code> bytes"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-recording",
-          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03715",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, if <code>geometry.arrayOfPointers</code> is <code>VK_FALSE</code>, <code>geometry.instances.data.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to <code>16</code> bytes"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-cmdpool",
-          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03716",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, if <code>geometry.arrayOfPointers</code> is <code>VK_TRUE</code>, <code>geometry.instances.data.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to <code>8</code> bytes"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysKHR-renderpass",
-          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
-        }
-      ]
-    },
-    "VkStridedDeviceAddressRegionKHR": {
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing)+(VK_KHR_ray_tracing_pipeline)": [
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03717",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, if <code>geometry.arrayOfPointers</code> is <code>VK_TRUE</code>, each element of <code>geometry.instances.data.deviceAddress</code> in device memory <strong class=\"purple\">must</strong> be aligned to <code>16</code> bytes"
+        },
         {
-          "vuid": "VUID-VkStridedDeviceAddressRegionKHR-size-04631",
-          "text": " If <code>size</code> is not zero, all addresses between <code>deviceAddress</code> and <span class=\"eq\"><code>deviceAddress</code> &#43; <code>size</code> - 1</span> <strong class=\"purple\">must</strong> be in the buffer device address range of the same buffer"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03813",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, <code>geometry.instances.data.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>"
         },
         {
-          "vuid": "VUID-VkStridedDeviceAddressRegionKHR-size-04632",
-          "text": " If <code>size</code> is not zero, <code>stride</code> <strong class=\"purple\">must</strong> be less than the size of the buffer from which <code>deviceAddress</code> was queried"
-        }
-      ]
-    },
-    "vkCmdTraceRaysIndirectKHR": {
-      "core": [
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03814",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, if <code>geometry.instances.data.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object"
+        },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-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> 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&#8217;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>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03815",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, each <a href=\"#VkAccelerationStructureInstanceKHR\">VkAccelerationStructureInstanceKHR</a>::<code>accelerationStructureReference</code> value in <code>geometry.instances.data.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address containing a value obtained from <a href=\"#vkGetAccelerationStructureDeviceAddressKHR\">vkGetAccelerationStructureDeviceAddressKHR</a>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02691",
-          "text": " If a <code>VkImageView</code> is accessed using atomic operations as a result of this command, then the image view&#8217;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>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03645",
+          "text": " For any element of <code>pIndirectDeviceAddresses</code>, if the buffer from which it was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02697",
-          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03646",
+          "text": " For any element of <code>pIndirectDeviceAddresses</code>[i], all device addresses between <code>pIndirectDeviceAddresses</code>[i] and <span class=\"eq\"><code>pIndirectDeviceAddresses</code>[i] &#43; (<code>pInfos</code>[i]&#8594;geometryCount {times} <code>pIndirectStrides</code>[i]) - 1</span> <strong class=\"purple\">must</strong> be in the buffer device address range of the same buffer"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02698",
-          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03647",
+          "text": " For any element of <code>pIndirectDeviceAddresses</code>, the buffer from which it was queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02699",
-          "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03648",
+          "text": " Each element of <code>pIndirectDeviceAddresses</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02700",
-          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectStrides-03787",
+          "text": " Each element of <code>pIndirectStrides</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-02701",
-          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-03649",
+          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02859",
-          "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-accelerationStructureIndirectBuild-03650",
+          "text": " The <a href=\"#features-accelerationStructureIndirectBuild\"><code>VkPhysicalDeviceAccelerationStructureFeaturesKHR</code>::<code>accelerationStructureIndirectBuild</code></a> feature <strong class=\"purple\">must</strong> be enabled"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02702",
-          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> 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"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03651",
+          "text": " Each <a href=\"#VkAccelerationStructureBuildRangeInfoKHR\">VkAccelerationStructureBuildRangeInfoKHR</a> structure referenced by any element of <code>pIndirectDeviceAddresses</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureBuildRangeInfoKHR\">VkAccelerationStructureBuildRangeInfoKHR</a> structure"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02703",
-          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> 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"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03652",
+          "text": " <code>pInfos</code>[i].<code>dstAccelerationStructure</code> <strong class=\"purple\">must</strong> have been created with a value of <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>size</code> greater than or equal to the memory size required by the build operation, as returned by <a href=\"#vkGetAccelerationStructureBuildSizesKHR\">vkGetAccelerationStructureBuildSizesKHR</a> with <span class=\"eq\"><code>pBuildInfo</code> = <code>pInfos</code>[i]</span> and <span class=\"eq\"><code>pMaxPrimitiveCounts</code> = <code>ppMaxPrimitiveCounts</code>[i]</span>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02704",
-          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> 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"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-ppMaxPrimitiveCounts-03653",
+          "text": " Each <code>ppMaxPrimitiveCounts</code>[i][j] <strong class=\"purple\">must</strong> be greater than or equal to the the <code>primitiveCount</code> value specified by the <a href=\"#VkAccelerationStructureBuildRangeInfoKHR\">VkAccelerationStructureBuildRangeInfoKHR</a> structure located at <span class=\"eq\"><code>pIndirectDeviceAddresses</code>[i] &#43; (<code>j</code> {times} <code>pIndirectStrides</code>[i])</span>"
+        }
+      ],
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
+        {
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-parameter",
+          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02705",
-          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound 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"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-parameter",
+          "text": " <code>pInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> valid <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structures"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02706",
-          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound 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"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-parameter",
+          "text": " <code>pIndirectDeviceAddresses</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> <code>VkDeviceAddress</code> values"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-04115",
-          "text": " If a <a href=\"#VkImageView\">VkImageView</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 image view&#8217;s format."
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectStrides-parameter",
+          "text": " <code>pIndirectStrides</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> <code>uint32_t</code> values"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-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 image view&#8217;s format."
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-ppMaxPrimitiveCounts-parameter",
+          "text": " <code>ppMaxPrimitiveCounts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> <code>uint32_t</code> values"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-03429",
-          "text": " Any shader group handle referenced by this call <strong class=\"purple\">must</strong> have been queried from the currently bound ray tracing shader pipeline"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-recording",
+          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-maxPipelineRayRecursionDepth-03679",
-          "text": " This command <strong class=\"purple\">must</strong> not cause a shader call instruction to be executed from a shader invocation with a <a href=\"#ray-tracing-recursion-depth\">recursion depth</a> greater than the value of <code>maxPipelineRayRecursionDepth</code> used to create the bound ray tracing pipeline"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-cmdpool",
+          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-03680",
-          "text": " If the buffer from which <code>pRayGenShaderBindingTable-&gt;deviceAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-renderpass",
+          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-03681",
-          "text": " The buffer from which the <code>pRayGenShaderBindingTable-&gt;deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR</code> usage flag"
+          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-infoCount-arraylength",
+          "text": " <code>infoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+        }
+      ]
+    },
+    "VkAccelerationStructureBuildGeometryInfoKHR": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
+        {
+          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03654",
+          "text": " <code>type</code> <strong class=\"purple\">must</strong> not be <code>VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-03682",
-          "text": " <code>pRayGenShaderBindingTable-&gt;deviceAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>"
+          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-pGeometries-03788",
+          "text": " Only one of <code>pGeometries</code> or <code>ppGeometries</code> <strong class=\"purple\">can</strong> be a valid pointer, the other <strong class=\"purple\">must</strong> be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-size-04023",
-          "text": " The <code>size</code> member of <code>pRayGenShaderBindingTable</code> <strong class=\"purple\">must</strong> be equal to its <code>stride</code> member"
+          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03789",
+          "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code>, the <code>geometryType</code> member of elements of either <code>pGeometries</code> or <code>ppGeometries</code> <strong class=\"purple\">must</strong> be <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-03683",
-          "text": " If the buffer from which <code>pMissShaderBindingTable-&gt;deviceAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03790",
+          "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code>, <code>geometryCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-03684",
-          "text": " The buffer from which the <code>pMissShaderBindingTable-&gt;deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR</code> usage flag"
+          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03791",
+          "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code> the <code>geometryType</code> member of elements of either <code>pGeometries</code> or <code>ppGeometries</code> <strong class=\"purple\">must</strong> not be <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-03685",
-          "text": " <code>pMissShaderBindingTable-&gt;deviceAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>"
+          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03792",
+          "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code> then the <code>geometryType</code> member of each geometry in either <code>pGeometries</code> or <code>ppGeometries</code> <strong class=\"purple\">must</strong> be the same"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-03686",
-          "text": " The <code>stride</code> member of <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupHandleAlignment</code>"
+          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03793",
+          "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code> then <code>geometryCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>maxGeometryCount</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-04029",
-          "text": " The <code>stride</code> member of <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>maxShaderGroupStride</code>"
+          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03794",
+          "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code> and the <code>geometryType</code> member of either <code>pGeometries</code> or <code>ppGeometries</code> is <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, the total number of AABBs in all geometries <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>maxPrimitiveCount</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03687",
-          "text": " If the buffer from which <code>pHitShaderBindingTable-&gt;deviceAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03795",
+          "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code> and the <code>geometryType</code> member of either <code>pGeometries</code> or <code>ppGeometries</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, the total number of triangles in all geometries <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>maxPrimitiveCount</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03688",
-          "text": " The buffer from which the <code>pHitShaderBindingTable-&gt;deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR</code> usage flag"
+          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-03796",
+          "text": " If <code>flags</code> has the <code>VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR</code> bit set, then it <strong class=\"purple\">must</strong> not have the <code>VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR</code> bit set"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03689",
-          "text": " <code>pHitShaderBindingTable-&gt;deviceAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>"
+          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-03690",
-          "text": " The <code>stride</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupHandleAlignment</code>"
+          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-04035",
-          "text": " The <code>stride</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>maxShaderGroupStride</code>"
+          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-parameter",
+          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureTypeKHR\">VkAccelerationStructureTypeKHR</a> value"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-03691",
-          "text": " If the buffer from which <code>pCallableShaderBindingTable-&gt;deviceAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-parameter",
+          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBuildAccelerationStructureFlagBitsKHR\">VkBuildAccelerationStructureFlagBitsKHR</a> values"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-03692",
-          "text": " The buffer from which the <code>pCallableShaderBindingTable-&gt;deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR</code> usage flag"
+          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-pGeometries-parameter",
+          "text": " If <code>geometryCount</code> is not <code>0</code>, and <code>pGeometries</code> is not <code>NULL</code>, <code>pGeometries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>geometryCount</code> valid <a href=\"#VkAccelerationStructureGeometryKHR\">VkAccelerationStructureGeometryKHR</a> structures"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-03693",
-          "text": " <code>pCallableShaderBindingTable-&gt;deviceAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>"
+          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-ppGeometries-parameter",
+          "text": " If <code>geometryCount</code> is not <code>0</code>, and <code>ppGeometries</code> is not <code>NULL</code>, <code>ppGeometries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>geometryCount</code> valid pointers to valid <a href=\"#VkAccelerationStructureGeometryKHR\">VkAccelerationStructureGeometryKHR</a> structures"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-03694",
-          "text": " The <code>stride</code> member of <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupHandleAlignment</code>"
+          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-scratchData-parameter",
+          "text": " <code>scratchData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressKHR\">VkDeviceOrHostAddressKHR</a> union"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-04041",
-          "text": " The <code>stride</code> member of <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>maxShaderGroupStride</code>"
+          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-commonparent",
+          "text": " Both of <code>dstAccelerationStructure</code>, and <code>srcAccelerationStructure</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>"
+        }
+      ]
+    },
+    "VkAccelerationStructureGeometryKHR": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
+        {
+          "vuid": "VUID-VkAccelerationStructureGeometryKHR-geometryType-03541",
+          "text": " If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, the <code>aabbs</code> member of <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureGeometryAabbsDataKHR\">VkAccelerationStructureGeometryAabbsDataKHR</a> structure"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03695",
-          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>, the <code>deviceAddress</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> not be zero"
+          "vuid": "VUID-VkAccelerationStructureGeometryKHR-geometryType-03542",
+          "text": " If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, the <code>triangles</code> member of <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a> structure"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03696",
-          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>, the <code>deviceAddress</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> not be zero"
+          "vuid": "VUID-VkAccelerationStructureGeometryKHR-geometryType-03543",
+          "text": " If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, the <code>instances</code> member of <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureGeometryInstancesDataKHR\">VkAccelerationStructureGeometryInstancesDataKHR</a> structure"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03697",
-          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>, the <code>deviceAddress</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> not be zero"
+          "vuid": "VUID-VkAccelerationStructureGeometryKHR-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03511",
-          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR</code>, the shader group handle identified by <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> contain a valid miss shader"
+          "vuid": "VUID-VkAccelerationStructureGeometryKHR-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03512",
-          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>, entries in <code>pHitShaderBindingTable</code> accessed as a result of this command in order to execute an any-hit shader <strong class=\"purple\">must</strong> not be set to zero"
+          "vuid": "VUID-VkAccelerationStructureGeometryKHR-geometryType-parameter",
+          "text": " <code>geometryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryTypeKHR\">VkGeometryTypeKHR</a> value"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03513",
-          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>, entries in <code>pHitShaderBindingTable</code> accessed as a result of this command in order to execute a closest hit shader <strong class=\"purple\">must</strong> not be set to zero"
+          "vuid": "VUID-VkAccelerationStructureGeometryKHR-triangles-parameter",
+          "text": " If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, the <code>triangles</code> member of <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a> structure"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03514",
-          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>, entries in <code>pHitShaderBindingTable</code> accessed as a result of this command in order to execute an intersection shader <strong class=\"purple\">must</strong> not be set to zero"
+          "vuid": "VUID-VkAccelerationStructureGeometryKHR-aabbs-parameter",
+          "text": " If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, the <code>aabbs</code> member of <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureGeometryAabbsDataKHR\">VkAccelerationStructureGeometryAabbsDataKHR</a> structure"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03720",
-          "text": " Any hit group entries in <code>pHitShaderBindingTable</code> accessed by this call from a geometry with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code> <strong class=\"purple\">must</strong> have been created with <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR</code>"
+          "vuid": "VUID-VkAccelerationStructureGeometryKHR-instances-parameter",
+          "text": " If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, the <code>instances</code> member of <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureGeometryInstancesDataKHR\">VkAccelerationStructureGeometryInstancesDataKHR</a> structure"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03721",
-          "text": " Any hit group entries in <code>pHitShaderBindingTable</code> accessed by this call from a geometry with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_AABBS_KHR</code> <strong class=\"purple\">must</strong> have been created with <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR</code>"
+          "vuid": "VUID-VkAccelerationStructureGeometryKHR-flags-parameter",
+          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkGeometryFlagBitsKHR\">VkGeometryFlagBitsKHR</a> values"
+        }
+      ]
+    },
+    "VkAccelerationStructureGeometryTrianglesDataKHR": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
+        {
+          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexStride-03735",
+          "text": " <code>vertexStride</code> <strong class=\"purple\">must</strong> be a multiple of the size in bytes of the smallest component of <code>vertexFormat</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03632",
-          "text": " If the buffer from which <code>indirectDeviceAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
+          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexStride-03819",
+          "text": " <code>vertexStride</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>32</sup>-1</span>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03633",
-          "text": " The buffer from which <code>indirectDeviceAddress</code> was queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
+          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexFormat-03797",
+          "text": " <code>vertexFormat</code> <strong class=\"purple\">must</strong> support the <code>VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR</code> in <a href=\"#VkFormatProperties\">VkFormatProperties</a>::<code>bufferFeatures</code> as returned by <a href=\"#vkGetPhysicalDeviceFormatProperties2\">vkGetPhysicalDeviceFormatProperties2</a>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03634",
-          "text": " <code>indirectDeviceAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
+          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexType-03798",
+          "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be <code>VK_INDEX_TYPE_UINT16</code>, <code>VK_INDEX_TYPE_UINT32</code>, or <code>VK_INDEX_TYPE_NONE_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-03635",
-          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
+          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03636",
-          "text": " All device addresses between <code>indirectDeviceAddress</code> and <span class=\"eq\"><code>indirectDeviceAddress</code> &#43; <code>sizeof</code>(<code>VkTraceRaysIndirectCommandKHR</code>) - 1</span> <strong class=\"purple\">must</strong> be in the buffer device address range of the same buffer"
+          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-rayTracingPipelineTraceRaysIndirect-03637",
-          "text": " the <a href=\"#features-rayTracingPipelineTraceRaysIndirect\"><code>VkPhysicalDeviceRayTracingPipelineFeaturesKHR</code>::<code>rayTracingPipelineTraceRaysIndirect</code></a> feature <strong class=\"purple\">must</strong> be enabled"
-        }
-      ],
-      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
+          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexFormat-parameter",
+          "text": " <code>vertexFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
+        },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02692",
-          "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view&#8217;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>"
-        }
-      ],
-      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
+          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexData-parameter",
+          "text": " <code>vertexData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> union"
+        },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02693",
-          "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> 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>"
-        }
-      ],
-      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
+          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexType-parameter",
+          "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value"
+        },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-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 <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
+          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexData-parameter",
+          "text": " <code>indexData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> union"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-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 <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
+          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-transformData-parameter",
+          "text": " <code>transformData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> union"
         }
-      ],
-      "(VK_NV_corner_sampled_image)": [
+      ]
+    },
+    "VkTransformMatrixKHR": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-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>"
+          "vuid": "VUID-VkTransformMatrixKHR-matrix-03799",
+          "text": " The first three columns of <code>matrix</code> <strong class=\"purple\">must</strong> define an invertible 3x3 matrix"
         }
-      ],
-      "(VK_VERSION_1_1)": [
+      ]
+    },
+    "VkAccelerationStructureGeometryAabbsDataKHR": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-02707",
-          "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource"
-        }
-      ],
-      "(VK_EXT_shader_image_atomic_int64)": [
+          "vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-stride-03545",
+          "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>8</code>"
+        },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-SampledType-04470",
-          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel 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."
+          "vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-stride-03820",
+          "text": " <code>stride</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>32</sup>-1</span>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-SampledType-04471",
-          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel 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."
+          "vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-SampledType-04472",
-          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel 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."
+          "vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-SampledType-04473",
-          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel 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."
+          "vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-data-parameter",
+          "text": " <code>data</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> union"
+        }
+      ]
+    },
+    "VkAabbPositionsKHR": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
+        {
+          "vuid": "VUID-VkAabbPositionsKHR-minX-03546",
+          "text": " <code>minX</code> <strong class=\"purple\">must</strong> be less than or equal to <code>maxX</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-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."
+          "vuid": "VUID-VkAabbPositionsKHR-minY-03547",
+          "text": " <code>minY</code> <strong class=\"purple\">must</strong> be less than or equal to <code>maxY</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-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."
+          "vuid": "VUID-VkAabbPositionsKHR-minZ-03548",
+          "text": " <code>minZ</code> <strong class=\"purple\">must</strong> be less than or equal to <code>maxZ</code>"
         }
-      ],
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing)+(VK_KHR_ray_tracing_pipeline)": [
+      ]
+    },
+    "VkAccelerationStructureGeometryInstancesDataKHR": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-parameter",
-          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
+          "vuid": "VUID-VkAccelerationStructureGeometryInstancesDataKHR-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pRaygenShaderBindingTable-parameter",
-          "text": " <code>pRaygenShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedDeviceAddressRegionKHR\">VkStridedDeviceAddressRegionKHR</a> structure"
+          "vuid": "VUID-VkAccelerationStructureGeometryInstancesDataKHR-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-parameter",
-          "text": " <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedDeviceAddressRegionKHR\">VkStridedDeviceAddressRegionKHR</a> structure"
-        },
+          "vuid": "VUID-VkAccelerationStructureGeometryInstancesDataKHR-data-parameter",
+          "text": " <code>data</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> union"
+        }
+      ]
+    },
+    "VkAccelerationStructureInstanceKHR": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-parameter",
-          "text": " <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedDeviceAddressRegionKHR\">VkStridedDeviceAddressRegionKHR</a> structure"
+          "vuid": "VUID-VkAccelerationStructureInstanceKHR-flags-parameter",
+          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkGeometryInstanceFlagBitsKHR\">VkGeometryInstanceFlagBitsKHR</a> values"
+        }
+      ]
+    },
+    "VkAccelerationStructureBuildRangeInfoKHR": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
+        {
+          "vuid": "VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03656",
+          "text": " For geometries of type <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if the geometry uses indices, the offset <code>primitiveOffset</code> from <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a>::<code>indexData</code> <strong class=\"purple\">must</strong> be a multiple of the element size of <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a>::<code>indexType</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-parameter",
-          "text": " <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedDeviceAddressRegionKHR\">VkStridedDeviceAddressRegionKHR</a> structure"
+          "vuid": "VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03657",
+          "text": " For geometries of type <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if the geometry doesn&#8217;t use indices, the offset <code>primitiveOffset</code> from <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a>::<code>vertexData</code> <strong class=\"purple\">must</strong> be a multiple of the component size of <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a>::<code>vertexFormat</code>"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-recording",
-          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
+          "vuid": "VUID-VkAccelerationStructureBuildRangeInfoKHR-transformOffset-03658",
+          "text": " For geometries of type <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, the offset <code>transformOffset</code> from <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a>::<code>transformData</code> <strong class=\"purple\">must</strong> be a multiple of 16"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-cmdpool",
-          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
+          "vuid": "VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03659",
+          "text": " For geometries of type <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, the offset <code>primitiveOffset</code> from <a href=\"#VkAccelerationStructureGeometryAabbsDataKHR\">VkAccelerationStructureGeometryAabbsDataKHR</a>::<code>data</code> <strong class=\"purple\">must</strong> be a multiple of 8"
         },
         {
-          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-renderpass",
-          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+          "vuid": "VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03660",
+          "text": " For geometries of type <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, the offset <code>primitiveOffset</code> from <a href=\"#VkAccelerationStructureGeometryInstancesDataKHR\">VkAccelerationStructureGeometryInstancesDataKHR</a>::<code>data</code> <strong class=\"purple\">must</strong> be a multiple of 16"
         }
       ]
     },
-    "VkTraceRaysIndirectCommandKHR": {
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing)+(VK_KHR_ray_tracing_pipeline)": [
+    "vkCmdWriteAccelerationStructuresPropertiesKHR": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
         {
-          "vuid": "VUID-VkTraceRaysIndirectCommandKHR-width-03638",
-          "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\"><code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0] {times} <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupSize</code>[0]</span>"
+          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-02493",
+          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> matching <code>queryType</code>"
         },
         {
-          "vuid": "VUID-VkTraceRaysIndirectCommandKHR-height-03639",
-          "text": " <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\"><code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1] {times} <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupSize</code>[1]</span>"
+          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-02494",
+          "text": " The queries identified by <code>queryPool</code> and <code>firstQuery</code> <strong class=\"purple\">must</strong> be <em>unavailable</em>"
         },
         {
-          "vuid": "VUID-VkTraceRaysIndirectCommandKHR-depth-03640",
-          "text": " <code>depth</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\"><code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2] {times} <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupSize</code>[2]</span>"
+          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-buffer-03736",
+          "text": " The <code>buffer</code> used to create each acceleration structure in <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be bound to device memory"
         },
         {
-          "vuid": "VUID-VkTraceRaysIndirectCommandKHR-width-03641",
-          "text": " <span class=\"eq\"><code>width</code> {times} <code>height</code> {times} <code>depth</code></span> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>maxRayDispatchInvocationCount</code>"
-        }
-      ]
-    },
-    "vkCmdBuildAccelerationStructureNV": {
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)+(VK_NV_ray_tracing)": [
-        {
-          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-geometryCount-02241",
-          "text": " <code>geometryCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxGeometryCount</code>"
+          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-parameter",
+          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-dst-02488",
-          "text": " <code>dst</code> <strong class=\"purple\">must</strong> have been created with compatible <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a> where <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>type</code> and <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>flags</code> are identical, <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>instanceCount</code> and <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>geometryCount</code> for <code>dst</code> are greater than or equal to the build size and each geometry in <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>pGeometries</code> for <code>dst</code> has greater than or equal to the number of vertices, indices, and AABBs"
+          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parameter",
+          "text": " <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>accelerationStructureCount</code> valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handles"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02489",
-          "text": " If <code>update</code> is <code>VK_TRUE</code>, <code>src</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
+          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryType-parameter",
+          "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryType\">VkQueryType</a> value"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02490",
-          "text": " If <code>update</code> is <code>VK_TRUE</code>, <code>src</code> <strong class=\"purple\">must</strong> have been built before with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV</code> set in <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>flags</code>"
+          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-parameter",
+          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02491",
-          "text": " If <code>update</code> is <code>VK_FALSE</code>, the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsNV\">vkGetAccelerationStructureMemoryRequirementsNV</a> with <a href=\"#VkAccelerationStructureMemoryRequirementsInfoNV\">VkAccelerationStructureMemoryRequirementsInfoNV</a>::<code>accelerationStructure</code> set to <code>dst</code> and <a href=\"#VkAccelerationStructureMemoryRequirementsInfoNV\">VkAccelerationStructureMemoryRequirementsInfoNV</a>::<code>type</code> set to <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>scratch</code> minus <code>scratchOffset</code>"
+          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-recording",
+          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02492",
-          "text": " If <code>update</code> is <code>VK_TRUE</code>, the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsNV\">vkGetAccelerationStructureMemoryRequirementsNV</a> with <a href=\"#VkAccelerationStructureMemoryRequirementsInfoNV\">VkAccelerationStructureMemoryRequirementsInfoNV</a>::<code>accelerationStructure</code> set to <code>dst</code> and <a href=\"#VkAccelerationStructureMemoryRequirementsInfoNV\">VkAccelerationStructureMemoryRequirementsInfoNV</a>::<code>type</code> set to <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>scratch</code> minus <code>scratchOffset</code>"
+          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-cmdpool",
+          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-scratch-03522",
-          "text": " <code>scratch</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_RAY_TRACING_BIT_NV</code> usage flag"
+          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-renderpass",
+          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-instanceData-03523",
-          "text": " If <code>instanceData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>instanceData</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_RAY_TRACING_BIT_NV</code> usage flag"
+          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructureCount-arraylength",
+          "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-accelerationStructureReference-03786",
-          "text": " Each <a href=\"#VkAccelerationStructureInstanceKHR\">VkAccelerationStructureInstanceKHR</a>::<code>accelerationStructureReference</code> value in <code>instanceData</code> <strong class=\"purple\">must</strong> be a valid device address containing a value obtained from <a href=\"#vkGetAccelerationStructureHandleNV\">vkGetAccelerationStructureHandleNV</a>"
+          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commonparent",
+          "text": " Each of <code>commandBuffer</code>, <code>queryPool</code>, and the elements of <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
+        }
+      ],
+      "core": [
+        {
+          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructures-03431",
+          "text": " All acceleration structures in <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been built with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR</code> if <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-03524",
-          "text": " If <code>update</code> is <code>VK_TRUE</code>, then objects that were previously active <strong class=\"purple\">must</strong> not be made inactive as per <a href=\"#acceleration-structure-inactive-prims\">Inactive Primitives and Instances</a>"
+          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryType-03432",
+          "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code> or <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>"
+        }
+      ]
+    },
+    "vkCmdWriteAccelerationStructuresPropertiesNV": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
+        {
+          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-03755",
+          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> matching <code>queryType</code>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-03525",
-          "text": " If <code>update</code> is <code>VK_TRUE</code>, then objects that were previously inactive <strong class=\"purple\">must</strong> not be made active as per <a href=\"#acceleration-structure-inactive-prims\">Inactive Primitives and Instances</a>"
+          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-03756",
+          "text": " The queries identified by <code>queryPool</code> and <code>firstQuery</code> <strong class=\"purple\">must</strong> be <em>unavailable</em>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-03526",
-          "text": " If <code>update</code> is <code>VK_TRUE</code>, the <code>src</code> and <code>dst</code> objects <strong class=\"purple\">must</strong> either be the same object or not have any <a href=\"#resources-memory-aliasing\">memory aliasing</a>"
+          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructure-03757",
+          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object via <a href=\"#vkBindAccelerationStructureMemoryNV\">vkBindAccelerationStructureMemoryNV</a>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-parameter",
-          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
+          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructures-03431",
+          "text": " All acceleration structures in <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been built with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR</code> if <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV</code>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-pInfo-parameter",
-          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a> structure"
+          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryType-03432",
+          "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV</code>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-instanceData-parameter",
-          "text": " If <code>instanceData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>instanceData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
+          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-parameter",
+          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-dst-parameter",
-          "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle"
+          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-pAccelerationStructures-parameter",
+          "text": " <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>accelerationStructureCount</code> valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handles"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-src-parameter",
-          "text": " If <code>src</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>src</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle"
+          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryType-parameter",
+          "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryType\">VkQueryType</a> value"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-scratch-parameter",
-          "text": " <code>scratch</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
+          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-parameter",
+          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-recording",
+          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-recording",
           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-cmdpool",
+          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-cmdpool",
           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-renderpass",
+          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-renderpass",
           "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commonparent",
-          "text": " Each of <code>commandBuffer</code>, <code>dst</code>, <code>instanceData</code>, <code>scratch</code>, and <code>src</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>"
+          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructureCount-arraylength",
+          "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+        },
+        {
+          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commonparent",
+          "text": " Each of <code>commandBuffer</code>, <code>queryPool</code>, and the elements of <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
         }
       ]
     },
-    "vkCmdBuildAccelerationStructuresKHR": {
+    "vkCmdCopyAccelerationStructureNV": {
       "core": [
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-mode-04628",
-          "text": " The <code>mode</code> member of each element of <code>pInfos</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuildAccelerationStructureModeKHR\">VkBuildAccelerationStructureModeKHR</a> value"
-        },
-        {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-srcAccelerationStructure-04629",
-          "text": " If the <code>srcAccelerationStructure</code> member of any element of <code>pInfos</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
-        },
-        {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-04630",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
+          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-mode-03410",
+          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR</code> or <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03403",
-          "text": " The <code>srcAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> not be the same acceleration structure as the <code>dstAccelerationStructure</code> member of any other element of <code>pInfos</code>"
+          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-src-03411",
+          "text": " If <code>mode</code> is <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR</code>, <code>src</code> <strong class=\"purple\">must</strong> have been built with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03698",
-          "text": " The <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> not be the same acceleration structure as the <code>dstAccelerationStructure</code> member of any other element of <code>pInfos</code>"
+          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-buffer-03718",
+          "text": " The <code>buffer</code> used to create <code>src</code> <strong class=\"purple\">must</strong> be bound to device memory"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03800",
-          "text": " The <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
-        },
+          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-buffer-03719",
+          "text": " The <code>buffer</code> used to create <code>dst</code> <strong class=\"purple\">must</strong> be bound to device memory"
+        }
+      ],
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03699",
-          "text": " For each element of <code>pInfos</code>, if its <code>type</code> member is <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code>, its <code>dstAccelerationStructure</code> member <strong class=\"purple\">must</strong> have been created with a value of <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>type</code> equal to either <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code> or <code>VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR</code>"
+          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-parameter",
+          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03700",
-          "text": " For each element of <code>pInfos</code>, if its <code>type</code> member is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code>, its <code>dstAccelerationStructure</code> member <strong class=\"purple\">must</strong> have been created with a value of <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>type</code> equal to either <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code> or <code>VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR</code>"
+          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-dst-parameter",
+          "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03663",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, <a href=\"#acceleration-structure-inactive-prims\">inactive primitives</a> in its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> not be made active"
+          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-src-parameter",
+          "text": " <code>src</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03664",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, active primitives in its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> not be made <a href=\"#acceleration-structure-inactive-prims\">inactive</a>"
+          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-mode-parameter",
+          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyAccelerationStructureModeKHR\">VkCopyAccelerationStructureModeKHR</a> value"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-None-03407",
-          "text": " The <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> not be referenced by the <code>geometry.instances.data</code> member of any element of <code>pGeometries</code> or <code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code> in any other element of <code>pInfos</code>"
+          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-recording",
+          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03701",
-          "text": " The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>srcAccelerationStructure</code> member of any other element of <code>pInfos</code> with a <code>mode</code> equal to <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, which is accessed by this command"
+          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-cmdpool",
+          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03702",
-          "text": " The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>dstAccelerationStructure</code> member of any other element of <code>pInfos</code>, which is accessed by this command"
+          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-renderpass",
+          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03703",
-          "text": " The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>scratchData</code> member of any element of <code>pInfos</code> (including the same element), which is accessed by this command"
-        },
+          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commonparent",
+          "text": " Each of <code>commandBuffer</code>, <code>dst</code>, and <code>src</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
+        }
+      ]
+    },
+    "vkCmdCopyAccelerationStructureKHR": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-scratchData-03704",
-          "text": " The range of memory backing the <code>scratchData</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>scratchData</code> member of any other element of <code>pInfos</code>, which is accessed by this command"
+          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-buffer-03737",
+          "text": " The <code>buffer</code> used to create <code>pInfo</code>-&gt;<code>src</code> <strong class=\"purple\">must</strong> be bound to device memory"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-scratchData-03705",
-          "text": " The range of memory backing the <code>scratchData</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>srcAccelerationStructure</code> member of any element of <code>pInfos</code> with a <code>mode</code> equal to <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code> (including the same element), which is accessed by this command"
+          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-buffer-03738",
+          "text": " The <code>buffer</code> used to create <code>pInfo</code>-&gt;<code>dst</code> <strong class=\"purple\">must</strong> be bound to device memory"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03706",
-          "text": " The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing any acceleration structure referenced by the <code>geometry.instances.data</code> member of any element of <code>pGeometries</code> or <code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code> in any other element of <code>pInfos</code>, which is accessed by this command"
+          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-parameter",
+          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03666",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
+          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-pInfo-parameter",
+          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyAccelerationStructureInfoKHR\">VkCopyAccelerationStructureInfoKHR</a> structure"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03667",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> have been built before with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR</code> set in <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a>::<code>flags</code>"
+          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-recording",
+          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03668",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>srcAccelerationStructure</code> and <code>dstAccelerationStructure</code> members <strong class=\"purple\">must</strong> either be the same <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a>, or not have any <a href=\"#resources-memory-aliasing\">memory aliasing</a>"
+          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-cmdpool",
+          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03758",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>geometryCount</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
-        },
+          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-renderpass",
+          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+        }
+      ]
+    },
+    "VkCopyAccelerationStructureInfoKHR": {
+      "core": [
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03759",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>flags</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
+          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-mode-03410",
+          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR</code> or <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03760",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>type</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
+          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-src-03411",
+          "text": " If <code>mode</code> is <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR</code>, <code>src</code> <strong class=\"purple\">must</strong> have been built with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03761",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, its <code>geometryType</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
+          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-buffer-03718",
+          "text": " The <code>buffer</code> used to create <code>src</code> <strong class=\"purple\">must</strong> be bound to device memory"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03762",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, its <code>flags</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
-        },
+          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-buffer-03719",
+          "text": " The <code>buffer</code> used to create <code>dst</code> <strong class=\"purple\">must</strong> be bound to device memory"
+        }
+      ],
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03763",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, its <code>geometry.triangles.vertexFormat</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
+          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03764",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, its <code>geometry.triangles.maxVertex</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
+          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03765",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, its <code>geometry.triangles.indexType</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
+          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-src-parameter",
+          "text": " <code>src</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03766",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if its <code>geometry.triangles.transformData</code> member was NULL when <code>srcAccelerationStructure</code> was last built, then it must be NULL."
+          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-dst-parameter",
+          "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03767",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if its <code>geometry.triangles.transformData</code> member was not NULL when <code>srcAccelerationStructure</code> was last built, then it may not be NULL."
+          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-mode-parameter",
+          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyAccelerationStructureModeKHR\">VkCopyAccelerationStructureModeKHR</a> value"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03768",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, and <code>geometry.triangles.indexType</code> is not <code>VK_INDEX_TYPE_NONE_KHR</code>, then the value of each index referenced index must be the same as the corresponding index value when <code>srcAccelerationStructure</code> was last built."
-        },
+          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-commonparent",
+          "text": " Both of <code>dst</code>, and <code>src</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
+        }
+      ]
+    },
+    "vkCmdCopyAccelerationStructureToMemoryKHR": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-primitiveCount-03769",
-          "text": " For each <code>VkAccelerationStructureBuildRangeInfoKHR</code> referenced by this command, its <code>primitiveCount</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
+          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-03739",
+          "text": " <code>pInfo</code>-&gt;<code>dst.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address for a buffer bound to device memory."
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-firstVertex-03770",
-          "text": " For each <code>VkAccelerationStructureBuildRangeInfoKHR</code> referenced by this command, if the corresponding geometry uses indices, its <code>firstVertex</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
+          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-03740",
+          "text": " <code>pInfo</code>-&gt;<code>dst.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to <code>256</code> bytes"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03801",
-          "text": " For each element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, the corresponding {maxinstancecheck} <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>maxInstanceCount</code>"
+          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-03741",
+          "text": " If the buffer pointed to by <code>pInfo</code>-&gt;<code>dst.deviceAddress</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03707",
-          "text": " For each element of <code>pInfos</code>, the <code>buffer</code> used to create its <code>dstAccelerationStructure</code> member <strong class=\"purple\">must</strong> be bound to device memory"
+          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-None-03559",
+          "text": " The <code>buffer</code> used to create <code>pInfo</code>-&gt;<code>src</code> <strong class=\"purple\">must</strong> be bound to device memory"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03708",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code> the <code>buffer</code> used to create its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> be bound to device memory"
+          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-parameter",
+          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03709",
-          "text": " For each element of <code>pInfos</code>, the <code>buffer</code> used to create each acceleration structure referenced by the <code>geometry.instances.data</code> member of any element of <code>pGeometries</code> or <code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code> <strong class=\"purple\">must</strong> be bound to device memory"
+          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-parameter",
+          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyAccelerationStructureToMemoryInfoKHR\">VkCopyAccelerationStructureToMemoryInfoKHR</a> structure"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03671",
-          "text": " If <code>pInfos</code>[i].<code>mode</code> is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR</code>, all addresses between <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> and <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> + N - 1 <strong class=\"purple\">must</strong> be in the buffer device address range of the same buffer, where N is given by the <code>buildScratchSize</code> member of the <a href=\"#VkAccelerationStructureBuildSizesInfoKHR\">VkAccelerationStructureBuildSizesInfoKHR</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureBuildSizesKHR\">vkGetAccelerationStructureBuildSizesKHR</a> with an identical <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structure and primitive count"
+          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-recording",
+          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03672",
-          "text": " If <code>pInfos</code>[i].<code>mode</code> is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, all addresses between <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> and <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> + N - 1 <strong class=\"purple\">must</strong> be in the buffer device address range of the same buffer, where N is given by the <code>updateScratchSize</code> member of the <a href=\"#VkAccelerationStructureBuildSizesInfoKHR\">VkAccelerationStructureBuildSizesInfoKHR</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureBuildSizesKHR\">vkGetAccelerationStructureBuildSizesKHR</a> with an identical <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structure and primitive count"
+          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-cmdpool",
+          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-geometry-03673",
-          "text": " The buffers from which the buffer device addresses for all of the <code>geometry.triangles.vertexData</code>, <code>geometry.triangles.indexData</code>, <code>geometry.triangles.transformData</code>, <code>geometry.aabbs.data</code>, and <code>geometry.instances.data</code> members of all <code>pInfos</code>[i].<code>pGeometries</code> and <code>pInfos</code>[i].<code>ppGeometries</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR</code> usage flag"
-        },
+          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-renderpass",
+          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+        }
+      ]
+    },
+    "VkCopyAccelerationStructureToMemoryInfoKHR": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03674",
-          "text": " The buffer from which the buffer device address <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_STORAGE_BUFFER_BIT</code> usage flag"
+          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-dst-03561",
+          "text": " The memory pointed to by <code>dst</code> <strong class=\"purple\">must</strong> be at least as large as the serialization size of <code>src</code>, as reported by <a href=\"#vkWriteAccelerationStructuresPropertiesKHR\">vkWriteAccelerationStructuresPropertiesKHR</a> or <a href=\"#vkCmdWriteAccelerationStructuresPropertiesKHR\">vkCmdWriteAccelerationStructuresPropertiesKHR</a> with a query type of <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03802",
-          "text": " For each element of <code>pInfos</code>, its <code>scratchData.deviceAddress</code> member <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>"
+          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-mode-03412",
+          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03803",
-          "text": " For each element of <code>pInfos</code>, if <code>scratchData.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object"
+          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03710",
-          "text": " For each element of <code>pInfos</code>, its <code>scratchData.deviceAddress</code> member <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>minAccelerationStructureScratchOffsetAlignment</code>"
+          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03804",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, <code>geometry.triangles.vertexData.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>"
+          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-src-parameter",
+          "text": " <code>src</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03805",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.vertexData.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object"
+          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-dst-parameter",
+          "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressKHR\">VkDeviceOrHostAddressKHR</a> union"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03711",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, <code>geometry.triangles.vertexData.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to the size in bytes of the smallest component of the format in <code>vertexFormat</code>"
-        },
+          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-mode-parameter",
+          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyAccelerationStructureModeKHR\">VkCopyAccelerationStructureModeKHR</a> value"
+        }
+      ]
+    },
+    "vkCmdCopyMemoryToAccelerationStructureKHR": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03806",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.indexType</code> is not <code>VK_INDEX_TYPE_NONE_KHR</code>, <code>geometry.triangles.indexData.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>"
+          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03742",
+          "text": " <code>pInfo</code>-&gt;<code>src.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address for a buffer bound to device memory."
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03807",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.indexType</code> is not <code>VK_INDEX_TYPE_NONE_KHR</code>, if <code>geometry.triangles.indexData.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object"
+          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03743",
+          "text": " <code>pInfo</code>-&gt;<code>src.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to <code>256</code> bytes"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03712",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, and with <code>geometry.triangles.indexType</code> not equal to <code>VK_INDEX_TYPE_NONE_KHR</code>, <code>geometry.triangles.indexData.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to the size in bytes of the type in <code>indexType</code>"
+          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03744",
+          "text": " If the buffer pointed to by <code>pInfo</code>-&gt;<code>src.deviceAddress</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03808",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.transformData.deviceAddress</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>"
+          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-buffer-03745",
+          "text": " The <code>buffer</code> used to create <code>pInfo</code>-&gt;<code>dst</code> <strong class=\"purple\">must</strong> be bound to device memory"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03809",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.transformData.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object"
+          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-parameter",
+          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03810",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.transformData.deviceAddress</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be aligned to <code>16</code> bytes"
+          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-parameter",
+          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyMemoryToAccelerationStructureInfoKHR\">VkCopyMemoryToAccelerationStructureInfoKHR</a> structure"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03811",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, <code>geometry.aabbs.data.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>"
+          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-recording",
+          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03812",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, if <code>geometry.aabbs.data.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object"
+          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-cmdpool",
+          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03714",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, <code>geometry.aabbs.data.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to <code>8</code> bytes"
-        },
+          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-renderpass",
+          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+        }
+      ]
+    },
+    "VkCopyMemoryToAccelerationStructureInfoKHR": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03715",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, if <code>geometry.arrayOfPointers</code> is <code>VK_FALSE</code>, <code>geometry.instances.data.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to <code>16</code> bytes"
+          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-mode-03413",
+          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03716",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, if <code>geometry.arrayOfPointers</code> is <code>VK_TRUE</code>, <code>geometry.instances.data.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to <code>8</code> bytes"
+          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-pInfo-03414",
+          "text": " The data in <code>src</code> <strong class=\"purple\">must</strong> have a format compatible with the destination physical device as returned by <a href=\"#vkGetDeviceAccelerationStructureCompatibilityKHR\">vkGetDeviceAccelerationStructureCompatibilityKHR</a>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03717",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, if <code>geometry.arrayOfPointers</code> is <code>VK_TRUE</code>, each element of <code>geometry.instances.data.deviceAddress</code> in device memory <strong class=\"purple\">must</strong> be aligned to <code>16</code> bytes"
+          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-dst-03746",
+          "text": " <code>dst</code> <strong class=\"purple\">must</strong> have been created with a <code>size</code> greater than or equal to that used to serialize the data in <code>src</code>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03813",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, <code>geometry.instances.data.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>"
+          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03814",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, if <code>geometry.instances.data.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object"
+          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03815",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, each <a href=\"#VkAccelerationStructureInstanceKHR\">VkAccelerationStructureInstanceKHR</a>::<code>accelerationStructureReference</code> value in <code>geometry.instances.data.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address containing a value obtained from <a href=\"#vkGetAccelerationStructureDeviceAddressKHR\">vkGetAccelerationStructureDeviceAddressKHR</a>"
+          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-src-parameter",
+          "text": " <code>src</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> union"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03675",
-          "text": " For each <code>pInfos</code>[i], <code>dstAccelerationStructure</code> <strong class=\"purple\">must</strong> have been created with a value of <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>size</code> greater than or equal to the memory size required by the build operation, as returned by <a href=\"#vkGetAccelerationStructureBuildSizesKHR\">vkGetAccelerationStructureBuildSizesKHR</a> with <span class=\"eq\"><code>pBuildInfo</code> = <code>pInfos</code>[i]</span> and with each element of the <code>pMaxPrimitiveCounts</code> array greater than or equal to the equivalent <code>ppBuildRangeInfos</code>[i][j].<code>primitiveCount</code> values for <code>j</code> in <span class=\"eq\">[0,<code>pInfos</code>[i].<code>geometryCount</code>)</span>"
+          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-dst-parameter",
+          "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-ppBuildRangeInfos-03676",
-          "text": " Each element of <code>ppBuildRangeInfos</code>[i] <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pInfos</code>[i].<code>geometryCount</code> <code>VkAccelerationStructureBuildRangeInfoKHR</code> structures"
+          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-mode-parameter",
+          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyAccelerationStructureModeKHR\">VkCopyAccelerationStructureModeKHR</a> value"
         }
-      ],
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)+(VK_KHR_acceleration_structure)": [
+      ]
+    },
+    "vkGetDeviceAccelerationStructureCompatibilityKHR": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-commandBuffer-parameter",
-          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
+          "vuid": "VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-rayTracingPipeline-03661",
+          "text": " The <a href=\"#features-rayTracingPipeline\"><code>rayTracingPipeline</code></a> or <a href=\"#features-rayQuery\"><code>rayQuery</code></a> feature <strong class=\"purple\">must</strong> be enabled"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-parameter",
-          "text": " <code>pInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> valid <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structures"
+          "vuid": "VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-ppBuildRangeInfos-parameter",
-          "text": " <code>ppBuildRangeInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> <a href=\"#VkAccelerationStructureBuildRangeInfoKHR\">VkAccelerationStructureBuildRangeInfoKHR</a> structures"
+          "vuid": "VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-pVersionInfo-parameter",
+          "text": " <code>pVersionInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureVersionInfoKHR\">VkAccelerationStructureVersionInfoKHR</a> structure"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-commandBuffer-recording",
-          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
-        },
+          "vuid": "VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-pCompatibility-parameter",
+          "text": " <code>pCompatibility</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkAccelerationStructureCompatibilityKHR\">VkAccelerationStructureCompatibilityKHR</a> value"
+        }
+      ]
+    },
+    "VkAccelerationStructureVersionInfoKHR": {
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-commandBuffer-cmdpool",
-          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
+          "vuid": "VUID-VkAccelerationStructureVersionInfoKHR-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-renderpass",
-          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+          "vuid": "VUID-VkAccelerationStructureVersionInfoKHR-pNext-pNext",
+          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-infoCount-arraylength",
-          "text": " <code>infoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+          "vuid": "VUID-VkAccelerationStructureVersionInfoKHR-pVersionData-parameter",
+          "text": " <code>pVersionData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>2</code>*<code>VK_UUID_SIZE</code> <code>uint8_t</code> values"
         }
       ]
     },
-    "vkCmdBuildAccelerationStructuresIndirectKHR": {
+    "vkBuildAccelerationStructuresKHR": {
       "core": [
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-mode-04628",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-mode-04628",
           "text": " The <code>mode</code> member of each element of <code>pInfos</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuildAccelerationStructureModeKHR\">VkBuildAccelerationStructureModeKHR</a> value"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-srcAccelerationStructure-04629",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-srcAccelerationStructure-04629",
           "text": " If the <code>srcAccelerationStructure</code> member of any element of <code>pInfos</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-04630",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-04630",
           "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03403",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03403",
           "text": " The <code>srcAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> not be the same acceleration structure as the <code>dstAccelerationStructure</code> member of any other element of <code>pInfos</code>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03698",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03698",
           "text": " The <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> not be the same acceleration structure as the <code>dstAccelerationStructure</code> member of any other element of <code>pInfos</code>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03800",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03800",
           "text": " The <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03699",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03699",
           "text": " For each element of <code>pInfos</code>, if its <code>type</code> member is <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code>, its <code>dstAccelerationStructure</code> member <strong class=\"purple\">must</strong> have been created with a value of <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>type</code> equal to either <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code> or <code>VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03700",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03700",
           "text": " For each element of <code>pInfos</code>, if its <code>type</code> member is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code>, its <code>dstAccelerationStructure</code> member <strong class=\"purple\">must</strong> have been created with a value of <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>type</code> equal to either <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code> or <code>VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03663",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03663",
           "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, <a href=\"#acceleration-structure-inactive-prims\">inactive primitives</a> in its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> not be made active"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03664",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03664",
           "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, active primitives in its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> not be made <a href=\"#acceleration-structure-inactive-prims\">inactive</a>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-None-03407",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-None-03407",
           "text": " The <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> not be referenced by the <code>geometry.instances.data</code> member of any element of <code>pGeometries</code> or <code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code> in any other element of <code>pInfos</code>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03701",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03701",
           "text": " The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>srcAccelerationStructure</code> member of any other element of <code>pInfos</code> with a <code>mode</code> equal to <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, which is accessed by this command"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03702",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03702",
           "text": " The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>dstAccelerationStructure</code> member of any other element of <code>pInfos</code>, which is accessed by this command"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03703",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03703",
           "text": " The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>scratchData</code> member of any element of <code>pInfos</code> (including the same element), which is accessed by this command"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-scratchData-03704",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-scratchData-03704",
           "text": " The range of memory backing the <code>scratchData</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>scratchData</code> member of any other element of <code>pInfos</code>, which is accessed by this command"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-scratchData-03705",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-scratchData-03705",
           "text": " The range of memory backing the <code>scratchData</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>srcAccelerationStructure</code> member of any element of <code>pInfos</code> with a <code>mode</code> equal to <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code> (including the same element), which is accessed by this command"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03706",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03706",
           "text": " The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing any acceleration structure referenced by the <code>geometry.instances.data</code> member of any element of <code>pGeometries</code> or <code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code> in any other element of <code>pInfos</code>, which is accessed by this command"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03666",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03666",
           "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03667",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03667",
           "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> have been built before with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR</code> set in <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a>::<code>flags</code>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03668",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03668",
           "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>srcAccelerationStructure</code> and <code>dstAccelerationStructure</code> members <strong class=\"purple\">must</strong> either be the same <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a>, or not have any <a href=\"#resources-memory-aliasing\">memory aliasing</a>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03758",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03758",
           "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>geometryCount</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03759",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03759",
           "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>flags</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03760",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03760",
           "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>type</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03761",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03761",
           "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, its <code>geometryType</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03762",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03762",
           "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, its <code>flags</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03763",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03763",
           "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, its <code>geometry.triangles.vertexFormat</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03764",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03764",
           "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, its <code>geometry.triangles.maxVertex</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03765",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03765",
           "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, its <code>geometry.triangles.indexType</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03766",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03766",
           "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if its <code>geometry.triangles.transformData</code> member was NULL when <code>srcAccelerationStructure</code> was last built, then it must be NULL."
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03767",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03767",
           "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if its <code>geometry.triangles.transformData</code> member was not NULL when <code>srcAccelerationStructure</code> was last built, then it may not be NULL."
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03768",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03768",
           "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, and <code>geometry.triangles.indexType</code> is not <code>VK_INDEX_TYPE_NONE_KHR</code>, then the value of each index referenced index must be the same as the corresponding index value when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-primitiveCount-03769",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-primitiveCount-03769",
           "text": " For each <code>VkAccelerationStructureBuildRangeInfoKHR</code> referenced by this command, its <code>primitiveCount</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-firstVertex-03770",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-firstVertex-03770",
           "text": " For each <code>VkAccelerationStructureBuildRangeInfoKHR</code> referenced by this command, if the corresponding geometry uses indices, its <code>firstVertex</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03801",
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03801",
           "text": " For each element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, the corresponding {maxinstancecheck} <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>maxInstanceCount</code>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03707",
-          "text": " For each element of <code>pInfos</code>, the <code>buffer</code> used to create its <code>dstAccelerationStructure</code> member <strong class=\"purple\">must</strong> be bound to device memory"
-        },
-        {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03708",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code> the <code>buffer</code> used to create its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> be bound to device memory"
-        },
-        {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03709",
-          "text": " For each element of <code>pInfos</code>, the <code>buffer</code> used to create each acceleration structure referenced by the <code>geometry.instances.data</code> member of any element of <code>pGeometries</code> or <code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code> <strong class=\"purple\">must</strong> be bound to device memory"
-        },
-        {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03671",
-          "text": " If <code>pInfos</code>[i].<code>mode</code> is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR</code>, all addresses between <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> and <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> + N - 1 <strong class=\"purple\">must</strong> be in the buffer device address range of the same buffer, where N is given by the <code>buildScratchSize</code> member of the <a href=\"#VkAccelerationStructureBuildSizesInfoKHR\">VkAccelerationStructureBuildSizesInfoKHR</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureBuildSizesKHR\">vkGetAccelerationStructureBuildSizesKHR</a> with an identical <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structure and primitive count"
-        },
-        {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03672",
-          "text": " If <code>pInfos</code>[i].<code>mode</code> is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, all addresses between <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> and <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> + N - 1 <strong class=\"purple\">must</strong> be in the buffer device address range of the same buffer, where N is given by the <code>updateScratchSize</code> member of the <a href=\"#VkAccelerationStructureBuildSizesInfoKHR\">VkAccelerationStructureBuildSizesInfoKHR</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureBuildSizesKHR\">vkGetAccelerationStructureBuildSizesKHR</a> with an identical <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structure and primitive count"
-        },
-        {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-geometry-03673",
-          "text": " The buffers from which the buffer device addresses for all of the <code>geometry.triangles.vertexData</code>, <code>geometry.triangles.indexData</code>, <code>geometry.triangles.transformData</code>, <code>geometry.aabbs.data</code>, and <code>geometry.instances.data</code> members of all <code>pInfos</code>[i].<code>pGeometries</code> and <code>pInfos</code>[i].<code>ppGeometries</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR</code> usage flag"
-        },
-        {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03674",
-          "text": " The buffer from which the buffer device address <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_STORAGE_BUFFER_BIT</code> usage flag"
-        },
-        {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03802",
-          "text": " For each element of <code>pInfos</code>, its <code>scratchData.deviceAddress</code> member <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>"
-        },
-        {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03803",
-          "text": " For each element of <code>pInfos</code>, if <code>scratchData.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object"
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03675",
+          "text": " For each <code>pInfos</code>[i], <code>dstAccelerationStructure</code> <strong class=\"purple\">must</strong> have been created with a value of <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>size</code> greater than or equal to the memory size required by the build operation, as returned by <a href=\"#vkGetAccelerationStructureBuildSizesKHR\">vkGetAccelerationStructureBuildSizesKHR</a> with <span class=\"eq\"><code>pBuildInfo</code> = <code>pInfos</code>[i]</span> and with each element of the <code>pMaxPrimitiveCounts</code> array greater than or equal to the equivalent <code>ppBuildRangeInfos</code>[i][j].<code>primitiveCount</code> values for <code>j</code> in <span class=\"eq\">[0,<code>pInfos</code>[i].<code>geometryCount</code>)</span>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03710",
-          "text": " For each element of <code>pInfos</code>, its <code>scratchData.deviceAddress</code> member <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>minAccelerationStructureScratchOffsetAlignment</code>"
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-ppBuildRangeInfos-03676",
+          "text": " Each element of <code>ppBuildRangeInfos</code>[i] <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pInfos</code>[i].<code>geometryCount</code> <code>VkAccelerationStructureBuildRangeInfoKHR</code> structures"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03804",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, <code>geometry.triangles.vertexData.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>"
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-deferredOperation-03677",
+          "text": " If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> object"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03805",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.vertexData.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object"
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-deferredOperation-03678",
+          "text": " Any previous deferred operation that was associated with <code>deferredOperation</code> <strong class=\"purple\">must</strong> be complete"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03711",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, <code>geometry.triangles.vertexData.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to the size in bytes of the smallest component of the format in <code>vertexFormat</code>"
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03722",
+          "text": " For each element of <code>pInfos</code>, the <code>buffer</code> used to create its <code>dstAccelerationStructure</code> member <strong class=\"purple\">must</strong> be bound to host-visible device memory"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03806",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.indexType</code> is not <code>VK_INDEX_TYPE_NONE_KHR</code>, <code>geometry.triangles.indexData.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>"
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03723",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code> the <code>buffer</code> used to create its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> be bound to host-visible device memory"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03807",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.indexType</code> is not <code>VK_INDEX_TYPE_NONE_KHR</code>, if <code>geometry.triangles.indexData.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object"
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03724",
+          "text": " For each element of <code>pInfos</code>, the <code>buffer</code> used to create each acceleration structure referenced by the <code>geometry.instances.data</code> member of any element of <code>pGeometries</code> or <code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code> <strong class=\"purple\">must</strong> be bound to host-visible device memory"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03712",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, and with <code>geometry.triangles.indexType</code> not equal to <code>VK_INDEX_TYPE_NONE_KHR</code>, <code>geometry.triangles.indexData.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to the size in bytes of the type in <code>indexType</code>"
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-accelerationStructureHostCommands-03581",
+          "text": " The <a href=\"#features-accelerationStructureHostCommands\"><code>VkPhysicalDeviceAccelerationStructureFeaturesKHR</code>::<code>accelerationStructureHostCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03808",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.transformData.deviceAddress</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>"
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03725",
+          "text": " If <code>pInfos</code>[i].<code>mode</code> is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR</code>, all addresses between <code>pInfos</code>[i].<code>scratchData.hostAddress</code> and <code>pInfos</code>[i].<code>scratchData.hostAddress</code> + N - 1 <strong class=\"purple\">must</strong> be valid host memory, where N is given by the <code>buildScratchSize</code> member of the <a href=\"#VkAccelerationStructureBuildSizesInfoKHR\">VkAccelerationStructureBuildSizesInfoKHR</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureBuildSizesKHR\">vkGetAccelerationStructureBuildSizesKHR</a> with an identical <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structure and primitive count"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03809",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.transformData.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object"
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03726",
+          "text": " If <code>pInfos</code>[i].<code>mode</code> is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, all addresses between <code>pInfos</code>[i].<code>scratchData.hostAddress</code> and <code>pInfos</code>[i].<code>scratchData.hostAddress</code> + N - 1 <strong class=\"purple\">must</strong> be valid host memory, where N is given by the <code>updateScratchSize</code> member of the <a href=\"#VkAccelerationStructureBuildSizesInfoKHR\">VkAccelerationStructureBuildSizesInfoKHR</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureBuildSizesKHR\">vkGetAccelerationStructureBuildSizesKHR</a> with an identical <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structure and primitive count"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03810",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.transformData.deviceAddress</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be aligned to <code>16</code> bytes"
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03771",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, <code>geometry.triangles.vertexData.hostAddress</code> <strong class=\"purple\">must</strong> be a valid host address"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03811",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, <code>geometry.aabbs.data.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>"
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03772",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.indexType</code> is not <code>VK_INDEX_TYPE_NONE_KHR</code>, <code>geometry.triangles.indexData.hostAddress</code> <strong class=\"purple\">must</strong> be a valid host address"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03812",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, if <code>geometry.aabbs.data.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object"
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03773",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.transformData.hostAddress</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be a valid host address"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03714",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, <code>geometry.aabbs.data.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to <code>8</code> bytes"
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03774",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, <code>geometry.aabbs.data.hostAddress</code> <strong class=\"purple\">must</strong> be a valid host address"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03715",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, if <code>geometry.arrayOfPointers</code> is <code>VK_FALSE</code>, <code>geometry.instances.data.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to <code>16</code> bytes"
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03778",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, <code>geometry.instances.data.hostAddress</code> <strong class=\"purple\">must</strong> be a valid host address"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03716",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, if <code>geometry.arrayOfPointers</code> is <code>VK_TRUE</code>, <code>geometry.instances.data.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to <code>8</code> bytes"
-        },
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03779",
+          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, each <a href=\"#VkAccelerationStructureInstanceKHR\">VkAccelerationStructureInstanceKHR</a>::<code>accelerationStructureReference</code> value in <code>geometry.instances.data.hostAddress</code> must be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> object"
+        }
+      ],
+      "(VK_KHR_device_group,VK_VERSION_1_1)": [
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03717",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, if <code>geometry.arrayOfPointers</code> is <code>VK_TRUE</code>, each element of <code>geometry.instances.data.deviceAddress</code> in device memory <strong class=\"purple\">must</strong> be aligned to <code>16</code> bytes"
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03775",
+          "text": " For each element of <code>pInfos</code>, the <code>buffer</code> used to create its <code>dstAccelerationStructure</code> member <strong class=\"purple\">must</strong> be bound to memory that was not allocated with multiple instances"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03813",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, <code>geometry.instances.data.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>"
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03776",
+          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code> the <code>buffer</code> used to create its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> be bound to memory that was not allocated with multiple instances"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03814",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, if <code>geometry.instances.data.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object"
-        },
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03777",
+          "text": " For each element of <code>pInfos</code>, the <code>buffer</code> used to create each acceleration structure referenced by the <code>geometry.instances.data</code> member of any element of <code>pGeometries</code> or <code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code> <strong class=\"purple\">must</strong> be bound to memory that was not allocated with multiple instances"
+        }
+      ],
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03815",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, each <a href=\"#VkAccelerationStructureInstanceKHR\">VkAccelerationStructureInstanceKHR</a>::<code>accelerationStructureReference</code> value in <code>geometry.instances.data.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address containing a value obtained from <a href=\"#vkGetAccelerationStructureDeviceAddressKHR\">vkGetAccelerationStructureDeviceAddressKHR</a>"
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03645",
-          "text": " For any element of <code>pIndirectDeviceAddresses</code>, if the buffer from which it was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object"
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-deferredOperation-parameter",
+          "text": " If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>deferredOperation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03646",
-          "text": " For any element of <code>pIndirectDeviceAddresses</code>[i], all device addresses between <code>pIndirectDeviceAddresses</code>[i] and <span class=\"eq\"><code>pIndirectDeviceAddresses</code>[i] &#43; (<code>pInfos</code>[i]&#8594;geometryCount {times} <code>pIndirectStrides</code>[i]) - 1</span> <strong class=\"purple\">must</strong> be in the buffer device address range of the same buffer"
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-parameter",
+          "text": " <code>pInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> valid <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structures"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03647",
-          "text": " For any element of <code>pIndirectDeviceAddresses</code>, the buffer from which it was queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-ppBuildRangeInfos-parameter",
+          "text": " <code>ppBuildRangeInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> <a href=\"#VkAccelerationStructureBuildRangeInfoKHR\">VkAccelerationStructureBuildRangeInfoKHR</a> structures"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03648",
-          "text": " Each element of <code>pIndirectDeviceAddresses</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-infoCount-arraylength",
+          "text": " <code>infoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectStrides-03787",
-          "text": " Each element of <code>pIndirectStrides</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
-        },
+          "vuid": "VUID-vkBuildAccelerationStructuresKHR-deferredOperation-parent",
+          "text": " If <code>deferredOperation</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+        }
+      ]
+    },
+    "vkCopyAccelerationStructureKHR": {
+      "core": [
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-03649",
-          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
+          "vuid": "VUID-vkCopyAccelerationStructureKHR-deferredOperation-03677",
+          "text": " If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> object"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-accelerationStructureIndirectBuild-03650",
-          "text": " The <a href=\"#features-accelerationStructureIndirectBuild\"><code>VkPhysicalDeviceAccelerationStructureFeaturesKHR</code>::<code>accelerationStructureIndirectBuild</code></a> feature <strong class=\"purple\">must</strong> be enabled"
+          "vuid": "VUID-vkCopyAccelerationStructureKHR-deferredOperation-03678",
+          "text": " Any previous deferred operation that was associated with <code>deferredOperation</code> <strong class=\"purple\">must</strong> be complete"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03651",
-          "text": " Each <a href=\"#VkAccelerationStructureBuildRangeInfoKHR\">VkAccelerationStructureBuildRangeInfoKHR</a> structure referenced by any element of <code>pIndirectDeviceAddresses</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureBuildRangeInfoKHR\">VkAccelerationStructureBuildRangeInfoKHR</a> structure"
+          "vuid": "VUID-vkCopyAccelerationStructureKHR-buffer-03727",
+          "text": " The <code>buffer</code> used to create <code>pInfo</code>-&gt;<code>src</code> <strong class=\"purple\">must</strong> be bound to host-visible device memory"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03652",
-          "text": " <code>pInfos</code>[i].<code>dstAccelerationStructure</code> <strong class=\"purple\">must</strong> have been created with a value of <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>size</code> greater than or equal to the memory size required by the build operation, as returned by <a href=\"#vkGetAccelerationStructureBuildSizesKHR\">vkGetAccelerationStructureBuildSizesKHR</a> with <span class=\"eq\"><code>pBuildInfo</code> = <code>pInfos</code>[i]</span> and <span class=\"eq\"><code>pMaxPrimitiveCounts</code> = <code>ppMaxPrimitiveCounts</code>[i]</span>"
+          "vuid": "VUID-vkCopyAccelerationStructureKHR-buffer-03728",
+          "text": " The <code>buffer</code> used to create <code>pInfo</code>-&gt;<code>dst</code> <strong class=\"purple\">must</strong> be bound to host-visible device memory"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-ppMaxPrimitiveCounts-03653",
-          "text": " Each <code>ppMaxPrimitiveCounts</code>[i][j] <strong class=\"purple\">must</strong> be greater than or equal to the the <code>primitiveCount</code> value specified by the <a href=\"#VkAccelerationStructureBuildRangeInfoKHR\">VkAccelerationStructureBuildRangeInfoKHR</a> structure located at <span class=\"eq\"><code>pIndirectDeviceAddresses</code>[i] &#43; (<code>j</code> {times} <code>pIndirectStrides</code>[i])</span>"
+          "vuid": "VUID-vkCopyAccelerationStructureKHR-accelerationStructureHostCommands-03582",
+          "text": " The <a href=\"#features-accelerationStructureHostCommands\"><code>VkPhysicalDeviceAccelerationStructureFeaturesKHR</code>::<code>accelerationStructureHostCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
         }
       ],
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)+(VK_KHR_acceleration_structure)": [
-        {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-parameter",
-          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
-        },
-        {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-parameter",
-          "text": " <code>pInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> valid <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structures"
-        },
-        {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-parameter",
-          "text": " <code>pIndirectDeviceAddresses</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> <code>VkDeviceAddress</code> values"
-        },
+      "(VK_KHR_device_group,VK_VERSION_1_1)": [
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectStrides-parameter",
-          "text": " <code>pIndirectStrides</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> <code>uint32_t</code> values"
+          "vuid": "VUID-vkCopyAccelerationStructureKHR-buffer-03780",
+          "text": " The <code>buffer</code> used to create <code>pInfo</code>-&gt;<code>src</code> <strong class=\"purple\">must</strong> be bound to memory that was not allocated with multiple instances"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-ppMaxPrimitiveCounts-parameter",
-          "text": " <code>ppMaxPrimitiveCounts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> <code>uint32_t</code> values"
-        },
+          "vuid": "VUID-vkCopyAccelerationStructureKHR-buffer-03781",
+          "text": " The <code>buffer</code> used to create <code>pInfo</code>-&gt;<code>dst</code> <strong class=\"purple\">must</strong> be bound to memory that was not allocated with multiple instances"
+        }
+      ],
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-recording",
-          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
+          "vuid": "VUID-vkCopyAccelerationStructureKHR-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-cmdpool",
-          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
+          "vuid": "VUID-vkCopyAccelerationStructureKHR-deferredOperation-parameter",
+          "text": " If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>deferredOperation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-renderpass",
-          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+          "vuid": "VUID-vkCopyAccelerationStructureKHR-pInfo-parameter",
+          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyAccelerationStructureInfoKHR\">VkCopyAccelerationStructureInfoKHR</a> structure"
         },
         {
-          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-infoCount-arraylength",
-          "text": " <code>infoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+          "vuid": "VUID-vkCopyAccelerationStructureKHR-deferredOperation-parent",
+          "text": " If <code>deferredOperation</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
         }
       ]
     },
-    "VkAccelerationStructureBuildGeometryInfoKHR": {
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)+(VK_KHR_acceleration_structure)": [
-        {
-          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03654",
-          "text": " <code>type</code> <strong class=\"purple\">must</strong> not be <code>VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR</code>"
-        },
-        {
-          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-pGeometries-03788",
-          "text": " Only one of <code>pGeometries</code> or <code>ppGeometries</code> <strong class=\"purple\">can</strong> be a valid pointer, the other <strong class=\"purple\">must</strong> be <code>NULL</code>"
-        },
-        {
-          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03789",
-          "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code>, the <code>geometryType</code> member of elements of either <code>pGeometries</code> or <code>ppGeometries</code> <strong class=\"purple\">must</strong> be <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>"
-        },
-        {
-          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03790",
-          "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code>, <code>geometryCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
-        },
-        {
-          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03791",
-          "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code> the <code>geometryType</code> member of elements of either <code>pGeometries</code> or <code>ppGeometries</code> <strong class=\"purple\">must</strong> not be <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>"
-        },
-        {
-          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03792",
-          "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code> then the <code>geometryType</code> member of each geometry in either <code>pGeometries</code> or <code>ppGeometries</code> <strong class=\"purple\">must</strong> be the same"
-        },
-        {
-          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03793",
-          "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code> then <code>geometryCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>maxGeometryCount</code>"
-        },
+    "vkCopyMemoryToAccelerationStructureKHR": {
+      "core": [
         {
-          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03794",
-          "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code> and the <code>geometryType</code> member of either <code>pGeometries</code> or <code>ppGeometries</code> is <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, the total number of AABBs in all geometries <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>maxPrimitiveCount</code>"
+          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-03677",
+          "text": " If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> object"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03795",
-          "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code> and the <code>geometryType</code> member of either <code>pGeometries</code> or <code>ppGeometries</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, the total number of triangles in all geometries <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>maxPrimitiveCount</code>"
+          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-03678",
+          "text": " Any previous deferred operation that was associated with <code>deferredOperation</code> <strong class=\"purple\">must</strong> be complete"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-03796",
-          "text": " If <code>flags</code> has the <code>VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR</code> bit set, then it <strong class=\"purple\">must</strong> not have the <code>VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR</code> bit set"
+          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-03729",
+          "text": " <code>pInfo</code>-&gt;<code>src.hostAddress</code> <strong class=\"purple\">must</strong> be a valid host pointer"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR</code>"
+          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-03750",
+          "text": " <code>pInfo</code>-&gt;<code>src.hostAddress</code> <strong class=\"purple\">must</strong> be aligned to 16 bytes"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-buffer-03730",
+          "text": " The <code>buffer</code> used to create <code>pInfo</code>-&gt;<code>dst</code> <strong class=\"purple\">must</strong> be bound to host-visible device memory"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-parameter",
-          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureTypeKHR\">VkAccelerationStructureTypeKHR</a> value"
-        },
+          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-accelerationStructureHostCommands-03583",
+          "text": " The <a href=\"#features-accelerationStructureHostCommands\"><code>VkPhysicalDeviceAccelerationStructureFeaturesKHR</code>::<code>accelerationStructureHostCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
+        }
+      ],
+      "(VK_KHR_device_group,VK_VERSION_1_1)": [
         {
-          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-parameter",
-          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBuildAccelerationStructureFlagBitsKHR\">VkBuildAccelerationStructureFlagBitsKHR</a> values"
-        },
+          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-buffer-03782",
+          "text": " The <code>buffer</code> used to create <code>pInfo</code>-&gt;<code>dst</code> <strong class=\"purple\">must</strong> be bound to memory that was not allocated with multiple instances"
+        }
+      ],
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
         {
-          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-pGeometries-parameter",
-          "text": " If <code>geometryCount</code> is not <code>0</code>, and <code>pGeometries</code> is not <code>NULL</code>, <code>pGeometries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>geometryCount</code> valid <a href=\"#VkAccelerationStructureGeometryKHR\">VkAccelerationStructureGeometryKHR</a> structures"
+          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-ppGeometries-parameter",
-          "text": " If <code>geometryCount</code> is not <code>0</code>, and <code>ppGeometries</code> is not <code>NULL</code>, <code>ppGeometries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>geometryCount</code> valid pointers to valid <a href=\"#VkAccelerationStructureGeometryKHR\">VkAccelerationStructureGeometryKHR</a> structures"
+          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-parameter",
+          "text": " If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>deferredOperation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-scratchData-parameter",
-          "text": " <code>scratchData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressKHR\">VkDeviceOrHostAddressKHR</a> union"
+          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-parameter",
+          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyMemoryToAccelerationStructureInfoKHR\">VkCopyMemoryToAccelerationStructureInfoKHR</a> structure"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-commonparent",
-          "text": " Both of <code>dstAccelerationStructure</code>, and <code>srcAccelerationStructure</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>"
+          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-parent",
+          "text": " If <code>deferredOperation</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
         }
       ]
     },
-    "VkAccelerationStructureGeometryKHR": {
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)+(VK_KHR_acceleration_structure)": [
+    "vkCopyAccelerationStructureToMemoryKHR": {
+      "core": [
         {
-          "vuid": "VUID-VkAccelerationStructureGeometryKHR-geometryType-03541",
-          "text": " If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, the <code>aabbs</code> member of <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureGeometryAabbsDataKHR\">VkAccelerationStructureGeometryAabbsDataKHR</a> structure"
+          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-03677",
+          "text": " If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> object"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureGeometryKHR-geometryType-03542",
-          "text": " If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, the <code>triangles</code> member of <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a> structure"
+          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-03678",
+          "text": " Any previous deferred operation that was associated with <code>deferredOperation</code> <strong class=\"purple\">must</strong> be complete"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureGeometryKHR-geometryType-03543",
-          "text": " If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, the <code>instances</code> member of <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureGeometryInstancesDataKHR\">VkAccelerationStructureGeometryInstancesDataKHR</a> structure"
+          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-buffer-03731",
+          "text": " The <code>buffer</code> used to create <code>pInfo</code>-&gt;<code>src</code> <strong class=\"purple\">must</strong> be bound to host-visible device memory"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureGeometryKHR-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR</code>"
+          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-03732",
+          "text": " <code>pInfo</code>-&gt;<code>dst.hostAddress</code> <strong class=\"purple\">must</strong> be a valid host pointer"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureGeometryKHR-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-03751",
+          "text": " <code>pInfo</code>-&gt;<code>dst.hostAddress</code> <strong class=\"purple\">must</strong> be aligned to 16 bytes"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureGeometryKHR-geometryType-parameter",
-          "text": " <code>geometryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryTypeKHR\">VkGeometryTypeKHR</a> value"
-        },
+          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-accelerationStructureHostCommands-03584",
+          "text": " The <a href=\"#features-accelerationStructureHostCommands\"><code>VkPhysicalDeviceAccelerationStructureFeaturesKHR</code>::<code>accelerationStructureHostCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
+        }
+      ],
+      "(VK_KHR_device_group,VK_VERSION_1_1)": [
         {
-          "vuid": "VUID-VkAccelerationStructureGeometryKHR-triangles-parameter",
-          "text": " If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, the <code>triangles</code> member of <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a> structure"
+          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-buffer-03783",
+          "text": " The <code>buffer</code> used to create <code>pInfo</code>-&gt;<code>src</code> <strong class=\"purple\">must</strong> be bound to memory that was not allocated with multiple instances"
+        }
+      ],
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
+        {
+          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureGeometryKHR-aabbs-parameter",
-          "text": " If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, the <code>aabbs</code> member of <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureGeometryAabbsDataKHR\">VkAccelerationStructureGeometryAabbsDataKHR</a> structure"
+          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-parameter",
+          "text": " If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>deferredOperation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureGeometryKHR-instances-parameter",
-          "text": " If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, the <code>instances</code> member of <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureGeometryInstancesDataKHR\">VkAccelerationStructureGeometryInstancesDataKHR</a> structure"
+          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-parameter",
+          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyAccelerationStructureToMemoryInfoKHR\">VkCopyAccelerationStructureToMemoryInfoKHR</a> structure"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureGeometryKHR-flags-parameter",
-          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkGeometryFlagBitsKHR\">VkGeometryFlagBitsKHR</a> values"
+          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-parent",
+          "text": " If <code>deferredOperation</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
         }
       ]
     },
-    "VkAccelerationStructureGeometryTrianglesDataKHR": {
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)+(VK_KHR_acceleration_structure)": [
-        {
-          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexStride-03735",
-          "text": " <code>vertexStride</code> <strong class=\"purple\">must</strong> be a multiple of the size in bytes of the smallest component of <code>vertexFormat</code>"
-        },
-        {
-          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexStride-03819",
-          "text": " <code>vertexStride</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>32</sup>-1</span>"
-        },
+    "vkWriteAccelerationStructuresPropertiesKHR": {
+      "core": [
         {
-          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexFormat-03797",
-          "text": " <code>vertexFormat</code> <strong class=\"purple\">must</strong> support the <code>VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR</code> in <a href=\"#VkFormatProperties\">VkFormatProperties</a>::<code>bufferFeatures</code> as returned by <a href=\"#vkGetPhysicalDeviceFormatProperties2\">vkGetPhysicalDeviceFormatProperties2</a>"
+          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructures-03431",
+          "text": " All acceleration structures in <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been built with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR</code> if <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code>"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexType-03798",
-          "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be <code>VK_INDEX_TYPE_UINT16</code>, <code>VK_INDEX_TYPE_UINT32</code>, or <code>VK_INDEX_TYPE_NONE_KHR</code>"
+          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03432",
+          "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code> or <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR</code>"
+          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03448",
+          "text": " If <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code>, then <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of the size of <code>VkDeviceSize</code>"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03449",
+          "text": " If <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code>, then <code>data</code> <strong class=\"purple\">must</strong> point to a <code>VkDeviceSize</code>"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexFormat-parameter",
-          "text": " <code>vertexFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
+          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03450",
+          "text": " If <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>, then <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of the size of <code>VkDeviceSize</code>"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexData-parameter",
-          "text": " <code>vertexData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> union"
+          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03451",
+          "text": " If <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>, then <code>data</code> <strong class=\"purple\">must</strong> point to a <code>VkDeviceSize</code>"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexType-parameter",
-          "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value"
+          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-dataSize-03452",
+          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than or equal to <span class=\"eq\"><code>accelerationStructureCount</code>*<code>stride</code></span>"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexData-parameter",
-          "text": " If <code>indexData</code> is not <code>0</code>, <code>indexData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> union"
+          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-buffer-03733",
+          "text": " The <code>buffer</code> used to create each acceleration structure in <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be bound to host-visible device memory"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-transformData-parameter",
-          "text": " If <code>transformData</code> is not <code>0</code>, <code>transformData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> union"
+          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructureHostCommands-03585",
+          "text": " The <a href=\"#features-accelerationStructureHostCommands\"><code>VkPhysicalDeviceAccelerationStructureFeaturesKHR</code>::<code>accelerationStructureHostCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
         }
-      ]
-    },
-    "VkTransformMatrixKHR": {
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)": [
+      ],
+      "(VK_KHR_device_group,VK_VERSION_1_1)": [
         {
-          "vuid": "VUID-VkTransformMatrixKHR-matrix-03799",
-          "text": " The first three columns of <code>matrix</code> <strong class=\"purple\">must</strong> define an invertible 3x3 matrix"
+          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-buffer-03784",
+          "text": " The <code>buffer</code> used to create each acceleration structure in <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be bound to memory that was not allocated with multiple instances"
         }
-      ]
-    },
-    "VkAccelerationStructureGeometryAabbsDataKHR": {
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)+(VK_KHR_acceleration_structure)": [
+      ],
+      "(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
         {
-          "vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-stride-03545",
-          "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>8</code>"
+          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-device-parameter",
+          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-stride-03820",
-          "text": " <code>stride</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>32</sup>-1</span>"
+          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parameter",
+          "text": " <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>accelerationStructureCount</code> valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handles"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR</code>"
+          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-parameter",
+          "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryType\">VkQueryType</a> value"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-pData-parameter",
+          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-data-parameter",
-          "text": " <code>data</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> union"
+          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructureCount-arraylength",
+          "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+        },
+        {
+          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-dataSize-arraylength",
+          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+        },
+        {
+          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parent",
+          "text": " Each element of <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
         }
       ]
     },
-    "VkAabbPositionsKHR": {
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)": [
+    "vkCmdTraceRaysNV": {
+      "core": [
         {
-          "vuid": "VUID-VkAabbPositionsKHR-minX-03546",
-          "text": " <code>minX</code> <strong class=\"purple\">must</strong> be less than or equal to <code>maxX</code>"
+          "vuid": "VUID-vkCmdTraceRaysNV-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> 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&#8217;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>"
         },
         {
-          "vuid": "VUID-VkAabbPositionsKHR-minY-03547",
-          "text": " <code>minY</code> <strong class=\"purple\">must</strong> be less than or equal to <code>maxY</code>"
+          "vuid": "VUID-vkCmdTraceRaysNV-None-02691",
+          "text": " If a <code>VkImageView</code> is accessed using atomic operations as a result of this command, then the image view&#8217;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>"
         },
         {
-          "vuid": "VUID-VkAabbPositionsKHR-minZ-03548",
-          "text": " <code>minZ</code> <strong class=\"purple\">must</strong> be less than or equal to <code>maxZ</code>"
-        }
-      ]
-    },
-    "VkAccelerationStructureGeometryInstancesDataKHR": {
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)+(VK_KHR_acceleration_structure)": [
+          "vuid": "VUID-vkCmdTraceRaysNV-None-02697",
+          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
+        },
         {
-          "vuid": "VUID-VkAccelerationStructureGeometryInstancesDataKHR-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR</code>"
+          "vuid": "VUID-vkCmdTraceRaysNV-None-02698",
+          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureGeometryInstancesDataKHR-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-vkCmdTraceRaysNV-None-02699",
+          "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureGeometryInstancesDataKHR-data-parameter",
-          "text": " <code>data</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> union"
-        }
-      ]
-    },
-    "VkAccelerationStructureInstanceKHR": {
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)": [
+          "vuid": "VUID-vkCmdTraceRaysNV-None-02700",
+          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
+        },
         {
-          "vuid": "VUID-VkAccelerationStructureInstanceKHR-flags-parameter",
-          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkGeometryInstanceFlagBitsKHR\">VkGeometryInstanceFlagBitsKHR</a> values"
-        }
-      ]
-    },
-    "VkAccelerationStructureBuildRangeInfoKHR": {
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)+(VK_KHR_acceleration_structure)": [
+          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02701",
+          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
+        },
         {
-          "vuid": "VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03656",
-          "text": " For geometries of type <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if the geometry uses indices, the offset <code>primitiveOffset</code> from <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a>::<code>indexData</code> <strong class=\"purple\">must</strong> be a multiple of the element size of <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a>::<code>indexType</code>"
+          "vuid": "VUID-vkCmdTraceRaysNV-None-02859",
+          "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03657",
-          "text": " For geometries of type <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if the geometry doesn&#8217;t use indices, the offset <code>primitiveOffset</code> from <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a>::<code>vertexData</code> <strong class=\"purple\">must</strong> be a multiple of the component size of <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a>::<code>vertexFormat</code>"
+          "vuid": "VUID-vkCmdTraceRaysNV-None-02702",
+          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> 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"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureBuildRangeInfoKHR-transformOffset-03658",
-          "text": " For geometries of type <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, the offset <code>transformOffset</code> from <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a>::<code>transformData</code> <strong class=\"purple\">must</strong> be a multiple of 16"
+          "vuid": "VUID-vkCmdTraceRaysNV-None-02703",
+          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> 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"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03659",
-          "text": " For geometries of type <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, the offset <code>primitiveOffset</code> from <a href=\"#VkAccelerationStructureGeometryAabbsDataKHR\">VkAccelerationStructureGeometryAabbsDataKHR</a>::<code>data</code> <strong class=\"purple\">must</strong> be a multiple of 8"
+          "vuid": "VUID-vkCmdTraceRaysNV-None-02704",
+          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> 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"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03660",
-          "text": " For geometries of type <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, the offset <code>primitiveOffset</code> from <a href=\"#VkAccelerationStructureGeometryInstancesDataKHR\">VkAccelerationStructureGeometryInstancesDataKHR</a>::<code>data</code> <strong class=\"purple\">must</strong> be a multiple of 16"
-        }
-      ]
-    },
-    "vkCmdWriteAccelerationStructuresPropertiesKHR": {
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)": [
+          "vuid": "VUID-vkCmdTraceRaysNV-None-02705",
+          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound 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"
+        },
         {
-          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-02493",
-          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> matching <code>queryType</code>"
+          "vuid": "VUID-vkCmdTraceRaysNV-None-02706",
+          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound 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"
         },
         {
-          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-02494",
-          "text": " The queries identified by <code>queryPool</code> and <code>firstQuery</code> <strong class=\"purple\">must</strong> be <em>unavailable</em>"
+          "vuid": "VUID-vkCmdTraceRaysNV-None-04115",
+          "text": " If a <a href=\"#VkImageView\">VkImageView</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 image view&#8217;s format."
         },
         {
-          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-buffer-03736",
-          "text": " The <code>buffer</code> used to create each acceleration structure in <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be bound to device memory"
+          "vuid": "VUID-vkCmdTraceRaysNV-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 image view&#8217;s format."
         },
         {
-          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-parameter",
-          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
+          "vuid": "VUID-vkCmdTraceRaysNV-None-03429",
+          "text": " Any shader group handle referenced by this call <strong class=\"purple\">must</strong> have been queried from the currently bound ray tracing shader pipeline"
         },
         {
-          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parameter",
-          "text": " <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>accelerationStructureCount</code> valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handles"
+          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-04624",
+          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
         },
         {
-          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryType-parameter",
-          "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryType\">VkQueryType</a> value"
+          "vuid": "VUID-vkCmdTraceRaysNV-maxRecursionDepth-03625",
+          "text": " This command <strong class=\"purple\">must</strong> not cause a trace ray instruction to be executed from a shader invocation with a <a href=\"#ray-tracing-recursion-depth\">recursion depth</a> greater than the value of <code>maxRecursionDepth</code> used to create the bound ray tracing pipeline"
         },
         {
-          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-parameter",
-          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle"
+          "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-04042",
+          "text": " If <code>raygenShaderBindingTableBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
         },
         {
-          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-recording",
-          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
+          "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02455",
+          "text": " <code>raygenShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>raygenShaderBindingTableBuffer</code>"
         },
         {
-          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-cmdpool",
-          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
+          "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02456",
+          "text": " <code>raygenShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>"
         },
         {
-          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-renderpass",
-          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-04043",
+          "text": " If <code>missShaderBindingTableBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
         },
         {
-          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructureCount-arraylength",
-          "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02457",
+          "text": " <code>missShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>missShaderBindingTableBuffer</code>"
         },
         {
-          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commonparent",
-          "text": " Each of <code>commandBuffer</code>, <code>queryPool</code>, and the elements of <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
-        }
-      ],
-      "core": [
+          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02458",
+          "text": " <code>missShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>"
+        },
         {
-          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructures-03431",
-          "text": " All acceleration structures in <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been built with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR</code> if <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code>"
+          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingTableBuffer-04044",
+          "text": " If <code>hitShaderBindingTableBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
         },
         {
-          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryType-03432",
-          "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code> or <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>"
-        }
-      ]
-    },
-    "vkCmdWriteAccelerationStructuresPropertiesNV": {
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)+(VK_NV_ray_tracing)": [
+          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02459",
+          "text": " <code>hitShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>hitShaderBindingTableBuffer</code>"
+        },
         {
-          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-03755",
-          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> matching <code>queryType</code>"
+          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02460",
+          "text": " <code>hitShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>"
         },
         {
-          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-03756",
-          "text": " The queries identified by <code>queryPool</code> and <code>firstQuery</code> <strong class=\"purple\">must</strong> be <em>unavailable</em>"
+          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingTableBuffer-04045",
+          "text": " If <code>callableShaderBindingTableBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
         },
         {
-          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructure-03757",
-          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object via <a href=\"#vkBindAccelerationStructureMemoryNV\">vkBindAccelerationStructureMemoryNV</a>"
+          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02461",
+          "text": " <code>callableShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>callableShaderBindingTableBuffer</code>"
         },
         {
-          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-parameter",
-          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
+          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02462",
+          "text": " <code>callableShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>"
         },
         {
-          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-pAccelerationStructures-parameter",
-          "text": " <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>accelerationStructureCount</code> valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handles"
+          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingStride-02463",
+          "text": " <code>missShaderBindingStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code>"
         },
         {
-          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryType-parameter",
-          "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryType\">VkQueryType</a> value"
+          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02464",
+          "text": " <code>hitShaderBindingStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code>"
         },
         {
-          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-parameter",
-          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle"
+          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02465",
+          "text": " <code>callableShaderBindingStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code>"
         },
         {
-          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-recording",
-          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
+          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingStride-02466",
+          "text": " <code>missShaderBindingStride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxShaderGroupStride</code>"
         },
         {
-          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-cmdpool",
-          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
+          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02467",
+          "text": " <code>hitShaderBindingStride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxShaderGroupStride</code>"
         },
         {
-          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-renderpass",
-          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02468",
+          "text": " <code>callableShaderBindingStride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxShaderGroupStride</code>"
         },
         {
-          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructureCount-arraylength",
-          "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+          "vuid": "VUID-vkCmdTraceRaysNV-width-02469",
+          "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]"
         },
         {
-          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commonparent",
-          "text": " Each of <code>commandBuffer</code>, <code>queryPool</code>, and the elements of <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
+          "vuid": "VUID-vkCmdTraceRaysNV-height-02470",
+          "text": " <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]"
+        },
+        {
+          "vuid": "VUID-vkCmdTraceRaysNV-depth-02471",
+          "text": " <code>depth</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]"
         }
       ],
-      "core": [
+      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
         {
-          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructures-03431",
-          "text": " All acceleration structures in <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been built with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR</code> if <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code>"
-        },
+          "vuid": "VUID-vkCmdTraceRaysNV-None-02692",
+          "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view&#8217;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>"
+        }
+      ],
+      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
         {
-          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryType-03432",
-          "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code> or <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>"
+          "vuid": "VUID-vkCmdTraceRaysNV-None-02693",
+          "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> 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>"
         }
-      ]
-    },
-    "vkCmdCopyAccelerationStructureNV": {
-      "core": [
+      ],
+      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
         {
-          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-mode-03410",
-          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR</code> or <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR</code>"
+          "vuid": "VUID-vkCmdTraceRaysNV-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 <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
         },
         {
-          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-src-03411",
-          "text": " If <code>mode</code> is <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR</code>, <code>src</code> <strong class=\"purple\">must</strong> have been built with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR</code>"
-        },
+          "vuid": "VUID-vkCmdTraceRaysNV-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 <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
+        }
+      ],
+      "(VK_NV_corner_sampled_image)": [
         {
-          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-buffer-03718",
-          "text": " The <code>buffer</code> used to create <code>src</code> <strong class=\"purple\">must</strong> be bound to device memory"
-        },
+          "vuid": "VUID-vkCmdTraceRaysNV-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>"
+        }
+      ],
+      "(VK_VERSION_1_1)": [
         {
-          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-buffer-03719",
-          "text": " The <code>buffer</code> used to create <code>dst</code> <strong class=\"purple\">must</strong> be bound to device memory"
+          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02707",
+          "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource"
         }
       ],
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)+(VK_NV_ray_tracing)": [
+      "(VK_EXT_shader_image_atomic_int64)": [
         {
-          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-parameter",
-          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
+          "vuid": "VUID-vkCmdTraceRaysNV-SampledType-04470",
+          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel 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."
         },
         {
-          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-dst-parameter",
-          "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle"
+          "vuid": "VUID-vkCmdTraceRaysNV-SampledType-04471",
+          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel 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."
         },
         {
-          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-src-parameter",
-          "text": " <code>src</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle"
+          "vuid": "VUID-vkCmdTraceRaysNV-SampledType-04472",
+          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel 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."
         },
         {
-          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-mode-parameter",
-          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyAccelerationStructureModeKHR\">VkCopyAccelerationStructureModeKHR</a> value"
+          "vuid": "VUID-vkCmdTraceRaysNV-SampledType-04473",
+          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel 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."
         },
         {
-          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-recording",
-          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
+          "vuid": "VUID-vkCmdTraceRaysNV-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."
         },
         {
-          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-cmdpool",
-          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
-        },
+          "vuid": "VUID-vkCmdTraceRaysNV-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."
+        }
+      ],
+      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)": [
         {
-          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-renderpass",
-          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-parameter",
+          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commonparent",
-          "text": " Each of <code>commandBuffer</code>, <code>dst</code>, and <code>src</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
-        }
-      ]
-    },
-    "vkCmdCopyAccelerationStructureKHR": {
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)+(VK_KHR_acceleration_structure)": [
-        {
-          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-buffer-03737",
-          "text": " The <code>buffer</code> used to create <code>pInfo</code>-&gt;<code>src</code> <strong class=\"purple\">must</strong> be bound to device memory"
+          "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-parameter",
+          "text": " <code>raygenShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-buffer-03738",
-          "text": " The <code>buffer</code> used to create <code>pInfo</code>-&gt;<code>dst</code> <strong class=\"purple\">must</strong> be bound to device memory"
+          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-parameter",
+          "text": " If <code>missShaderBindingTableBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>missShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-parameter",
-          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
+          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingTableBuffer-parameter",
+          "text": " If <code>hitShaderBindingTableBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>hitShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-pInfo-parameter",
-          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyAccelerationStructureInfoKHR\">VkCopyAccelerationStructureInfoKHR</a> structure"
+          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingTableBuffer-parameter",
+          "text": " If <code>callableShaderBindingTableBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>callableShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
         },
         {
-          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-recording",
+          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-recording",
           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
         },
         {
-          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-cmdpool",
+          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-cmdpool",
           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
         },
         {
-          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-renderpass",
+          "vuid": "VUID-vkCmdTraceRaysNV-renderpass",
           "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+        },
+        {
+          "vuid": "VUID-vkCmdTraceRaysNV-commonparent",
+          "text": " Each of <code>callableShaderBindingTableBuffer</code>, <code>commandBuffer</code>, <code>hitShaderBindingTableBuffer</code>, <code>missShaderBindingTableBuffer</code>, and <code>raygenShaderBindingTableBuffer</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>"
         }
       ]
     },
-    "VkCopyAccelerationStructureInfoKHR": {
+    "vkCmdTraceRaysKHR": {
       "core": [
         {
-          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-mode-03410",
-          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR</code> or <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR</code>"
+          "vuid": "VUID-vkCmdTraceRaysKHR-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> 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&#8217;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>"
         },
         {
-          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-src-03411",
-          "text": " If <code>mode</code> is <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR</code>, <code>src</code> <strong class=\"purple\">must</strong> have been built with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR</code>"
+          "vuid": "VUID-vkCmdTraceRaysKHR-None-02691",
+          "text": " If a <code>VkImageView</code> is accessed using atomic operations as a result of this command, then the image view&#8217;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>"
         },
         {
-          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-buffer-03718",
-          "text": " The <code>buffer</code> used to create <code>src</code> <strong class=\"purple\">must</strong> be bound to device memory"
+          "vuid": "VUID-vkCmdTraceRaysKHR-None-02697",
+          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
         },
         {
-          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-buffer-03719",
-          "text": " The <code>buffer</code> used to create <code>dst</code> <strong class=\"purple\">must</strong> be bound to device memory"
-        }
-      ],
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)+(VK_KHR_acceleration_structure)": [
+          "vuid": "VUID-vkCmdTraceRaysKHR-None-02698",
+          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
+        },
         {
-          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR</code>"
+          "vuid": "VUID-vkCmdTraceRaysKHR-None-02699",
+          "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command"
         },
         {
-          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-vkCmdTraceRaysKHR-None-02700",
+          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
         },
         {
-          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-src-parameter",
-          "text": " <code>src</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
+          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-02701",
+          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
         },
         {
-          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-dst-parameter",
-          "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
+          "vuid": "VUID-vkCmdTraceRaysKHR-None-02859",
+          "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound"
         },
         {
-          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-mode-parameter",
-          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyAccelerationStructureModeKHR\">VkCopyAccelerationStructureModeKHR</a> value"
+          "vuid": "VUID-vkCmdTraceRaysKHR-None-02702",
+          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> 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"
         },
         {
-          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-commonparent",
-          "text": " Both of <code>dst</code>, and <code>src</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>"
-        }
-      ]
-    },
-    "vkCmdCopyAccelerationStructureToMemoryKHR": {
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)": [
+          "vuid": "VUID-vkCmdTraceRaysKHR-None-02703",
+          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> 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"
+        },
         {
-          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-03739",
-          "text": " <code>pInfo</code>-&gt;<code>dst.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address for a buffer bound to device memory."
+          "vuid": "VUID-vkCmdTraceRaysKHR-None-02704",
+          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> 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"
         },
         {
-          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-03740",
-          "text": " <code>pInfo</code>-&gt;<code>dst.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to <code>256</code> bytes"
+          "vuid": "VUID-vkCmdTraceRaysKHR-None-02705",
+          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound 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"
         },
         {
-          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-03741",
-          "text": " If the buffer pointed to by <code>pInfo</code>-&gt;<code>dst.deviceAddress</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object"
+          "vuid": "VUID-vkCmdTraceRaysKHR-None-02706",
+          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound 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"
         },
         {
-          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-None-03559",
-          "text": " The <code>buffer</code> used to create <code>pInfo</code>-&gt;<code>src</code> <strong class=\"purple\">must</strong> be bound to device memory"
+          "vuid": "VUID-vkCmdTraceRaysKHR-None-04115",
+          "text": " If a <a href=\"#VkImageView\">VkImageView</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 image view&#8217;s format."
         },
         {
-          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-parameter",
-          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
+          "vuid": "VUID-vkCmdTraceRaysKHR-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 image view&#8217;s format."
         },
         {
-          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-parameter",
-          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyAccelerationStructureToMemoryInfoKHR\">VkCopyAccelerationStructureToMemoryInfoKHR</a> structure"
+          "vuid": "VUID-vkCmdTraceRaysKHR-None-03429",
+          "text": " Any shader group handle referenced by this call <strong class=\"purple\">must</strong> have been queried from the currently bound ray tracing shader pipeline"
         },
         {
-          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-recording",
-          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
+          "vuid": "VUID-vkCmdTraceRaysKHR-maxPipelineRayRecursionDepth-03679",
+          "text": " This command <strong class=\"purple\">must</strong> not cause a shader call instruction to be executed from a shader invocation with a <a href=\"#ray-tracing-recursion-depth\">recursion depth</a> greater than the value of <code>maxPipelineRayRecursionDepth</code> used to create the bound ray tracing pipeline"
         },
         {
-          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-cmdpool",
-          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
+          "vuid": "VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-03680",
+          "text": " If the buffer from which <code>pRayGenShaderBindingTable-&gt;deviceAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
         },
         {
-          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-renderpass",
-          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
-        }
-      ]
-    },
-    "VkCopyAccelerationStructureToMemoryInfoKHR": {
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)": [
+          "vuid": "VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-03681",
+          "text": " The buffer from which the <code>pRayGenShaderBindingTable-&gt;deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR</code> usage flag"
+        },
         {
-          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-dst-03561",
-          "text": " The memory pointed to by <code>dst</code> <strong class=\"purple\">must</strong> be at least as large as the serialization size of <code>src</code>, as reported by <a href=\"#vkWriteAccelerationStructuresPropertiesKHR\">vkWriteAccelerationStructuresPropertiesKHR</a> or <a href=\"#vkCmdWriteAccelerationStructuresPropertiesKHR\">vkCmdWriteAccelerationStructuresPropertiesKHR</a> with a query type of <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>"
+          "vuid": "VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-03682",
+          "text": " <code>pRayGenShaderBindingTable-&gt;deviceAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>"
         },
         {
-          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-mode-03412",
-          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR</code>"
+          "vuid": "VUID-vkCmdTraceRaysKHR-size-04023",
+          "text": " The <code>size</code> member of <code>pRayGenShaderBindingTable</code> <strong class=\"purple\">must</strong> be equal to its <code>stride</code> member"
         },
         {
-          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR</code>"
+          "vuid": "VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-03683",
+          "text": " If the buffer from which <code>pMissShaderBindingTable-&gt;deviceAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
         },
         {
-          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-03684",
+          "text": " The buffer from which the <code>pMissShaderBindingTable-&gt;deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR</code> usage flag"
         },
         {
-          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-src-parameter",
-          "text": " <code>src</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
+          "vuid": "VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-03685",
+          "text": " <code>pMissShaderBindingTable-&gt;deviceAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>"
         },
         {
-          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-dst-parameter",
-          "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressKHR\">VkDeviceOrHostAddressKHR</a> union"
+          "vuid": "VUID-vkCmdTraceRaysKHR-stride-03686",
+          "text": " The <code>stride</code> member of <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupHandleAlignment</code>"
         },
         {
-          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-mode-parameter",
-          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyAccelerationStructureModeKHR\">VkCopyAccelerationStructureModeKHR</a> value"
-        }
-      ]
-    },
-    "vkCmdCopyMemoryToAccelerationStructureKHR": {
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)": [
+          "vuid": "VUID-vkCmdTraceRaysKHR-stride-04029",
+          "text": " The <code>stride</code> member of <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>maxShaderGroupStride</code>"
+        },
         {
-          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03742",
-          "text": " <code>pInfo</code>-&gt;<code>src.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address for a buffer bound to device memory."
+          "vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03687",
+          "text": " If the buffer from which <code>pHitShaderBindingTable-&gt;deviceAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
         },
         {
-          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03743",
-          "text": " <code>pInfo</code>-&gt;<code>src.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to <code>256</code> bytes"
+          "vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03688",
+          "text": " The buffer from which the <code>pHitShaderBindingTable-&gt;deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR</code> usage flag"
         },
         {
-          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03744",
-          "text": " If the buffer pointed to by <code>pInfo</code>-&gt;<code>src.deviceAddress</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object"
+          "vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03689",
+          "text": " <code>pHitShaderBindingTable-&gt;deviceAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>"
         },
         {
-          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-buffer-03745",
-          "text": " The <code>buffer</code> used to create <code>pInfo</code>-&gt;<code>dst</code> <strong class=\"purple\">must</strong> be bound to device memory"
+          "vuid": "VUID-vkCmdTraceRaysKHR-stride-03690",
+          "text": " The <code>stride</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupHandleAlignment</code>"
         },
         {
-          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-parameter",
-          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
+          "vuid": "VUID-vkCmdTraceRaysKHR-stride-04035",
+          "text": " The <code>stride</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>maxShaderGroupStride</code>"
         },
         {
-          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-parameter",
-          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyMemoryToAccelerationStructureInfoKHR\">VkCopyMemoryToAccelerationStructureInfoKHR</a> structure"
+          "vuid": "VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-03691",
+          "text": " If the buffer from which <code>pCallableShaderBindingTable-&gt;deviceAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
         },
         {
-          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-recording",
-          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
+          "vuid": "VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-03692",
+          "text": " The buffer from which the <code>pCallableShaderBindingTable-&gt;deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR</code> usage flag"
         },
         {
-          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-cmdpool",
-          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
+          "vuid": "VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-03693",
+          "text": " <code>pCallableShaderBindingTable-&gt;deviceAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>"
         },
         {
-          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-renderpass",
-          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
-        }
-      ]
-    },
-    "VkCopyMemoryToAccelerationStructureInfoKHR": {
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)": [
+          "vuid": "VUID-vkCmdTraceRaysKHR-stride-03694",
+          "text": " The <code>stride</code> member of <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupHandleAlignment</code>"
+        },
         {
-          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-mode-03413",
-          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR</code>"
+          "vuid": "VUID-vkCmdTraceRaysKHR-stride-04041",
+          "text": " The <code>stride</code> member of <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>maxShaderGroupStride</code>"
         },
         {
-          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-pInfo-03414",
-          "text": " The data in <code>src</code> <strong class=\"purple\">must</strong> have a format compatible with the destination physical device as returned by <a href=\"#vkGetDeviceAccelerationStructureCompatibilityKHR\">vkGetDeviceAccelerationStructureCompatibilityKHR</a>"
+          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03695",
+          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>, the <code>deviceAddress</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> not be zero"
         },
         {
-          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-dst-03746",
-          "text": " <code>dst</code> <strong class=\"purple\">must</strong> have been created with a <code>size</code> greater than or equal to that used to serialize the data in <code>src</code>"
+          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03696",
+          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>, the <code>deviceAddress</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> not be zero"
         },
         {
-          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR</code>"
+          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03697",
+          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>, the <code>deviceAddress</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> not be zero"
         },
         {
-          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03511",
+          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR</code>, the shader group handle identified by <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> contain a valid miss shader"
         },
         {
-          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-src-parameter",
-          "text": " <code>src</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> union"
+          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03512",
+          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>, entries in <code>pHitShaderBindingTable</code> accessed as a result of this command in order to execute an any-hit shader <strong class=\"purple\">must</strong> not be set to zero"
         },
         {
-          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-dst-parameter",
-          "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
+          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03513",
+          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>, entries in <code>pHitShaderBindingTable</code> accessed as a result of this command in order to execute a closest hit shader <strong class=\"purple\">must</strong> not be set to zero"
         },
         {
-          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-mode-parameter",
-          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyAccelerationStructureModeKHR\">VkCopyAccelerationStructureModeKHR</a> value"
-        }
-      ]
-    },
-    "vkGetDeviceAccelerationStructureCompatibilityKHR": {
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)": [
+          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03514",
+          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>, entries in <code>pHitShaderBindingTable</code> accessed as a result of this command in order to execute an intersection shader <strong class=\"purple\">must</strong> not be set to zero"
+        },
         {
-          "vuid": "VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-rayTracingPipeline-03661",
-          "text": " The <a href=\"#features-rayTracingPipeline\"><code>rayTracingPipeline</code></a> or <a href=\"#features-rayQuery\"><code>rayQuery</code></a> feature <strong class=\"purple\">must</strong> be enabled"
+          "vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03720",
+          "text": " Any hit group entries in <code>pHitShaderBindingTable</code> accessed by this call from a geometry with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code> <strong class=\"purple\">must</strong> have been created with <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR</code>"
         },
         {
-          "vuid": "VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03721",
+          "text": " Any hit group entries in <code>pHitShaderBindingTable</code> accessed by this call from a geometry with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_AABBS_KHR</code> <strong class=\"purple\">must</strong> have been created with <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR</code>"
         },
         {
-          "vuid": "VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-pVersionInfo-parameter",
-          "text": " <code>pVersionInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureVersionInfoKHR\">VkAccelerationStructureVersionInfoKHR</a> structure"
+          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-04625",
+          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
         },
         {
-          "vuid": "VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-pCompatibility-parameter",
-          "text": " <code>pCompatibility</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkAccelerationStructureCompatibilityKHR\">VkAccelerationStructureCompatibilityKHR</a> value"
-        }
-      ]
-    },
-    "VkAccelerationStructureVersionInfoKHR": {
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)": [
+          "vuid": "VUID-vkCmdTraceRaysKHR-width-03626",
+          "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\"><code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0] {times} <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupSize</code>[0]</span>"
+        },
         {
-          "vuid": "VUID-VkAccelerationStructureVersionInfoKHR-sType-sType",
-          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR</code>"
+          "vuid": "VUID-vkCmdTraceRaysKHR-height-03627",
+          "text": " <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\"><code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1] {times} <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupSize</code>[1]</span>"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureVersionInfoKHR-pNext-pNext",
-          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
+          "vuid": "VUID-vkCmdTraceRaysKHR-depth-03628",
+          "text": " <code>depth</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\"><code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2] {times} <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupSize</code>[2]</span>"
         },
         {
-          "vuid": "VUID-VkAccelerationStructureVersionInfoKHR-pVersionData-parameter",
-          "text": " <code>pVersionData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>2</code>*<code>VK_UUID_SIZE</code> <code>uint8_t</code> values"
+          "vuid": "VUID-vkCmdTraceRaysKHR-width-03629",
+          "text": " <span class=\"eq\"><code>width</code> {times} <code>height</code> {times} <code>depth</code></span> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>maxRayDispatchInvocationCount</code>"
         }
-      ]
-    },
-    "vkBuildAccelerationStructuresKHR": {
-      "core": [
+      ],
+      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-mode-04628",
-          "text": " The <code>mode</code> member of each element of <code>pInfos</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuildAccelerationStructureModeKHR\">VkBuildAccelerationStructureModeKHR</a> value"
-        },
+          "vuid": "VUID-vkCmdTraceRaysKHR-None-02692",
+          "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view&#8217;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>"
+        }
+      ],
+      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-srcAccelerationStructure-04629",
-          "text": " If the <code>srcAccelerationStructure</code> member of any element of <code>pInfos</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
+          "vuid": "VUID-vkCmdTraceRaysKHR-None-02693",
+          "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> 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>"
+        }
+      ],
+      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
+        {
+          "vuid": "VUID-vkCmdTraceRaysKHR-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 <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-04630",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
-        },
+          "vuid": "VUID-vkCmdTraceRaysKHR-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 <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
+        }
+      ],
+      "(VK_NV_corner_sampled_image)": [
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03403",
-          "text": " The <code>srcAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> not be the same acceleration structure as the <code>dstAccelerationStructure</code> member of any other element of <code>pInfos</code>"
-        },
+          "vuid": "VUID-vkCmdTraceRaysKHR-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>"
+        }
+      ],
+      "(VK_VERSION_1_1)": [
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03698",
-          "text": " The <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> not be the same acceleration structure as the <code>dstAccelerationStructure</code> member of any other element of <code>pInfos</code>"
-        },
+          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-02707",
+          "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource"
+        }
+      ],
+      "(VK_EXT_shader_image_atomic_int64)": [
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03800",
-          "text": " The <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
+          "vuid": "VUID-vkCmdTraceRaysKHR-SampledType-04470",
+          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel 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."
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03699",
-          "text": " For each element of <code>pInfos</code>, if its <code>type</code> member is <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code>, its <code>dstAccelerationStructure</code> member <strong class=\"purple\">must</strong> have been created with a value of <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>type</code> equal to either <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code> or <code>VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR</code>"
+          "vuid": "VUID-vkCmdTraceRaysKHR-SampledType-04471",
+          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel 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."
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03700",
-          "text": " For each element of <code>pInfos</code>, if its <code>type</code> member is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code>, its <code>dstAccelerationStructure</code> member <strong class=\"purple\">must</strong> have been created with a value of <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>type</code> equal to either <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code> or <code>VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR</code>"
+          "vuid": "VUID-vkCmdTraceRaysKHR-SampledType-04472",
+          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel 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."
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03663",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, <a href=\"#acceleration-structure-inactive-prims\">inactive primitives</a> in its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> not be made active"
+          "vuid": "VUID-vkCmdTraceRaysKHR-SampledType-04473",
+          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel 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."
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03664",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, active primitives in its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> not be made <a href=\"#acceleration-structure-inactive-prims\">inactive</a>"
+          "vuid": "VUID-vkCmdTraceRaysKHR-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."
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-None-03407",
-          "text": " The <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> not be referenced by the <code>geometry.instances.data</code> member of any element of <code>pGeometries</code> or <code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code> in any other element of <code>pInfos</code>"
-        },
+          "vuid": "VUID-vkCmdTraceRaysKHR-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."
+        }
+      ],
+      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)": [
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03701",
-          "text": " The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>srcAccelerationStructure</code> member of any other element of <code>pInfos</code> with a <code>mode</code> equal to <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, which is accessed by this command"
+          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-parameter",
+          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03702",
-          "text": " The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>dstAccelerationStructure</code> member of any other element of <code>pInfos</code>, which is accessed by this command"
+          "vuid": "VUID-vkCmdTraceRaysKHR-pRaygenShaderBindingTable-parameter",
+          "text": " <code>pRaygenShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedDeviceAddressRegionKHR\">VkStridedDeviceAddressRegionKHR</a> structure"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03703",
-          "text": " The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>scratchData</code> member of any element of <code>pInfos</code> (including the same element), which is accessed by this command"
+          "vuid": "VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-parameter",
+          "text": " <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedDeviceAddressRegionKHR\">VkStridedDeviceAddressRegionKHR</a> structure"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-scratchData-03704",
-          "text": " The range of memory backing the <code>scratchData</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>scratchData</code> member of any other element of <code>pInfos</code>, which is accessed by this command"
+          "vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-parameter",
+          "text": " <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedDeviceAddressRegionKHR\">VkStridedDeviceAddressRegionKHR</a> structure"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-scratchData-03705",
-          "text": " The range of memory backing the <code>scratchData</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>srcAccelerationStructure</code> member of any element of <code>pInfos</code> with a <code>mode</code> equal to <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code> (including the same element), which is accessed by this command"
+          "vuid": "VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-parameter",
+          "text": " <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedDeviceAddressRegionKHR\">VkStridedDeviceAddressRegionKHR</a> structure"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03706",
-          "text": " The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing any acceleration structure referenced by the <code>geometry.instances.data</code> member of any element of <code>pGeometries</code> or <code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code> in any other element of <code>pInfos</code>, which is accessed by this command"
+          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-recording",
+          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03666",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
+          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-cmdpool",
+          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03667",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> have been built before with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR</code> set in <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a>::<code>flags</code>"
-        },
+          "vuid": "VUID-vkCmdTraceRaysKHR-renderpass",
+          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+        }
+      ]
+    },
+    "VkStridedDeviceAddressRegionKHR": {
+      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)": [
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03668",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>srcAccelerationStructure</code> and <code>dstAccelerationStructure</code> members <strong class=\"purple\">must</strong> either be the same <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a>, or not have any <a href=\"#resources-memory-aliasing\">memory aliasing</a>"
+          "vuid": "VUID-VkStridedDeviceAddressRegionKHR-size-04631",
+          "text": " If <code>size</code> is not zero, all addresses between <code>deviceAddress</code> and <span class=\"eq\"><code>deviceAddress</code> &#43; <code>size</code> - 1</span> <strong class=\"purple\">must</strong> be in the buffer device address range of the same buffer"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03758",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>geometryCount</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
-        },
+          "vuid": "VUID-VkStridedDeviceAddressRegionKHR-size-04632",
+          "text": " If <code>size</code> is not zero, <code>stride</code> <strong class=\"purple\">must</strong> be less than the size of the buffer from which <code>deviceAddress</code> was queried"
+        }
+      ]
+    },
+    "vkCmdTraceRaysIndirectKHR": {
+      "core": [
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03759",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>flags</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-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> 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&#8217;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>"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03760",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>type</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02691",
+          "text": " If a <code>VkImageView</code> is accessed using atomic operations as a result of this command, then the image view&#8217;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>"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03761",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, its <code>geometryType</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02697",
+          "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03762",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, its <code>flags</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02698",
+          "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03763",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, its <code>geometry.triangles.vertexFormat</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02699",
+          "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03764",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, its <code>geometry.triangles.maxVertex</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02700",
+          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03765",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, its <code>geometry.triangles.indexType</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-02701",
+          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03766",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if its <code>geometry.triangles.transformData</code> member was NULL when <code>srcAccelerationStructure</code> was last built, then it must be NULL."
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02859",
+          "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03767",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if its <code>geometry.triangles.transformData</code> member was not NULL when <code>srcAccelerationStructure</code> was last built, then it may not be NULL."
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02702",
+          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> 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"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03768",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, and <code>geometry.triangles.indexType</code> is not <code>VK_INDEX_TYPE_NONE_KHR</code>, then the value of each index referenced index must be the same as the corresponding index value when <code>srcAccelerationStructure</code> was last built."
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02703",
+          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> 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"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-primitiveCount-03769",
-          "text": " For each <code>VkAccelerationStructureBuildRangeInfoKHR</code> referenced by this command, its <code>primitiveCount</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02704",
+          "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> 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"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-firstVertex-03770",
-          "text": " For each <code>VkAccelerationStructureBuildRangeInfoKHR</code> referenced by this command, if the corresponding geometry uses indices, its <code>firstVertex</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built."
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02705",
+          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound 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"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03801",
-          "text": " For each element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, the corresponding {maxinstancecheck} <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>maxInstanceCount</code>"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02706",
+          "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound 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"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03675",
-          "text": " For each <code>pInfos</code>[i], <code>dstAccelerationStructure</code> <strong class=\"purple\">must</strong> have been created with a value of <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>size</code> greater than or equal to the memory size required by the build operation, as returned by <a href=\"#vkGetAccelerationStructureBuildSizesKHR\">vkGetAccelerationStructureBuildSizesKHR</a> with <span class=\"eq\"><code>pBuildInfo</code> = <code>pInfos</code>[i]</span> and with each element of the <code>pMaxPrimitiveCounts</code> array greater than or equal to the equivalent <code>ppBuildRangeInfos</code>[i][j].<code>primitiveCount</code> values for <code>j</code> in <span class=\"eq\">[0,<code>pInfos</code>[i].<code>geometryCount</code>)</span>"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-04115",
+          "text": " If a <a href=\"#VkImageView\">VkImageView</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 image view&#8217;s format."
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-ppBuildRangeInfos-03676",
-          "text": " Each element of <code>ppBuildRangeInfos</code>[i] <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pInfos</code>[i].<code>geometryCount</code> <code>VkAccelerationStructureBuildRangeInfoKHR</code> structures"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-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 image view&#8217;s format."
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-deferredOperation-03677",
-          "text": " If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> object"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-03429",
+          "text": " Any shader group handle referenced by this call <strong class=\"purple\">must</strong> have been queried from the currently bound ray tracing shader pipeline"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-deferredOperation-03678",
-          "text": " Any previous deferred operation that was associated with <code>deferredOperation</code> <strong class=\"purple\">must</strong> be complete"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-maxPipelineRayRecursionDepth-03679",
+          "text": " This command <strong class=\"purple\">must</strong> not cause a shader call instruction to be executed from a shader invocation with a <a href=\"#ray-tracing-recursion-depth\">recursion depth</a> greater than the value of <code>maxPipelineRayRecursionDepth</code> used to create the bound ray tracing pipeline"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03722",
-          "text": " For each element of <code>pInfos</code>, the <code>buffer</code> used to create its <code>dstAccelerationStructure</code> member <strong class=\"purple\">must</strong> be bound to host-visible device memory"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-03680",
+          "text": " If the buffer from which <code>pRayGenShaderBindingTable-&gt;deviceAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03723",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code> the <code>buffer</code> used to create its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> be bound to host-visible device memory"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-03681",
+          "text": " The buffer from which the <code>pRayGenShaderBindingTable-&gt;deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR</code> usage flag"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03724",
-          "text": " For each element of <code>pInfos</code>, the <code>buffer</code> used to create each acceleration structure referenced by the <code>geometry.instances.data</code> member of any element of <code>pGeometries</code> or <code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code> <strong class=\"purple\">must</strong> be bound to host-visible device memory"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-03682",
+          "text": " <code>pRayGenShaderBindingTable-&gt;deviceAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-accelerationStructureHostCommands-03581",
-          "text": " The <a href=\"#features-accelerationStructureHostCommands\"><code>VkPhysicalDeviceAccelerationStructureFeaturesKHR</code>::<code>accelerationStructureHostCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-size-04023",
+          "text": " The <code>size</code> member of <code>pRayGenShaderBindingTable</code> <strong class=\"purple\">must</strong> be equal to its <code>stride</code> member"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03725",
-          "text": " If <code>pInfos</code>[i].<code>mode</code> is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR</code>, all addresses between <code>pInfos</code>[i].<code>scratchData.hostAddress</code> and <code>pInfos</code>[i].<code>scratchData.hostAddress</code> + N - 1 <strong class=\"purple\">must</strong> be valid host memory, where N is given by the <code>buildScratchSize</code> member of the <a href=\"#VkAccelerationStructureBuildSizesInfoKHR\">VkAccelerationStructureBuildSizesInfoKHR</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureBuildSizesKHR\">vkGetAccelerationStructureBuildSizesKHR</a> with an identical <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structure and primitive count"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-03683",
+          "text": " If the buffer from which <code>pMissShaderBindingTable-&gt;deviceAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03726",
-          "text": " If <code>pInfos</code>[i].<code>mode</code> is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, all addresses between <code>pInfos</code>[i].<code>scratchData.hostAddress</code> and <code>pInfos</code>[i].<code>scratchData.hostAddress</code> + N - 1 <strong class=\"purple\">must</strong> be valid host memory, where N is given by the <code>updateScratchSize</code> member of the <a href=\"#VkAccelerationStructureBuildSizesInfoKHR\">VkAccelerationStructureBuildSizesInfoKHR</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureBuildSizesKHR\">vkGetAccelerationStructureBuildSizesKHR</a> with an identical <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structure and primitive count"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-03684",
+          "text": " The buffer from which the <code>pMissShaderBindingTable-&gt;deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR</code> usage flag"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03771",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, <code>geometry.triangles.vertexData.hostAddress</code> <strong class=\"purple\">must</strong> be a valid host address"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-03685",
+          "text": " <code>pMissShaderBindingTable-&gt;deviceAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03772",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.indexType</code> is not <code>VK_INDEX_TYPE_NONE_KHR</code>, <code>geometry.triangles.indexData.hostAddress</code> <strong class=\"purple\">must</strong> be a valid host address"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-03686",
+          "text": " The <code>stride</code> member of <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupHandleAlignment</code>"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03773",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.transformData.hostAddress</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be a valid host address"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-04029",
+          "text": " The <code>stride</code> member of <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>maxShaderGroupStride</code>"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03774",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, <code>geometry.aabbs.data.hostAddress</code> <strong class=\"purple\">must</strong> be a valid host address"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03687",
+          "text": " If the buffer from which <code>pHitShaderBindingTable-&gt;deviceAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03778",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, <code>geometry.instances.data.hostAddress</code> <strong class=\"purple\">must</strong> be a valid host address"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03688",
+          "text": " The buffer from which the <code>pHitShaderBindingTable-&gt;deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR</code> usage flag"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03779",
-          "text": " For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, each <a href=\"#VkAccelerationStructureInstanceKHR\">VkAccelerationStructureInstanceKHR</a>::<code>accelerationStructureReference</code> value in <code>geometry.instances.data.hostAddress</code> must be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> object"
-        }
-      ],
-      "(VK_KHR_device_group,VK_VERSION_1_1)": [
-        {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03775",
-          "text": " For each element of <code>pInfos</code>, the <code>buffer</code> used to create its <code>dstAccelerationStructure</code> member <strong class=\"purple\">must</strong> be bound to memory that was not allocated with multiple instances"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03689",
+          "text": " <code>pHitShaderBindingTable-&gt;deviceAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03776",
-          "text": " For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code> the <code>buffer</code> used to create its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> be bound to memory that was not allocated with multiple instances"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-03690",
+          "text": " The <code>stride</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupHandleAlignment</code>"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03777",
-          "text": " For each element of <code>pInfos</code>, the <code>buffer</code> used to create each acceleration structure referenced by the <code>geometry.instances.data</code> member of any element of <code>pGeometries</code> or <code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code> <strong class=\"purple\">must</strong> be bound to memory that was not allocated with multiple instances"
-        }
-      ],
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)": [
-        {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-04035",
+          "text": " The <code>stride</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>maxShaderGroupStride</code>"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-deferredOperation-parameter",
-          "text": " If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>deferredOperation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-03691",
+          "text": " If the buffer from which <code>pCallableShaderBindingTable-&gt;deviceAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-parameter",
-          "text": " <code>pInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> valid <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structures"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-03692",
+          "text": " The buffer from which the <code>pCallableShaderBindingTable-&gt;deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR</code> usage flag"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-ppBuildRangeInfos-parameter",
-          "text": " <code>ppBuildRangeInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> <a href=\"#VkAccelerationStructureBuildRangeInfoKHR\">VkAccelerationStructureBuildRangeInfoKHR</a> structures"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-03693",
+          "text": " <code>pCallableShaderBindingTable-&gt;deviceAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-infoCount-arraylength",
-          "text": " <code>infoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-03694",
+          "text": " The <code>stride</code> member of <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupHandleAlignment</code>"
         },
         {
-          "vuid": "VUID-vkBuildAccelerationStructuresKHR-deferredOperation-parent",
-          "text": " If <code>deferredOperation</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
-        }
-      ]
-    },
-    "vkCopyAccelerationStructureKHR": {
-      "core": [
-        {
-          "vuid": "VUID-vkCopyAccelerationStructureKHR-deferredOperation-03677",
-          "text": " If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> object"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-04041",
+          "text": " The <code>stride</code> member of <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>maxShaderGroupStride</code>"
         },
         {
-          "vuid": "VUID-vkCopyAccelerationStructureKHR-deferredOperation-03678",
-          "text": " Any previous deferred operation that was associated with <code>deferredOperation</code> <strong class=\"purple\">must</strong> be complete"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03695",
+          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>, the <code>deviceAddress</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> not be zero"
         },
         {
-          "vuid": "VUID-vkCopyAccelerationStructureKHR-buffer-03727",
-          "text": " The <code>buffer</code> used to create <code>pInfo</code>-&gt;<code>src</code> <strong class=\"purple\">must</strong> be bound to host-visible device memory"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03696",
+          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>, the <code>deviceAddress</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> not be zero"
         },
         {
-          "vuid": "VUID-vkCopyAccelerationStructureKHR-buffer-03728",
-          "text": " The <code>buffer</code> used to create <code>pInfo</code>-&gt;<code>dst</code> <strong class=\"purple\">must</strong> be bound to host-visible device memory"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03697",
+          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>, the <code>deviceAddress</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> not be zero"
         },
         {
-          "vuid": "VUID-vkCopyAccelerationStructureKHR-accelerationStructureHostCommands-03582",
-          "text": " The <a href=\"#features-accelerationStructureHostCommands\"><code>VkPhysicalDeviceAccelerationStructureFeaturesKHR</code>::<code>accelerationStructureHostCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
-        }
-      ],
-      "(VK_KHR_device_group,VK_VERSION_1_1)": [
-        {
-          "vuid": "VUID-vkCopyAccelerationStructureKHR-buffer-03780",
-          "text": " The <code>buffer</code> used to create <code>pInfo</code>-&gt;<code>src</code> <strong class=\"purple\">must</strong> be bound to memory that was not allocated with multiple instances"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03511",
+          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR</code>, the shader group handle identified by <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> contain a valid miss shader"
         },
         {
-          "vuid": "VUID-vkCopyAccelerationStructureKHR-buffer-03781",
-          "text": " The <code>buffer</code> used to create <code>pInfo</code>-&gt;<code>dst</code> <strong class=\"purple\">must</strong> be bound to memory that was not allocated with multiple instances"
-        }
-      ],
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)": [
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03512",
+          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>, entries in <code>pHitShaderBindingTable</code> accessed as a result of this command in order to execute an any-hit shader <strong class=\"purple\">must</strong> not be set to zero"
+        },
         {
-          "vuid": "VUID-vkCopyAccelerationStructureKHR-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03513",
+          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>, entries in <code>pHitShaderBindingTable</code> accessed as a result of this command in order to execute a closest hit shader <strong class=\"purple\">must</strong> not be set to zero"
         },
         {
-          "vuid": "VUID-vkCopyAccelerationStructureKHR-deferredOperation-parameter",
-          "text": " If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>deferredOperation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03514",
+          "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>, entries in <code>pHitShaderBindingTable</code> accessed as a result of this command in order to execute an intersection shader <strong class=\"purple\">must</strong> not be set to zero"
         },
         {
-          "vuid": "VUID-vkCopyAccelerationStructureKHR-pInfo-parameter",
-          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyAccelerationStructureInfoKHR\">VkCopyAccelerationStructureInfoKHR</a> structure"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03720",
+          "text": " Any hit group entries in <code>pHitShaderBindingTable</code> accessed by this call from a geometry with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code> <strong class=\"purple\">must</strong> have been created with <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR</code>"
         },
         {
-          "vuid": "VUID-vkCopyAccelerationStructureKHR-deferredOperation-parent",
-          "text": " If <code>deferredOperation</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
-        }
-      ]
-    },
-    "vkCopyMemoryToAccelerationStructureKHR": {
-      "core": [
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03721",
+          "text": " Any hit group entries in <code>pHitShaderBindingTable</code> accessed by this call from a geometry with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_AABBS_KHR</code> <strong class=\"purple\">must</strong> have been created with <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR</code>"
+        },
         {
-          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-03677",
-          "text": " If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> object"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03632",
+          "text": " If the buffer from which <code>indirectDeviceAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
         },
         {
-          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-03678",
-          "text": " Any previous deferred operation that was associated with <code>deferredOperation</code> <strong class=\"purple\">must</strong> be complete"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03633",
+          "text": " The buffer from which <code>indirectDeviceAddress</code> was queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
         },
         {
-          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-03729",
-          "text": " <code>pInfo</code>-&gt;<code>src.hostAddress</code> <strong class=\"purple\">must</strong> be a valid host pointer"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03634",
+          "text": " <code>indirectDeviceAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
         },
         {
-          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-03750",
-          "text": " <code>pInfo</code>-&gt;<code>src.hostAddress</code> <strong class=\"purple\">must</strong> be aligned to 16 bytes"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-03635",
+          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
         },
         {
-          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-buffer-03730",
-          "text": " The <code>buffer</code> used to create <code>pInfo</code>-&gt;<code>dst</code> <strong class=\"purple\">must</strong> be bound to host-visible device memory"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03636",
+          "text": " All device addresses between <code>indirectDeviceAddress</code> and <span class=\"eq\"><code>indirectDeviceAddress</code> &#43; <code>sizeof</code>(<code>VkTraceRaysIndirectCommandKHR</code>) - 1</span> <strong class=\"purple\">must</strong> be in the buffer device address range of the same buffer"
         },
         {
-          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-accelerationStructureHostCommands-03583",
-          "text": " The <a href=\"#features-accelerationStructureHostCommands\"><code>VkPhysicalDeviceAccelerationStructureFeaturesKHR</code>::<code>accelerationStructureHostCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-rayTracingPipelineTraceRaysIndirect-03637",
+          "text": " the <a href=\"#features-rayTracingPipelineTraceRaysIndirect\"><code>VkPhysicalDeviceRayTracingPipelineFeaturesKHR</code>::<code>rayTracingPipelineTraceRaysIndirect</code></a> feature <strong class=\"purple\">must</strong> be enabled"
         }
       ],
-      "(VK_KHR_device_group,VK_VERSION_1_1)": [
+      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
         {
-          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-buffer-03782",
-          "text": " The <code>buffer</code> used to create <code>pInfo</code>-&gt;<code>dst</code> <strong class=\"purple\">must</strong> be bound to memory that was not allocated with multiple instances"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02692",
+          "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view&#8217;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>"
         }
       ],
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)": [
-        {
-          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
-        },
-        {
-          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-parameter",
-          "text": " If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>deferredOperation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle"
-        },
-        {
-          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-parameter",
-          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyMemoryToAccelerationStructureInfoKHR\">VkCopyMemoryToAccelerationStructureInfoKHR</a> structure"
-        },
+      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
         {
-          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-parent",
-          "text": " If <code>deferredOperation</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02693",
+          "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> 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>"
         }
-      ]
-    },
-    "vkCopyAccelerationStructureToMemoryKHR": {
-      "core": [
-        {
-          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-03677",
-          "text": " If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> object"
-        },
-        {
-          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-03678",
-          "text": " Any previous deferred operation that was associated with <code>deferredOperation</code> <strong class=\"purple\">must</strong> be complete"
-        },
-        {
-          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-buffer-03731",
-          "text": " The <code>buffer</code> used to create <code>pInfo</code>-&gt;<code>src</code> <strong class=\"purple\">must</strong> be bound to host-visible device memory"
-        },
+      ],
+      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
         {
-          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-03732",
-          "text": " <code>pInfo</code>-&gt;<code>dst.hostAddress</code> <strong class=\"purple\">must</strong> be a valid host pointer"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-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 <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
         },
         {
-          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-03751",
-          "text": " <code>pInfo</code>-&gt;<code>dst.hostAddress</code> <strong class=\"purple\">must</strong> be aligned to 16 bytes"
-        },
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-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 <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
+        }
+      ],
+      "(VK_NV_corner_sampled_image)": [
         {
-          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-accelerationStructureHostCommands-03584",
-          "text": " The <a href=\"#features-accelerationStructureHostCommands\"><code>VkPhysicalDeviceAccelerationStructureFeaturesKHR</code>::<code>accelerationStructureHostCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-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>"
         }
       ],
-      "(VK_KHR_device_group,VK_VERSION_1_1)": [
+      "(VK_VERSION_1_1)": [
         {
-          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-buffer-03783",
-          "text": " The <code>buffer</code> used to create <code>pInfo</code>-&gt;<code>src</code> <strong class=\"purple\">must</strong> be bound to memory that was not allocated with multiple instances"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-02707",
+          "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource"
         }
       ],
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)": [
+      "(VK_EXT_shader_image_atomic_int64)": [
         {
-          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-SampledType-04470",
+          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel 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."
         },
         {
-          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-parameter",
-          "text": " If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>deferredOperation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-SampledType-04471",
+          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel 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."
         },
         {
-          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-parameter",
-          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyAccelerationStructureToMemoryInfoKHR\">VkCopyAccelerationStructureToMemoryInfoKHR</a> structure"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-SampledType-04472",
+          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel 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."
         },
         {
-          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-parent",
-          "text": " If <code>deferredOperation</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
-        }
-      ]
-    },
-    "vkWriteAccelerationStructuresPropertiesKHR": {
-      "core": [
-        {
-          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructures-03431",
-          "text": " All acceleration structures in <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been built with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR</code> if <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code>"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-SampledType-04473",
+          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel 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."
         },
         {
-          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03432",
-          "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code> or <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-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."
         },
         {
-          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03448",
-          "text": " If <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code>, then <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of the size of <code>VkDeviceSize</code>"
-        },
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-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."
+        }
+      ],
+      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)": [
         {
-          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03449",
-          "text": " If <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code>, then <code>data</code> <strong class=\"purple\">must</strong> point to a <code>VkDeviceSize</code>"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-parameter",
+          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
         },
         {
-          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03450",
-          "text": " If <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>, then <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of the size of <code>VkDeviceSize</code>"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pRaygenShaderBindingTable-parameter",
+          "text": " <code>pRaygenShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedDeviceAddressRegionKHR\">VkStridedDeviceAddressRegionKHR</a> structure"
         },
         {
-          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03451",
-          "text": " If <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>, then <code>data</code> <strong class=\"purple\">must</strong> point to a <code>VkDeviceSize</code>"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-parameter",
+          "text": " <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedDeviceAddressRegionKHR\">VkStridedDeviceAddressRegionKHR</a> structure"
         },
         {
-          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-dataSize-03452",
-          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than or equal to <span class=\"eq\"><code>accelerationStructureCount</code>*<code>stride</code></span>"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-parameter",
+          "text": " <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedDeviceAddressRegionKHR\">VkStridedDeviceAddressRegionKHR</a> structure"
         },
         {
-          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-buffer-03733",
-          "text": " The <code>buffer</code> used to create each acceleration structure in <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be bound to host-visible device memory"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-parameter",
+          "text": " <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedDeviceAddressRegionKHR\">VkStridedDeviceAddressRegionKHR</a> structure"
         },
         {
-          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructureHostCommands-03585",
-          "text": " The <a href=\"#features-accelerationStructureHostCommands\"><code>VkPhysicalDeviceAccelerationStructureFeaturesKHR</code>::<code>accelerationStructureHostCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
-        }
-      ],
-      "(VK_KHR_device_group,VK_VERSION_1_1)": [
-        {
-          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-buffer-03784",
-          "text": " The <code>buffer</code> used to create each acceleration structure in <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be bound to memory that was not allocated with multiple instances"
-        }
-      ],
-      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)": [
-        {
-          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-device-parameter",
-          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-recording",
+          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
         },
         {
-          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parameter",
-          "text": " <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>accelerationStructureCount</code> valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handles"
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-cmdpool",
+          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
         },
         {
-          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-parameter",
-          "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryType\">VkQueryType</a> value"
-        },
+          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-renderpass",
+          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
+        }
+      ]
+    },
+    "VkTraceRaysIndirectCommandKHR": {
+      "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)": [
         {
-          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-pData-parameter",
-          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
+          "vuid": "VUID-VkTraceRaysIndirectCommandKHR-width-03638",
+          "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\"><code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0] {times} <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupSize</code>[0]</span>"
         },
         {
-          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructureCount-arraylength",
-          "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+          "vuid": "VUID-VkTraceRaysIndirectCommandKHR-height-03639",
+          "text": " <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\"><code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1] {times} <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupSize</code>[1]</span>"
         },
         {
-          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-dataSize-arraylength",
-          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
+          "vuid": "VUID-VkTraceRaysIndirectCommandKHR-depth-03640",
+          "text": " <code>depth</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\"><code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2] {times} <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupSize</code>[2]</span>"
         },
         {
-          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parent",
-          "text": " Each element of <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
+          "vuid": "VUID-VkTraceRaysIndirectCommandKHR-width-03641",
+          "text": " <span class=\"eq\"><code>width</code> {times} <code>height</code> {times} <code>depth</code></span> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>maxRayDispatchInvocationCount</code>"
         }
       ]
     },
           "text": " If the <strong>Storage Class</strong> is <strong>Workgroup</strong>, then it <strong class=\"purple\">must</strong> only be used in the task, mesh, or compute execution models"
         },
         {
-          "vuid": "VUID-StandaloneSpirv-OpAtomicStore-04646",
-          "text": " <strong>Acquire</strong> memory semantics <strong class=\"purple\">must</strong> not be used with <code>OpAtomicStore</code>"
+          "vuid": "VUID-StandaloneSpirv-OpAtomicStore-04730",
+          "text": " <code>OpAtomicStore</code> <strong class=\"purple\">must</strong> not use <strong>Acquire</strong>, <strong>AcquireRelease</strong>, or <strong>SequentiallyConsistent</strong> memory semantics"
         },
         {
-          "vuid": "VUID-StandaloneSpirv-OpAtomicLoad-04647",
-          "text": " <strong>Release</strong> memory semantics <strong class=\"purple\">must</strong> not be used with <code>OpAtomicLoad</code>"
+          "vuid": "VUID-StandaloneSpirv-OpAtomicLoad-04731",
+          "text": " <code>OpAtomicLoad</code> <strong class=\"purple\">must</strong> not use <strong>Release</strong>, <strong>AcquireRelease</strong>, or <strong>SequentiallyConsistent</strong> memory semantics"
         },
         {
-          "vuid": "VUID-StandaloneSpirv-OpAtomicStore-04648",
-          "text": " <strong>AcquireRelease</strong> memory semantics <strong class=\"purple\">must</strong> not be used with <code>OpAtomicStore</code> or <code>OpAtomicLoad</code>"
+          "vuid": "VUID-StandaloneSpirv-OpMemoryBarrier-04732",
+          "text": " <code>OpMemoryBarrier</code> <strong class=\"purple\">must</strong> use one of <strong>Acquire</strong>, <strong>Release</strong>, <strong>AcquireRelease</strong>, or <strong>SequentiallyConsistent</strong> memory semantics"
         },
         {
-          "vuid": "VUID-StandaloneSpirv-OpMemoryBarrier-04649",
-          "text": " <code>OpMemoryBarrier</code> <strong class=\"purple\">must</strong> use one of <strong>Acquire</strong>, <strong>Release</strong>, <strong>AcquireRelease</strong>, or <strong>SequentiallyConsistent</strong> memory semantics and <strong class=\"purple\">must</strong> include at least one storage class"
+          "vuid": "VUID-StandaloneSpirv-OpMemoryBarrier-04733",
+          "text": " <code>OpMemoryBarrier</code> <strong class=\"purple\">must</strong> include at least one storage class"
         },
         {
           "vuid": "VUID-StandaloneSpirv-OpControlBarrier-04650",
         },
         {
           "vuid": "VUID-StandaloneSpirv-OpImageQuerySizeLod-04659",
-          "text": " <code>OpImageQuerySizeLod</code>, and <code>OpImageQueryLevels</code> <strong class=\"purple\">must</strong> only consume an &#8220;Image&#8221; operand whose type has its &#8220;Sampled&#8221; operand set to 1"
+          "text": " <code>OpImageQuerySizeLod</code>, <code>OpImageQueryLod</code>, and <code>OpImageQueryLevels</code> <strong class=\"purple\">must</strong> only consume an &#8220;Image&#8221; operand whose type has its &#8220;Sampled&#8221; operand set to 1"
         },
         {
           "vuid": "VUID-StandaloneSpirv-SubpassData-04660",
         },
         {
           "vuid": "VUID-StandaloneSpirv-FPRoundingMode-04675",
-          "text": " Only the round-to-nearest-even and the round-towards-zero rounding modes <strong class=\"purple\">can</strong> be used for the <code>FPRoundingMode</code> decoration"
+          "text": " Rounding modes other than round-to-nearest-even and round-towards-zero <strong class=\"purple\">must</strong> not be used for the <code>FPRoundingMode</code> decoration."
         },
         {
           "vuid": "VUID-StandaloneSpirv-FPRoundingMode-04676",
-          "text": " The <code>FPRoundingMode</code> decoration <strong class=\"purple\">can</strong> only be used for the floating-point conversion instructions as described in the <a href=\"https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_16bit_storage.html\"><code>SPV_KHR_16bit_storage</code></a> SPIR-V extension"
+          "text": " The <code>FPRoundingMode</code> decoration <strong class=\"purple\">must</strong> only be used for the floating-point conversion instructions as described in the <a href=\"https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_16bit_storage.html\"><code>SPV_KHR_16bit_storage</code></a> SPIR-V extension"
         },
         {
           "vuid": "VUID-StandaloneSpirv-Invariant-04677",
         },
         {
           "vuid": "VUID-StandaloneSpirv-Function-04681",
-          "text": " A type <em>T</em> that is an array sized with a specialization constant <strong class=\"purple\">can</strong> be, or be contained in, the type of a Variable <em>V</em> only if: <em>T</em> is the (top-level) type of <em>V</em>; <em>V</em> is declared in the <code>Function</code>, <code>Private</code>, or <code>Workgroup</code> storage classes; <em>V</em> is an interface variable with an additional level of arrayness, <a href=\"#interfaces-iointerfaces-matching\">as described in interface matching</a>, in which case <em>T</em> is allowed to be the element type of the (top-level) type of <em>V</em>"
+          "text": " A type <em>T</em> that is an array sized with a specialization constant <strong class=\"purple\">must</strong> neither be, nor be contained in, the type <em>T2</em> of a variable <em>V</em>, unless:"
         },
         {
           "vuid": "VUID-StandaloneSpirv-OpControlBarrier-04682",
         },
         {
           "vuid": "VUID-StandaloneSpirv-None-04686",
-          "text": " The <em>Pointer</em> operand of all atomic instructions <strong class=\"purple\">must</strong> have a <strong>Storage Class</strong> limited to <strong>Uniform</strong>, <strong>Workgroup</strong>, <strong>Image</strong>, <strong>StorageBuffer</strong>"
+          "text": " The <em>Pointer</em> operand of all atomic instructions <strong class=\"purple\">must</strong> have a <strong>Storage Class</strong> limited to <strong>Uniform</strong>, <strong>Workgroup</strong>, <strong>Image</strong>, <strong>StorageBuffer</strong>, or <strong>PhysicalStorageBuffer</strong>"
         },
         {
           "vuid": "VUID-StandaloneSpirv-Offset-04687",
           "text": " Output variables or block members decorated with <code>Offset</code> that have a 64-bit type, or a composite type containing a 64-bit type, <strong class=\"purple\">must</strong> specify an <code>Offset</code> value aligned to a 8 byte boundary"
         },
         {
-          "vuid": "VUID-StandaloneSpirv-Offset-04688",
-          "text": " Any output block or block member decorated with <code>Offset</code> containing a 64-bit type consumes a multiple of 8 bytes"
-        },
-        {
           "vuid": "VUID-StandaloneSpirv-Offset-04689",
           "text": " The size of any output block containing any member decorated with <code>Offset</code> that is a 64-bit type <strong class=\"purple\">must</strong> be a multiple of 8"
         },
           "text": " If any variables or block members in the output interface of the entry point being compiled are decorated with <code>Stream</code>, then all variables belonging to the same <code>XfbBuffer</code> <strong class=\"purple\">must</strong> specify the same <code>Stream</code> value"
         },
         {
-          "vuid": "VUID-StandaloneSpirv-Stream-04695",
-          "text": " Output variables, blocks or block members that are not decorated with <code>Stream</code> default to vertex stream zero"
-        },
-        {
           "vuid": "VUID-StandaloneSpirv-XfbBuffer-04696",
           "text": " For any two variables or block members in the output interface of the entry point being compiled with the same <code>XfbBuffer</code> value, the ranges determined by the <code>Offset</code> decoration and the size of the type <strong class=\"purple\">must</strong> not overlap"
         },
index 2123ee0..a9fb665 100644 (file)
@@ -33,6 +33,7 @@ branch of the member gitlab server.
         <platform name="fuchsia" protect="VK_USE_PLATFORM_FUCHSIA" comment="Fuchsia"/>
         <platform name="ggp" protect="VK_USE_PLATFORM_GGP" comment="Google Games Platform"/>
         <platform name="provisional" protect="VK_ENABLE_BETA_EXTENSIONS" comment="Enable declarations for beta/provisional extensions"/>
+        <platform name="screen" protect="VK_USE_PLATFORM_SCREEN_QNX" comment="QNX Screen Graphics Subsystem"/>
     </platforms>
 
     <tags comment="Vulkan vendor/author tags for extensions and layers">
@@ -68,6 +69,7 @@ branch of the member gitlab server.
         <tag name="INTEL"       author="Intel Corporation"             contact="Slawek Grajewski @sgrajewski"/>
         <tag name="HUAWEI"      author="Huawei Technologies Co. Ltd."  contact="Hueilong Wang @wyvernathuawei"/>
         <tag name="VALVE"       author="Valve Corporation"             contact="Pierre-Loup Griffais @plagman, Joshua Ashton @Joshua-Ashton, Hans-Kristian Arntzen @HansKristian-Work"/>
+        <tag name="QNX"         author="BlackBerry Limited"            contact="Mike Gorchak @mgorchak-blackberry"/>
     </tags>
 
     <types comment="Vulkan type definitions">
@@ -137,7 +139,7 @@ branch of the member gitlab server.
         <type category="define">// Vulkan 1.2 version number
 #define <name>VK_API_VERSION_1_2</name> <type>VK_MAKE_VERSION</type>(1, 2, 0)// Patch version should always be set to 0</type>
         <type category="define">// Version of this file
-#define <name>VK_HEADER_VERSION</name> 166</type>
+#define <name>VK_HEADER_VERSION</name> 167</type>
         <type category="define" requires="VK_HEADER_VERSION">// Complete version of this file
 #define <name>VK_HEADER_VERSION_COMPLETE</name> <type>VK_MAKE_VERSION</type>(1, 2, VK_HEADER_VERSION)</type>
 
@@ -1850,7 +1852,7 @@ typedef void <name>CAMetalLayer</name>;
             <member values="VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
             <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
             <member len="null-terminated">const <type>char</type>* <name>pMarkerName</name><comment>Name of the debug marker</comment></member>
-            <member optional="true"><type>float</type>            <name>color</name>[4]<comment>Optional color for debug marker</comment></member>
+            <member><type>float</type>            <name>color</name>[4]<comment>Optional color for debug marker</comment></member>
         </type>
         <type category="struct" name="VkDedicatedAllocationImageCreateInfoNV" structextends="VkImageCreateInfo">
             <member values="VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
@@ -2016,9 +2018,9 @@ typedef void <name>CAMetalLayer</name>;
             <member><type>VkDeviceSize</type>                       <name>preprocessOffset</name></member>
             <member><type>VkDeviceSize</type>                       <name>preprocessSize</name></member>
             <member optional="true"><type>VkBuffer</type>           <name>sequencesCountBuffer</name></member>
-            <member optional="true"><type>VkDeviceSize</type>       <name>sequencesCountOffset</name></member>
+            <member><type>VkDeviceSize</type>                       <name>sequencesCountOffset</name></member>
             <member optional="true"><type>VkBuffer</type>           <name>sequencesIndexBuffer</name></member>
-            <member optional="true"><type>VkDeviceSize</type>       <name>sequencesIndexOffset</name></member>
+            <member><type>VkDeviceSize</type>                       <name>sequencesIndexOffset</name></member>
         </type>
         <type category="struct" name="VkGeneratedCommandsMemoryRequirementsInfoNV">
             <member values="VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
@@ -2273,7 +2275,7 @@ typedef void <name>CAMetalLayer</name>;
             <member optional="true">const <type>void</type>*                      <name>pNext</name></member>
             <member externsync="true"><type>VkSemaphore</type>    <name>semaphore</name></member>
             <member optional="true"><type>VkSemaphoreImportFlags</type> <name>flags</name></member>
-            <member optional="true"><type>VkExternalSemaphoreHandleTypeFlagBits</type> <name>handleType</name></member>
+            <member noautovalidity="true"><type>VkExternalSemaphoreHandleTypeFlagBits</type> <name>handleType</name></member>
             <member optional="true"><type>HANDLE</type>           <name>handle</name></member>
             <member optional="true"><type>LPCWSTR</type>          <name>name</name></member>
         </type>
@@ -2337,7 +2339,7 @@ typedef void <name>CAMetalLayer</name>;
             <member optional="true">const <type>void</type>*                                        <name>pNext</name></member>
             <member externsync="true"><type>VkFence</type>                          <name>fence</name></member>
             <member optional="true"><type>VkFenceImportFlags</type>              <name>flags</name></member>
-            <member optional="true"><type>VkExternalFenceHandleTypeFlagBits</type>  <name>handleType</name></member>
+            <member noautovalidity="true"><type>VkExternalFenceHandleTypeFlagBits</type>  <name>handleType</name></member>
             <member optional="true"><type>HANDLE</type>                             <name>handle</name></member>
             <member optional="true"><type>LPCWSTR</type>                            <name>name</name></member>
         </type>
@@ -2926,7 +2928,7 @@ typedef void <name>CAMetalLayer</name>;
         <type category="struct" name="VkSampleLocationsInfoEXT" structextends="VkImageMemoryBarrier">
             <member values="VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
             <member optional="true">const <type>void</type>*                            <name>pNext</name></member>
-            <member optional="true"><type>VkSampleCountFlagBits</type>  <name>sampleLocationsPerPixel</name></member>
+            <member noautovalidity="true"><type>VkSampleCountFlagBits</type>  <name>sampleLocationsPerPixel</name></member>
             <member><type>VkExtent2D</type>                             <name>sampleLocationGridSize</name></member>
             <member optional="true"><type>uint32_t</type>               <name>sampleLocationsCount</name></member>
             <member len="sampleLocationsCount">const <type>VkSampleLocationEXT</type>* <name>pSampleLocations</name></member>
@@ -3168,7 +3170,7 @@ typedef void <name>CAMetalLayer</name>;
             <member values="VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT"><type>VkStructureType</type> <name>sType</name></member>
             <member optional="true">const <type>void</type>*                            <name>pNext</name></member>
             <member len="null-terminated">const <type>char</type>*      <name>pLabelName</name></member>
-            <member optional="true"><type>float</type>                  <name>color</name>[4]</member>
+            <member><type>float</type>                  <name>color</name>[4]</member>
         </type>
         <type category="struct" name="VkDebugUtilsMessengerCreateInfoEXT" allowduplicate="true" structextends="VkInstanceCreateInfo">
             <member values="VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
@@ -3184,7 +3186,7 @@ typedef void <name>CAMetalLayer</name>;
             <member optional="true">const <type>void</type>*                                                        <name>pNext</name></member>
             <member optional="true"><type>VkDebugUtilsMessengerCallbackDataFlagsEXT</type>                          <name>flags</name></member>
             <member optional="true" len="null-terminated">const <type>char</type>*                                  <name>pMessageIdName</name></member>
-            <member optional="true"><type>int32_t</type>                                                            <name>messageIdNumber</name></member>
+            <member><type>int32_t</type>                                                            <name>messageIdNumber</name></member>
             <member len="null-terminated">const <type>char</type>*                                                  <name>pMessage</name></member>
             <member optional="true"><type>uint32_t</type>                                                           <name>queueLabelCount</name></member>
             <member len="queueLabelCount">const <type>VkDebugUtilsLabelEXT</type>*                  <name>pQueueLabels</name></member>
@@ -3211,10 +3213,10 @@ typedef void <name>CAMetalLayer</name>;
             <member><type>VkDeviceMemoryReportFlagsEXT</type>     <name>flags</name></member>
             <member><type>VkDeviceMemoryReportEventTypeEXT</type> <name>type</name></member>
             <member><type>uint64_t</type>                         <name>memoryObjectId</name></member>
-            <member optional="true"><type>VkDeviceSize</type>     <name>size</name></member>
-            <member optional="true"><type>VkObjectType</type>     <name>objectType</name></member>
-            <member optional="true"><type>uint64_t</type>         <name>objectHandle</name></member>
-            <member optional="true"><type>uint32_t</type>         <name>heapIndex</name></member>
+            <member><type>VkDeviceSize</type>                     <name>size</name></member>
+            <member><type>VkObjectType</type>                     <name>objectType</name></member>
+            <member><type>uint64_t</type>                         <name>objectHandle</name></member>
+            <member><type>uint32_t</type>                         <name>heapIndex</name></member>
         </type>
         <type category="struct" name="VkImportMemoryHostPointerInfoEXT" structextends="VkMemoryAllocateInfo">
             <member values="VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
@@ -3402,7 +3404,7 @@ typedef void <name>CAMetalLayer</name>;
             <member optional="true"><type>VkAccessFlags</type>     <name>srcAccessMask</name></member>
             <member optional="true"><type>VkAccessFlags</type>     <name>dstAccessMask</name></member>
             <member optional="true"><type>VkDependencyFlags</type> <name>dependencyFlags</name></member>
-            <member optional="true"><type>int32_t</type>           <name>viewOffset</name></member>
+            <member><type>int32_t</type>                           <name>viewOffset</name></member>
         </type>
         <type category="struct" name="VkSubpassDependency2KHR"                                 alias="VkSubpassDependency2"/>
         <type category="struct" name="VkRenderPassCreateInfo2">
@@ -4460,7 +4462,7 @@ typedef void <name>CAMetalLayer</name>;
             <member><type>char</type>               <name>name</name>[<enum>VK_MAX_DESCRIPTION_SIZE</enum>]</member>
             <member><type>char</type>               <name>description</name>[<enum>VK_MAX_DESCRIPTION_SIZE</enum>]</member>
             <member><type>VkBool32</type>           <name>isText</name></member>
-            <member optional="true"><type>size_t</type>               <name>dataSize</name></member>
+            <member><type>size_t</type>             <name>dataSize</name></member>
             <member optional="true" len="dataSize"><type>void</type>* <name>pData</name></member>
         </type>
         <type category="struct" name="VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
@@ -4532,8 +4534,8 @@ typedef void <name>CAMetalLayer</name>;
             <member optional="true">const <type>void</type>*                                                      <name>pNext</name></member>
             <member><type>VkLineRasterizationModeEXT</type>                                       <name>lineRasterizationMode</name></member>
             <member><type>VkBool32</type>                                                         <name>stippledLineEnable</name></member>
-            <member optional="true"><type>uint32_t</type>                                         <name>lineStippleFactor</name></member>
-            <member optional="true"><type>uint16_t</type>                                         <name>lineStipplePattern</name></member>
+            <member><type>uint32_t</type>                                                         <name>lineStippleFactor</name></member>
+            <member><type>uint16_t</type>                                                         <name>lineStipplePattern</name></member>
         </type>
         <type category="struct" name="VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
             <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
@@ -4728,14 +4730,14 @@ typedef void <name>CAMetalLayer</name>;
         </type>
         <type category="struct" name="VkAccelerationStructureGeometryTrianglesDataKHR">
             <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR"><type>VkStructureType</type> <name>sType</name></member>
-            <member optional="true">const <type>void</type>*                                   <name>pNext</name></member>
+            <member optional="true">const <type>void</type>*                   <name>pNext</name></member>
             <member><type>VkFormat</type>                                      <name>vertexFormat</name></member>
             <member><type>VkDeviceOrHostAddressConstKHR</type>                 <name>vertexData</name></member>
             <member><type>VkDeviceSize</type>                                  <name>vertexStride</name></member>
             <member><type>uint32_t</type>                                      <name>maxVertex</name></member>
             <member><type>VkIndexType</type>                                   <name>indexType</name></member>
-            <member optional="true"><type>VkDeviceOrHostAddressConstKHR</type> <name>indexData</name></member>
-            <member optional="true"><type>VkDeviceOrHostAddressConstKHR</type> <name>transformData</name></member>
+            <member><type>VkDeviceOrHostAddressConstKHR</type>                 <name>indexData</name></member>
+            <member><type>VkDeviceOrHostAddressConstKHR</type>                 <name>transformData</name></member>
         </type>
         <type category="struct" name="VkAccelerationStructureGeometryAabbsDataKHR">
             <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR"><type>VkStructureType</type> <name>sType</name></member>
@@ -4777,8 +4779,8 @@ typedef void <name>CAMetalLayer</name>;
         <type category="struct" name="VkAccelerationStructureBuildRangeInfoKHR">
             <member><type>uint32_t</type>                                                <name>primitiveCount</name></member>
             <member><type>uint32_t</type>                                                <name>primitiveOffset</name></member>
-            <member optional="true"><type>uint32_t</type>                                <name>firstVertex</name></member>
-            <member optional="true"><type>uint32_t</type>                                <name>transformOffset</name></member>
+            <member><type>uint32_t</type>                                                <name>firstVertex</name></member>
+            <member><type>uint32_t</type>                                                <name>transformOffset</name></member>
         </type>
         <type category="struct" name="VkAccelerationStructureCreateInfoKHR">
             <member values="VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member>
@@ -9288,7 +9290,7 @@ typedef void <name>CAMetalLayer</name>;
             <param><type>VkDevice</type>                                            <name>device</name></param>
             <param><type>VkAccelerationStructureBuildTypeKHR</type>                 <name>buildType</name></param>
             <param>const <type>VkAccelerationStructureBuildGeometryInfoKHR</type>*  <name>pBuildInfo</name></param>
-            <param len="pBuildInfo-&gt;geometryCount">const <type>uint32_t</type>*  <name>pMaxPrimitiveCounts</name></param>
+            <param optional="true" len="pBuildInfo-&gt;geometryCount">const <type>uint32_t</type>*  <name>pMaxPrimitiveCounts</name></param>
             <param><type>VkAccelerationStructureBuildSizesInfoKHR</type>*           <name>pSizeInfo</name></param>
         </command>
     </commands>
@@ -13876,7 +13878,7 @@ typedef void <name>CAMetalLayer</name>;
         </extension>
         <extension name="VK_EXT_device_memory_report" number="285" type="device" requires="VK_KHR_get_physical_device_properties2" author="EXT" contact="Yiwei Zhang @zhangyiwei" specialuse="devtools" supported="vulkan">
             <require>
-                <enum value="1"                                             name="VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION"/>
+                <enum value="2"                                             name="VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION"/>
                 <enum value="&quot;VK_EXT_device_memory_report&quot;"       name="VK_EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME"/>
                 <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT"/>
                 <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT"/>
@@ -14564,12 +14566,16 @@ typedef void <name>CAMetalLayer</name>;
             <require>
                 <enum value="0"                                         name="VK_NV_EXTENSION_374_SPEC_VERSION"/>
                 <enum value="&quot;VK_NV_extension_374&quot;"           name="VK_NV_EXTENSION_374_EXTENSION_NAME"/>
+                <enum bitpos="4" extends="VkExternalFenceHandleTypeFlagBits" name="VK_EXTERNAL_FENCE_HANDLE_TYPE_RESERVED_4_BIT_NV"/>
+                <enum bitpos="5" extends="VkExternalFenceHandleTypeFlagBits" name="VK_EXTERNAL_FENCE_HANDLE_TYPE_RESERVED_5_BIT_NV"/>
             </require>
         </extension>
         <extension name="VK_NV_extension_375" number="375" author="NV" contact="Daniel Koch @dgkoch" supported="disabled">
             <require>
                 <enum value="0"                                         name="VK_NV_EXTENSION_375_SPEC_VERSION"/>
                 <enum value="&quot;VK_NV_extension_375&quot;"           name="VK_NV_EXTENSION_375_EXTENSION_NAME"/>
+                <enum bitpos="5" extends="VkExternalSemaphoreHandleTypeFlagBits" name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_RESERVED_5_BIT_NV"/>
+                <enum bitpos="6" extends="VkExternalSemaphoreHandleTypeFlagBits" name="VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_RESERVED_6_BIT_NV"/>
             </require>
         </extension>
         <extension name="VK_EXT_extension_376" number="376" author="EXT" contact="Shahbaz Youssefi @syoussefi" supported="disabled">
@@ -14590,6 +14596,35 @@ typedef void <name>CAMetalLayer</name>;
                 <enum value="&quot;VK_NV_extension_378&quot;"           name="VK_NV_EXTENSION_378_EXTENSION_NAME"/>
             </require>
         </extension>
+        <extension name="VK_QNX_screen_surface" number="379" type="instance" requires="VK_KHR_surface" platform="screen" author="QNX" contact="Mike Gorchak @mgorchak-blackberry" supported="disabled">
+            <require>
+                <enum value="1"                                         name="VK_QNX_SCREEN_SURFACE_SPEC_VERSION"/>
+                <enum value="&quot;VK_QNX_screen_surface&quot;"         name="VK_QNX_SCREEN_SURFACE_EXTENSION_NAME"/>
+                <enum offset="0" extends="VkStructureType"              name="VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX"/>
+                <type name="VkScreenSurfaceCreateFlagsQNX"/>
+                <type name="VkScreenSurfaceCreateInfoQNX"/>
+                <command name="vkCreateScreenSurfaceQNX"/>
+                <command name="vkGetPhysicalDeviceScreenPresentationSupportQNX"/>
+            </require>
+        </extension>
+        <extension name="VK_KHR_extension_380" number="380" author="KHR" contact="James Jones @cubanismo" supported="disabled">
+            <require>
+                <enum value="0"                                         name="VK_KHR_EXTENSION_380_SPEC_VERSION"/>
+                <enum value="&quot;VK_KHR_extension_380&quot;"          name="VK_KHR_EXTENSION_380_EXTENSION_NAME"/>
+            </require>
+        </extension>
+        <extension name="VK_KHR_extension_381" number="381" author="KHR" contact="James Jones @cubanismo" supported="disabled">
+            <require>
+                <enum value="0"                                         name="VK_KHR_EXTENSION_381_SPEC_VERSION"/>
+                <enum value="&quot;VK_KHR_extension_381&quot;"          name="VK_KHR_EXTENSION_381_EXTENSION_NAME"/>
+            </require>
+        </extension>
+        <extension name="VK_EXT_extension_382" number="382" author="EXT" contact="Sharif Elcott @selcott" supported="disabled">
+            <require>
+                <enum value="0"                                         name="VK_EXT_EXTENSION_382_SPEC_VERSION"/>
+                <enum value="&quot;VK_EXT_extension_382&quot;"          name="VK_EXT_EXTENSION_382_EXTENSION_NAME"/>
+            </require>
+        </extension>
     </extensions>
     <spirvextensions comment="SPIR-V Extensions allowed in Vulkan and what is required to use it">
         <spirvextension name="SPV_KHR_variable_pointers">
@@ -14752,6 +14787,10 @@ typedef void <name>CAMetalLayer</name>;
         <spirvextension name="SPV_KHR_terminate_invocation">
             <enable extension="VK_KHR_shader_terminate_invocation"/>
         </spirvextension>
+        <spirvextension name="SPV_KHR_multiview">
+            <enable version="VK_API_VERSION_1_1"/>
+            <enable extension="VK_KHR_multiview"/>
+        </spirvextension>
     </spirvextensions>
     <spirvcapabilities comment="SPIR-V Capabilities allowed in Vulkan and what is required to use it">
         <spirvcapability name="Matrix">