Update for Vulkan-Docs 1.1.113
diff --git a/include/vulkan/vulkan.hpp b/include/vulkan/vulkan.hpp
index 293cbdb..c38e7e4 100644
--- a/include/vulkan/vulkan.hpp
+++ b/include/vulkan/vulkan.hpp
@@ -56,7 +56,7 @@
 # define VULKAN_HPP_ASSERT   assert
 #endif
 
-static_assert( VK_HEADER_VERSION ==  112 , "Wrong VK_HEADER_VERSION!" );
+static_assert( VK_HEADER_VERSION ==  113 , "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
@@ -5300,6 +5300,9 @@
     eSurfaceFullScreenExclusiveWin32InfoEXT = VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT,
     eHeadlessSurfaceCreateInfoEXT = VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT,
     ePhysicalDeviceHostQueryResetFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT,
+    ePhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT,
+    ePhysicalDeviceTexelBufferAlignmentFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT,
+    ePhysicalDeviceTexelBufferAlignmentPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT,
     ePhysicalDeviceVariablePointerFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES,
     ePhysicalDeviceShaderDrawParameterFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES,
     eDebugReportCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT,
@@ -5719,6 +5722,9 @@
       case StructureType::eSurfaceFullScreenExclusiveWin32InfoEXT : return "SurfaceFullScreenExclusiveWin32InfoEXT";
       case StructureType::eHeadlessSurfaceCreateInfoEXT : return "HeadlessSurfaceCreateInfoEXT";
       case StructureType::ePhysicalDeviceHostQueryResetFeaturesEXT : return "PhysicalDeviceHostQueryResetFeaturesEXT";
+      case StructureType::ePhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT : return "PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT";
+      case StructureType::ePhysicalDeviceTexelBufferAlignmentFeaturesEXT : return "PhysicalDeviceTexelBufferAlignmentFeaturesEXT";
+      case StructureType::ePhysicalDeviceTexelBufferAlignmentPropertiesEXT : return "PhysicalDeviceTexelBufferAlignmentPropertiesEXT";
       default: return "invalid";
     }
   }
@@ -11324,6 +11330,7 @@
   struct PhysicalDeviceScalarBlockLayoutFeaturesEXT;
   struct PhysicalDeviceShaderAtomicInt64FeaturesKHR;
   struct PhysicalDeviceShaderCorePropertiesAMD;
+  struct PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT;
   struct PhysicalDeviceShaderDrawParametersFeatures;
   using PhysicalDeviceShaderDrawParameterFeatures = PhysicalDeviceShaderDrawParametersFeatures;
   struct PhysicalDeviceShaderImageFootprintFeaturesNV;
@@ -11337,6 +11344,8 @@
   struct PhysicalDeviceSparseProperties;
   struct PhysicalDeviceSubgroupProperties;
   struct PhysicalDeviceSurfaceInfo2KHR;
+  struct PhysicalDeviceTexelBufferAlignmentFeaturesEXT;
+  struct PhysicalDeviceTexelBufferAlignmentPropertiesEXT;
   struct PhysicalDeviceTransformFeedbackFeaturesEXT;
   struct PhysicalDeviceTransformFeedbackPropertiesEXT;
   struct PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR;
@@ -17010,12 +17019,12 @@
 
     GeometryTrianglesNV( VkGeometryTrianglesNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( GeometryTrianglesNV ) );
+      *reinterpret_cast<VkGeometryTrianglesNV*>(this) = rhs;
     }
 
     GeometryTrianglesNV& operator=( VkGeometryTrianglesNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( GeometryTrianglesNV ) );
+      *reinterpret_cast<VkGeometryTrianglesNV*>(this) = rhs;
       return *this;
     }
 
@@ -17156,12 +17165,12 @@
 
     GeometryAABBNV( VkGeometryAABBNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( GeometryAABBNV ) );
+      *reinterpret_cast<VkGeometryAABBNV*>(this) = rhs;
     }
 
     GeometryAABBNV& operator=( VkGeometryAABBNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( GeometryAABBNV ) );
+      *reinterpret_cast<VkGeometryAABBNV*>(this) = rhs;
       return *this;
     }
 
@@ -17242,12 +17251,12 @@
 
     GeometryDataNV( VkGeometryDataNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( GeometryDataNV ) );
+      *reinterpret_cast<VkGeometryDataNV*>(this) = rhs;
     }
 
     GeometryDataNV& operator=( VkGeometryDataNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( GeometryDataNV ) );
+      *reinterpret_cast<VkGeometryDataNV*>(this) = rhs;
       return *this;
     }
 
@@ -17301,12 +17310,12 @@
 
     GeometryNV( VkGeometryNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( GeometryNV ) );
+      *reinterpret_cast<VkGeometryNV*>(this) = rhs;
     }
 
     GeometryNV& operator=( VkGeometryNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( GeometryNV ) );
+      *reinterpret_cast<VkGeometryNV*>(this) = rhs;
       return *this;
     }
 
@@ -17385,12 +17394,12 @@
 
     AccelerationStructureInfoNV( VkAccelerationStructureInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( AccelerationStructureInfoNV ) );
+      *reinterpret_cast<VkAccelerationStructureInfoNV*>(this) = rhs;
     }
 
     AccelerationStructureInfoNV& operator=( VkAccelerationStructureInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( AccelerationStructureInfoNV ) );
+      *reinterpret_cast<VkAccelerationStructureInfoNV*>(this) = rhs;
       return *this;
     }
 
@@ -17479,12 +17488,12 @@
 
     AccelerationStructureCreateInfoNV( VkAccelerationStructureCreateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( AccelerationStructureCreateInfoNV ) );
+      *reinterpret_cast<VkAccelerationStructureCreateInfoNV*>(this) = rhs;
     }
 
     AccelerationStructureCreateInfoNV& operator=( VkAccelerationStructureCreateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( AccelerationStructureCreateInfoNV ) );
+      *reinterpret_cast<VkAccelerationStructureCreateInfoNV*>(this) = rhs;
       return *this;
     }
 
@@ -17549,12 +17558,12 @@
 
     AccelerationStructureMemoryRequirementsInfoNV( VkAccelerationStructureMemoryRequirementsInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( AccelerationStructureMemoryRequirementsInfoNV ) );
+      *reinterpret_cast<VkAccelerationStructureMemoryRequirementsInfoNV*>(this) = rhs;
     }
 
     AccelerationStructureMemoryRequirementsInfoNV& operator=( VkAccelerationStructureMemoryRequirementsInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( AccelerationStructureMemoryRequirementsInfoNV ) );
+      *reinterpret_cast<VkAccelerationStructureMemoryRequirementsInfoNV*>(this) = rhs;
       return *this;
     }
 
@@ -17625,12 +17634,12 @@
 
     AcquireNextImageInfoKHR( VkAcquireNextImageInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( AcquireNextImageInfoKHR ) );
+      *reinterpret_cast<VkAcquireNextImageInfoKHR*>(this) = rhs;
     }
 
     AcquireNextImageInfoKHR& operator=( VkAcquireNextImageInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( AcquireNextImageInfoKHR ) );
+      *reinterpret_cast<VkAcquireNextImageInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -17727,12 +17736,12 @@
 
     AllocationCallbacks( VkAllocationCallbacks const & rhs )
     {
-      memcpy( this, &rhs, sizeof( AllocationCallbacks ) );
+      *reinterpret_cast<VkAllocationCallbacks*>(this) = rhs;
     }
 
     AllocationCallbacks& operator=( VkAllocationCallbacks const & rhs )
     {
-      memcpy( this, &rhs, sizeof( AllocationCallbacks ) );
+      *reinterpret_cast<VkAllocationCallbacks*>(this) = rhs;
       return *this;
     }
 
@@ -17820,12 +17829,12 @@
 
     ComponentMapping( VkComponentMapping const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ComponentMapping ) );
+      *reinterpret_cast<VkComponentMapping*>(this) = rhs;
     }
 
     ComponentMapping& operator=( VkComponentMapping const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ComponentMapping ) );
+      *reinterpret_cast<VkComponentMapping*>(this) = rhs;
       return *this;
     }
 
@@ -18015,12 +18024,12 @@
 
     AndroidSurfaceCreateInfoKHR( VkAndroidSurfaceCreateInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( AndroidSurfaceCreateInfoKHR ) );
+      *reinterpret_cast<VkAndroidSurfaceCreateInfoKHR*>(this) = rhs;
     }
 
     AndroidSurfaceCreateInfoKHR& operator=( VkAndroidSurfaceCreateInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( AndroidSurfaceCreateInfoKHR ) );
+      *reinterpret_cast<VkAndroidSurfaceCreateInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -18092,12 +18101,12 @@
 
     ApplicationInfo( VkApplicationInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ApplicationInfo ) );
+      *reinterpret_cast<VkApplicationInfo*>(this) = rhs;
     }
 
     ApplicationInfo& operator=( VkApplicationInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ApplicationInfo ) );
+      *reinterpret_cast<VkApplicationInfo*>(this) = rhs;
       return *this;
     }
 
@@ -18200,12 +18209,12 @@
 
     AttachmentDescription( VkAttachmentDescription const & rhs )
     {
-      memcpy( this, &rhs, sizeof( AttachmentDescription ) );
+      *reinterpret_cast<VkAttachmentDescription*>(this) = rhs;
     }
 
     AttachmentDescription& operator=( VkAttachmentDescription const & rhs )
     {
-      memcpy( this, &rhs, sizeof( AttachmentDescription ) );
+      *reinterpret_cast<VkAttachmentDescription*>(this) = rhs;
       return *this;
     }
 
@@ -18327,12 +18336,12 @@
 
     AttachmentDescription2KHR( VkAttachmentDescription2KHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( AttachmentDescription2KHR ) );
+      *reinterpret_cast<VkAttachmentDescription2KHR*>(this) = rhs;
     }
 
     AttachmentDescription2KHR& operator=( VkAttachmentDescription2KHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( AttachmentDescription2KHR ) );
+      *reinterpret_cast<VkAttachmentDescription2KHR*>(this) = rhs;
       return *this;
     }
 
@@ -18453,12 +18462,12 @@
 
     AttachmentReference( VkAttachmentReference const & rhs )
     {
-      memcpy( this, &rhs, sizeof( AttachmentReference ) );
+      *reinterpret_cast<VkAttachmentReference*>(this) = rhs;
     }
 
     AttachmentReference& operator=( VkAttachmentReference const & rhs )
     {
-      memcpy( this, &rhs, sizeof( AttachmentReference ) );
+      *reinterpret_cast<VkAttachmentReference*>(this) = rhs;
       return *this;
     }
 
@@ -18512,12 +18521,12 @@
 
     AttachmentReference2KHR( VkAttachmentReference2KHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( AttachmentReference2KHR ) );
+      *reinterpret_cast<VkAttachmentReference2KHR*>(this) = rhs;
     }
 
     AttachmentReference2KHR& operator=( VkAttachmentReference2KHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( AttachmentReference2KHR ) );
+      *reinterpret_cast<VkAttachmentReference2KHR*>(this) = rhs;
       return *this;
     }
 
@@ -18590,12 +18599,12 @@
 
     Extent2D( VkExtent2D const & rhs )
     {
-      memcpy( this, &rhs, sizeof( Extent2D ) );
+      *reinterpret_cast<VkExtent2D*>(this) = rhs;
     }
 
     Extent2D& operator=( VkExtent2D const & rhs )
     {
-      memcpy( this, &rhs, sizeof( Extent2D ) );
+      *reinterpret_cast<VkExtent2D*>(this) = rhs;
       return *this;
     }
 
@@ -18647,12 +18656,12 @@
 
     SampleLocationEXT( VkSampleLocationEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SampleLocationEXT ) );
+      *reinterpret_cast<VkSampleLocationEXT*>(this) = rhs;
     }
 
     SampleLocationEXT& operator=( VkSampleLocationEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SampleLocationEXT ) );
+      *reinterpret_cast<VkSampleLocationEXT*>(this) = rhs;
       return *this;
     }
 
@@ -18708,12 +18717,12 @@
 
     SampleLocationsInfoEXT( VkSampleLocationsInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SampleLocationsInfoEXT ) );
+      *reinterpret_cast<VkSampleLocationsInfoEXT*>(this) = rhs;
     }
 
     SampleLocationsInfoEXT& operator=( VkSampleLocationsInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SampleLocationsInfoEXT ) );
+      *reinterpret_cast<VkSampleLocationsInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -18794,12 +18803,12 @@
 
     AttachmentSampleLocationsEXT( VkAttachmentSampleLocationsEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( AttachmentSampleLocationsEXT ) );
+      *reinterpret_cast<VkAttachmentSampleLocationsEXT*>(this) = rhs;
     }
 
     AttachmentSampleLocationsEXT& operator=( VkAttachmentSampleLocationsEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( AttachmentSampleLocationsEXT ) );
+      *reinterpret_cast<VkAttachmentSampleLocationsEXT*>(this) = rhs;
       return *this;
     }
 
@@ -18848,12 +18857,12 @@
 
     BaseInStructure( VkBaseInStructure const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BaseInStructure ) );
+      *reinterpret_cast<VkBaseInStructure*>(this) = rhs;
     }
 
     BaseInStructure& operator=( VkBaseInStructure const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BaseInStructure ) );
+      *reinterpret_cast<VkBaseInStructure*>(this) = rhs;
       return *this;
     }
 
@@ -18896,12 +18905,12 @@
 
     BaseOutStructure( VkBaseOutStructure const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BaseOutStructure ) );
+      *reinterpret_cast<VkBaseOutStructure*>(this) = rhs;
     }
 
     BaseOutStructure& operator=( VkBaseOutStructure const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BaseOutStructure ) );
+      *reinterpret_cast<VkBaseOutStructure*>(this) = rhs;
       return *this;
     }
 
@@ -18953,12 +18962,12 @@
 
     BindAccelerationStructureMemoryInfoNV( VkBindAccelerationStructureMemoryInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BindAccelerationStructureMemoryInfoNV ) );
+      *reinterpret_cast<VkBindAccelerationStructureMemoryInfoNV*>(this) = rhs;
     }
 
     BindAccelerationStructureMemoryInfoNV& operator=( VkBindAccelerationStructureMemoryInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BindAccelerationStructureMemoryInfoNV ) );
+      *reinterpret_cast<VkBindAccelerationStructureMemoryInfoNV*>(this) = rhs;
       return *this;
     }
 
@@ -19047,12 +19056,12 @@
 
     BindBufferMemoryDeviceGroupInfo( VkBindBufferMemoryDeviceGroupInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BindBufferMemoryDeviceGroupInfo ) );
+      *reinterpret_cast<VkBindBufferMemoryDeviceGroupInfo*>(this) = rhs;
     }
 
     BindBufferMemoryDeviceGroupInfo& operator=( VkBindBufferMemoryDeviceGroupInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BindBufferMemoryDeviceGroupInfo ) );
+      *reinterpret_cast<VkBindBufferMemoryDeviceGroupInfo*>(this) = rhs;
       return *this;
     }
 
@@ -19119,12 +19128,12 @@
 
     BindBufferMemoryInfo( VkBindBufferMemoryInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BindBufferMemoryInfo ) );
+      *reinterpret_cast<VkBindBufferMemoryInfo*>(this) = rhs;
     }
 
     BindBufferMemoryInfo& operator=( VkBindBufferMemoryInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BindBufferMemoryInfo ) );
+      *reinterpret_cast<VkBindBufferMemoryInfo*>(this) = rhs;
       return *this;
     }
 
@@ -19197,12 +19206,12 @@
 
     Offset2D( VkOffset2D const & rhs )
     {
-      memcpy( this, &rhs, sizeof( Offset2D ) );
+      *reinterpret_cast<VkOffset2D*>(this) = rhs;
     }
 
     Offset2D& operator=( VkOffset2D const & rhs )
     {
-      memcpy( this, &rhs, sizeof( Offset2D ) );
+      *reinterpret_cast<VkOffset2D*>(this) = rhs;
       return *this;
     }
 
@@ -19254,12 +19263,12 @@
 
     Rect2D( VkRect2D const & rhs )
     {
-      memcpy( this, &rhs, sizeof( Rect2D ) );
+      *reinterpret_cast<VkRect2D*>(this) = rhs;
     }
 
     Rect2D& operator=( VkRect2D const & rhs )
     {
-      memcpy( this, &rhs, sizeof( Rect2D ) );
+      *reinterpret_cast<VkRect2D*>(this) = rhs;
       return *this;
     }
 
@@ -19315,12 +19324,12 @@
 
     BindImageMemoryDeviceGroupInfo( VkBindImageMemoryDeviceGroupInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BindImageMemoryDeviceGroupInfo ) );
+      *reinterpret_cast<VkBindImageMemoryDeviceGroupInfo*>(this) = rhs;
     }
 
     BindImageMemoryDeviceGroupInfo& operator=( VkBindImageMemoryDeviceGroupInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BindImageMemoryDeviceGroupInfo ) );
+      *reinterpret_cast<VkBindImageMemoryDeviceGroupInfo*>(this) = rhs;
       return *this;
     }
 
@@ -19403,12 +19412,12 @@
 
     BindImageMemoryInfo( VkBindImageMemoryInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BindImageMemoryInfo ) );
+      *reinterpret_cast<VkBindImageMemoryInfo*>(this) = rhs;
     }
 
     BindImageMemoryInfo& operator=( VkBindImageMemoryInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BindImageMemoryInfo ) );
+      *reinterpret_cast<VkBindImageMemoryInfo*>(this) = rhs;
       return *this;
     }
 
@@ -19481,12 +19490,12 @@
 
     BindImageMemorySwapchainInfoKHR( VkBindImageMemorySwapchainInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BindImageMemorySwapchainInfoKHR ) );
+      *reinterpret_cast<VkBindImageMemorySwapchainInfoKHR*>(this) = rhs;
     }
 
     BindImageMemorySwapchainInfoKHR& operator=( VkBindImageMemorySwapchainInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BindImageMemorySwapchainInfoKHR ) );
+      *reinterpret_cast<VkBindImageMemorySwapchainInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -19549,12 +19558,12 @@
 
     BindImagePlaneMemoryInfo( VkBindImagePlaneMemoryInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BindImagePlaneMemoryInfo ) );
+      *reinterpret_cast<VkBindImagePlaneMemoryInfo*>(this) = rhs;
     }
 
     BindImagePlaneMemoryInfo& operator=( VkBindImagePlaneMemoryInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BindImagePlaneMemoryInfo ) );
+      *reinterpret_cast<VkBindImagePlaneMemoryInfo*>(this) = rhs;
       return *this;
     }
 
@@ -19617,12 +19626,12 @@
 
     SparseMemoryBind( VkSparseMemoryBind const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SparseMemoryBind ) );
+      *reinterpret_cast<VkSparseMemoryBind*>(this) = rhs;
     }
 
     SparseMemoryBind& operator=( VkSparseMemoryBind const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SparseMemoryBind ) );
+      *reinterpret_cast<VkSparseMemoryBind*>(this) = rhs;
       return *this;
     }
 
@@ -19700,12 +19709,12 @@
 
     SparseBufferMemoryBindInfo( VkSparseBufferMemoryBindInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SparseBufferMemoryBindInfo ) );
+      *reinterpret_cast<VkSparseBufferMemoryBindInfo*>(this) = rhs;
     }
 
     SparseBufferMemoryBindInfo& operator=( VkSparseBufferMemoryBindInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SparseBufferMemoryBindInfo ) );
+      *reinterpret_cast<VkSparseBufferMemoryBindInfo*>(this) = rhs;
       return *this;
     }
 
@@ -19767,12 +19776,12 @@
 
     SparseImageOpaqueMemoryBindInfo( VkSparseImageOpaqueMemoryBindInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SparseImageOpaqueMemoryBindInfo ) );
+      *reinterpret_cast<VkSparseImageOpaqueMemoryBindInfo*>(this) = rhs;
     }
 
     SparseImageOpaqueMemoryBindInfo& operator=( VkSparseImageOpaqueMemoryBindInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SparseImageOpaqueMemoryBindInfo ) );
+      *reinterpret_cast<VkSparseImageOpaqueMemoryBindInfo*>(this) = rhs;
       return *this;
     }
 
@@ -19834,12 +19843,12 @@
 
     ImageSubresource( VkImageSubresource const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageSubresource ) );
+      *reinterpret_cast<VkImageSubresource*>(this) = rhs;
     }
 
     ImageSubresource& operator=( VkImageSubresource const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageSubresource ) );
+      *reinterpret_cast<VkImageSubresource*>(this) = rhs;
       return *this;
     }
 
@@ -19908,12 +19917,12 @@
 
     Offset3D( VkOffset3D const & rhs )
     {
-      memcpy( this, &rhs, sizeof( Offset3D ) );
+      *reinterpret_cast<VkOffset3D*>(this) = rhs;
     }
 
     Offset3D& operator=( VkOffset3D const & rhs )
     {
-      memcpy( this, &rhs, sizeof( Offset3D ) );
+      *reinterpret_cast<VkOffset3D*>(this) = rhs;
       return *this;
     }
 
@@ -19982,12 +19991,12 @@
 
     Extent3D( VkExtent3D const & rhs )
     {
-      memcpy( this, &rhs, sizeof( Extent3D ) );
+      *reinterpret_cast<VkExtent3D*>(this) = rhs;
     }
 
     Extent3D& operator=( VkExtent3D const & rhs )
     {
-      memcpy( this, &rhs, sizeof( Extent3D ) );
+      *reinterpret_cast<VkExtent3D*>(this) = rhs;
       return *this;
     }
 
@@ -20055,12 +20064,12 @@
 
     SparseImageMemoryBind( VkSparseImageMemoryBind const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SparseImageMemoryBind ) );
+      *reinterpret_cast<VkSparseImageMemoryBind*>(this) = rhs;
     }
 
     SparseImageMemoryBind& operator=( VkSparseImageMemoryBind const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SparseImageMemoryBind ) );
+      *reinterpret_cast<VkSparseImageMemoryBind*>(this) = rhs;
       return *this;
     }
 
@@ -20146,12 +20155,12 @@
 
     SparseImageMemoryBindInfo( VkSparseImageMemoryBindInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SparseImageMemoryBindInfo ) );
+      *reinterpret_cast<VkSparseImageMemoryBindInfo*>(this) = rhs;
     }
 
     SparseImageMemoryBindInfo& operator=( VkSparseImageMemoryBindInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SparseImageMemoryBindInfo ) );
+      *reinterpret_cast<VkSparseImageMemoryBindInfo*>(this) = rhs;
       return *this;
     }
 
@@ -20227,12 +20236,12 @@
 
     BindSparseInfo( VkBindSparseInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BindSparseInfo ) );
+      *reinterpret_cast<VkBindSparseInfo*>(this) = rhs;
     }
 
     BindSparseInfo& operator=( VkBindSparseInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BindSparseInfo ) );
+      *reinterpret_cast<VkBindSparseInfo*>(this) = rhs;
       return *this;
     }
 
@@ -20363,12 +20372,12 @@
 
     BufferCopy( VkBufferCopy const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BufferCopy ) );
+      *reinterpret_cast<VkBufferCopy*>(this) = rhs;
     }
 
     BufferCopy& operator=( VkBufferCopy const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BufferCopy ) );
+      *reinterpret_cast<VkBufferCopy*>(this) = rhs;
       return *this;
     }
 
@@ -20436,12 +20445,12 @@
 
     BufferCreateInfo( VkBufferCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BufferCreateInfo ) );
+      *reinterpret_cast<VkBufferCreateInfo*>(this) = rhs;
     }
 
     BufferCreateInfo& operator=( VkBufferCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BufferCreateInfo ) );
+      *reinterpret_cast<VkBufferCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -20536,12 +20545,12 @@
 
     BufferDeviceAddressCreateInfoEXT( VkBufferDeviceAddressCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BufferDeviceAddressCreateInfoEXT ) );
+      *reinterpret_cast<VkBufferDeviceAddressCreateInfoEXT*>(this) = rhs;
     }
 
     BufferDeviceAddressCreateInfoEXT& operator=( VkBufferDeviceAddressCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BufferDeviceAddressCreateInfoEXT ) );
+      *reinterpret_cast<VkBufferDeviceAddressCreateInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -20596,12 +20605,12 @@
 
     BufferDeviceAddressInfoEXT( VkBufferDeviceAddressInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BufferDeviceAddressInfoEXT ) );
+      *reinterpret_cast<VkBufferDeviceAddressInfoEXT*>(this) = rhs;
     }
 
     BufferDeviceAddressInfoEXT& operator=( VkBufferDeviceAddressInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BufferDeviceAddressInfoEXT ) );
+      *reinterpret_cast<VkBufferDeviceAddressInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -20662,12 +20671,12 @@
 
     ImageSubresourceLayers( VkImageSubresourceLayers const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageSubresourceLayers ) );
+      *reinterpret_cast<VkImageSubresourceLayers*>(this) = rhs;
     }
 
     ImageSubresourceLayers& operator=( VkImageSubresourceLayers const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageSubresourceLayers ) );
+      *reinterpret_cast<VkImageSubresourceLayers*>(this) = rhs;
       return *this;
     }
 
@@ -20743,12 +20752,12 @@
 
     BufferImageCopy( VkBufferImageCopy const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BufferImageCopy ) );
+      *reinterpret_cast<VkBufferImageCopy*>(this) = rhs;
     }
 
     BufferImageCopy& operator=( VkBufferImageCopy const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BufferImageCopy ) );
+      *reinterpret_cast<VkBufferImageCopy*>(this) = rhs;
       return *this;
     }
 
@@ -20842,12 +20851,12 @@
 
     BufferMemoryBarrier( VkBufferMemoryBarrier const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BufferMemoryBarrier ) );
+      *reinterpret_cast<VkBufferMemoryBarrier*>(this) = rhs;
     }
 
     BufferMemoryBarrier& operator=( VkBufferMemoryBarrier const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BufferMemoryBarrier ) );
+      *reinterpret_cast<VkBufferMemoryBarrier*>(this) = rhs;
       return *this;
     }
 
@@ -20950,12 +20959,12 @@
 
     BufferMemoryRequirementsInfo2( VkBufferMemoryRequirementsInfo2 const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BufferMemoryRequirementsInfo2 ) );
+      *reinterpret_cast<VkBufferMemoryRequirementsInfo2*>(this) = rhs;
     }
 
     BufferMemoryRequirementsInfo2& operator=( VkBufferMemoryRequirementsInfo2 const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BufferMemoryRequirementsInfo2 ) );
+      *reinterpret_cast<VkBufferMemoryRequirementsInfo2*>(this) = rhs;
       return *this;
     }
 
@@ -21018,12 +21027,12 @@
 
     BufferViewCreateInfo( VkBufferViewCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BufferViewCreateInfo ) );
+      *reinterpret_cast<VkBufferViewCreateInfo*>(this) = rhs;
     }
 
     BufferViewCreateInfo& operator=( VkBufferViewCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( BufferViewCreateInfo ) );
+      *reinterpret_cast<VkBufferViewCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -21110,12 +21119,12 @@
 
     CalibratedTimestampInfoEXT( VkCalibratedTimestampInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( CalibratedTimestampInfoEXT ) );
+      *reinterpret_cast<VkCalibratedTimestampInfoEXT*>(this) = rhs;
     }
 
     CalibratedTimestampInfoEXT& operator=( VkCalibratedTimestampInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( CalibratedTimestampInfoEXT ) );
+      *reinterpret_cast<VkCalibratedTimestampInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -21257,12 +21266,12 @@
 
     ClearDepthStencilValue( VkClearDepthStencilValue const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ClearDepthStencilValue ) );
+      *reinterpret_cast<VkClearDepthStencilValue*>(this) = rhs;
     }
 
     ClearDepthStencilValue& operator=( VkClearDepthStencilValue const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ClearDepthStencilValue ) );
+      *reinterpret_cast<VkClearDepthStencilValue*>(this) = rhs;
       return *this;
     }
 
@@ -21359,12 +21368,12 @@
 
     ClearAttachment( VkClearAttachment const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ClearAttachment ) );
+      *reinterpret_cast<VkClearAttachment*>(this) = rhs;
     }
 
     ClearAttachment& operator=( VkClearAttachment const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ClearAttachment ) );
+      *reinterpret_cast<VkClearAttachment*>(this) = rhs;
       return *this;
     }
 
@@ -21414,12 +21423,12 @@
 
     ClearRect( VkClearRect const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ClearRect ) );
+      *reinterpret_cast<VkClearRect*>(this) = rhs;
     }
 
     ClearRect& operator=( VkClearRect const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ClearRect ) );
+      *reinterpret_cast<VkClearRect*>(this) = rhs;
       return *this;
     }
 
@@ -21481,12 +21490,12 @@
 
     IndirectCommandsTokenNVX( VkIndirectCommandsTokenNVX const & rhs )
     {
-      memcpy( this, &rhs, sizeof( IndirectCommandsTokenNVX ) );
+      *reinterpret_cast<VkIndirectCommandsTokenNVX*>(this) = rhs;
     }
 
     IndirectCommandsTokenNVX& operator=( VkIndirectCommandsTokenNVX const & rhs )
     {
-      memcpy( this, &rhs, sizeof( IndirectCommandsTokenNVX ) );
+      *reinterpret_cast<VkIndirectCommandsTokenNVX*>(this) = rhs;
       return *this;
     }
 
@@ -21562,12 +21571,12 @@
 
     CmdProcessCommandsInfoNVX( VkCmdProcessCommandsInfoNVX const & rhs )
     {
-      memcpy( this, &rhs, sizeof( CmdProcessCommandsInfoNVX ) );
+      *reinterpret_cast<VkCmdProcessCommandsInfoNVX*>(this) = rhs;
     }
 
     CmdProcessCommandsInfoNVX& operator=( VkCmdProcessCommandsInfoNVX const & rhs )
     {
-      memcpy( this, &rhs, sizeof( CmdProcessCommandsInfoNVX ) );
+      *reinterpret_cast<VkCmdProcessCommandsInfoNVX*>(this) = rhs;
       return *this;
     }
 
@@ -21698,12 +21707,12 @@
 
     CmdReserveSpaceForCommandsInfoNVX( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
     {
-      memcpy( this, &rhs, sizeof( CmdReserveSpaceForCommandsInfoNVX ) );
+      *reinterpret_cast<VkCmdReserveSpaceForCommandsInfoNVX*>(this) = rhs;
     }
 
     CmdReserveSpaceForCommandsInfoNVX& operator=( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
     {
-      memcpy( this, &rhs, sizeof( CmdReserveSpaceForCommandsInfoNVX ) );
+      *reinterpret_cast<VkCmdReserveSpaceForCommandsInfoNVX*>(this) = rhs;
       return *this;
     }
 
@@ -21778,12 +21787,12 @@
 
     CoarseSampleLocationNV( VkCoarseSampleLocationNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( CoarseSampleLocationNV ) );
+      *reinterpret_cast<VkCoarseSampleLocationNV*>(this) = rhs;
     }
 
     CoarseSampleLocationNV& operator=( VkCoarseSampleLocationNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( CoarseSampleLocationNV ) );
+      *reinterpret_cast<VkCoarseSampleLocationNV*>(this) = rhs;
       return *this;
     }
 
@@ -21847,12 +21856,12 @@
 
     CoarseSampleOrderCustomNV( VkCoarseSampleOrderCustomNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( CoarseSampleOrderCustomNV ) );
+      *reinterpret_cast<VkCoarseSampleOrderCustomNV*>(this) = rhs;
     }
 
     CoarseSampleOrderCustomNV& operator=( VkCoarseSampleOrderCustomNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( CoarseSampleOrderCustomNV ) );
+      *reinterpret_cast<VkCoarseSampleOrderCustomNV*>(this) = rhs;
       return *this;
     }
 
@@ -21922,12 +21931,12 @@
 
     CommandBufferAllocateInfo( VkCommandBufferAllocateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( CommandBufferAllocateInfo ) );
+      *reinterpret_cast<VkCommandBufferAllocateInfo*>(this) = rhs;
     }
 
     CommandBufferAllocateInfo& operator=( VkCommandBufferAllocateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( CommandBufferAllocateInfo ) );
+      *reinterpret_cast<VkCommandBufferAllocateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -22008,12 +22017,12 @@
 
     CommandBufferInheritanceInfo( VkCommandBufferInheritanceInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( CommandBufferInheritanceInfo ) );
+      *reinterpret_cast<VkCommandBufferInheritanceInfo*>(this) = rhs;
     }
 
     CommandBufferInheritanceInfo& operator=( VkCommandBufferInheritanceInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( CommandBufferInheritanceInfo ) );
+      *reinterpret_cast<VkCommandBufferInheritanceInfo*>(this) = rhs;
       return *this;
     }
 
@@ -22110,12 +22119,12 @@
 
     CommandBufferBeginInfo( VkCommandBufferBeginInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( CommandBufferBeginInfo ) );
+      *reinterpret_cast<VkCommandBufferBeginInfo*>(this) = rhs;
     }
 
     CommandBufferBeginInfo& operator=( VkCommandBufferBeginInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( CommandBufferBeginInfo ) );
+      *reinterpret_cast<VkCommandBufferBeginInfo*>(this) = rhs;
       return *this;
     }
 
@@ -22178,12 +22187,12 @@
 
     CommandBufferInheritanceConditionalRenderingInfoEXT( VkCommandBufferInheritanceConditionalRenderingInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( CommandBufferInheritanceConditionalRenderingInfoEXT ) );
+      *reinterpret_cast<VkCommandBufferInheritanceConditionalRenderingInfoEXT*>(this) = rhs;
     }
 
     CommandBufferInheritanceConditionalRenderingInfoEXT& operator=( VkCommandBufferInheritanceConditionalRenderingInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( CommandBufferInheritanceConditionalRenderingInfoEXT ) );
+      *reinterpret_cast<VkCommandBufferInheritanceConditionalRenderingInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -22240,12 +22249,12 @@
 
     CommandPoolCreateInfo( VkCommandPoolCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( CommandPoolCreateInfo ) );
+      *reinterpret_cast<VkCommandPoolCreateInfo*>(this) = rhs;
     }
 
     CommandPoolCreateInfo& operator=( VkCommandPoolCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( CommandPoolCreateInfo ) );
+      *reinterpret_cast<VkCommandPoolCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -22312,12 +22321,12 @@
 
     SpecializationMapEntry( VkSpecializationMapEntry const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SpecializationMapEntry ) );
+      *reinterpret_cast<VkSpecializationMapEntry*>(this) = rhs;
     }
 
     SpecializationMapEntry& operator=( VkSpecializationMapEntry const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SpecializationMapEntry ) );
+      *reinterpret_cast<VkSpecializationMapEntry*>(this) = rhs;
       return *this;
     }
 
@@ -22381,12 +22390,12 @@
 
     SpecializationInfo( VkSpecializationInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SpecializationInfo ) );
+      *reinterpret_cast<VkSpecializationInfo*>(this) = rhs;
     }
 
     SpecializationInfo& operator=( VkSpecializationInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SpecializationInfo ) );
+      *reinterpret_cast<VkSpecializationInfo*>(this) = rhs;
       return *this;
     }
 
@@ -22460,12 +22469,12 @@
 
     PipelineShaderStageCreateInfo( VkPipelineShaderStageCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineShaderStageCreateInfo ) );
+      *reinterpret_cast<VkPipelineShaderStageCreateInfo*>(this) = rhs;
     }
 
     PipelineShaderStageCreateInfo& operator=( VkPipelineShaderStageCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineShaderStageCreateInfo ) );
+      *reinterpret_cast<VkPipelineShaderStageCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -22560,12 +22569,12 @@
 
     ComputePipelineCreateInfo( VkComputePipelineCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ComputePipelineCreateInfo ) );
+      *reinterpret_cast<VkComputePipelineCreateInfo*>(this) = rhs;
     }
 
     ComputePipelineCreateInfo& operator=( VkComputePipelineCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ComputePipelineCreateInfo ) );
+      *reinterpret_cast<VkComputePipelineCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -22656,12 +22665,12 @@
 
     ConditionalRenderingBeginInfoEXT( VkConditionalRenderingBeginInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ConditionalRenderingBeginInfoEXT ) );
+      *reinterpret_cast<VkConditionalRenderingBeginInfoEXT*>(this) = rhs;
     }
 
     ConditionalRenderingBeginInfoEXT& operator=( VkConditionalRenderingBeginInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ConditionalRenderingBeginInfoEXT ) );
+      *reinterpret_cast<VkConditionalRenderingBeginInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -22738,12 +22747,12 @@
 
     ConformanceVersionKHR( VkConformanceVersionKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ConformanceVersionKHR ) );
+      *reinterpret_cast<VkConformanceVersionKHR*>(this) = rhs;
     }
 
     ConformanceVersionKHR& operator=( VkConformanceVersionKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ConformanceVersionKHR ) );
+      *reinterpret_cast<VkConformanceVersionKHR*>(this) = rhs;
       return *this;
     }
 
@@ -22823,12 +22832,12 @@
 
     CooperativeMatrixPropertiesNV( VkCooperativeMatrixPropertiesNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( CooperativeMatrixPropertiesNV ) );
+      *reinterpret_cast<VkCooperativeMatrixPropertiesNV*>(this) = rhs;
     }
 
     CooperativeMatrixPropertiesNV& operator=( VkCooperativeMatrixPropertiesNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( CooperativeMatrixPropertiesNV ) );
+      *reinterpret_cast<VkCooperativeMatrixPropertiesNV*>(this) = rhs;
       return *this;
     }
 
@@ -22951,12 +22960,12 @@
 
     CopyDescriptorSet( VkCopyDescriptorSet const & rhs )
     {
-      memcpy( this, &rhs, sizeof( CopyDescriptorSet ) );
+      *reinterpret_cast<VkCopyDescriptorSet*>(this) = rhs;
     }
 
     CopyDescriptorSet& operator=( VkCopyDescriptorSet const & rhs )
     {
-      memcpy( this, &rhs, sizeof( CopyDescriptorSet ) );
+      *reinterpret_cast<VkCopyDescriptorSet*>(this) = rhs;
       return *this;
     }
 
@@ -23066,12 +23075,12 @@
 
     D3D12FenceSubmitInfoKHR( VkD3D12FenceSubmitInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( D3D12FenceSubmitInfoKHR ) );
+      *reinterpret_cast<VkD3D12FenceSubmitInfoKHR*>(this) = rhs;
     }
 
     D3D12FenceSubmitInfoKHR& operator=( VkD3D12FenceSubmitInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( D3D12FenceSubmitInfoKHR ) );
+      *reinterpret_cast<VkD3D12FenceSubmitInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -23154,12 +23163,12 @@
 
     DebugMarkerMarkerInfoEXT( VkDebugMarkerMarkerInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DebugMarkerMarkerInfoEXT ) );
+      *reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>(this) = rhs;
     }
 
     DebugMarkerMarkerInfoEXT& operator=( VkDebugMarkerMarkerInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DebugMarkerMarkerInfoEXT ) );
+      *reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -23226,12 +23235,12 @@
 
     DebugMarkerObjectNameInfoEXT( VkDebugMarkerObjectNameInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DebugMarkerObjectNameInfoEXT ) );
+      *reinterpret_cast<VkDebugMarkerObjectNameInfoEXT*>(this) = rhs;
     }
 
     DebugMarkerObjectNameInfoEXT& operator=( VkDebugMarkerObjectNameInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DebugMarkerObjectNameInfoEXT ) );
+      *reinterpret_cast<VkDebugMarkerObjectNameInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -23310,12 +23319,12 @@
 
     DebugMarkerObjectTagInfoEXT( VkDebugMarkerObjectTagInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DebugMarkerObjectTagInfoEXT ) );
+      *reinterpret_cast<VkDebugMarkerObjectTagInfoEXT*>(this) = rhs;
     }
 
     DebugMarkerObjectTagInfoEXT& operator=( VkDebugMarkerObjectTagInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DebugMarkerObjectTagInfoEXT ) );
+      *reinterpret_cast<VkDebugMarkerObjectTagInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -23406,12 +23415,12 @@
 
     DebugReportCallbackCreateInfoEXT( VkDebugReportCallbackCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DebugReportCallbackCreateInfoEXT ) );
+      *reinterpret_cast<VkDebugReportCallbackCreateInfoEXT*>(this) = rhs;
     }
 
     DebugReportCallbackCreateInfoEXT& operator=( VkDebugReportCallbackCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DebugReportCallbackCreateInfoEXT ) );
+      *reinterpret_cast<VkDebugReportCallbackCreateInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -23485,12 +23494,12 @@
 
     DebugUtilsLabelEXT( VkDebugUtilsLabelEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DebugUtilsLabelEXT ) );
+      *reinterpret_cast<VkDebugUtilsLabelEXT*>(this) = rhs;
     }
 
     DebugUtilsLabelEXT& operator=( VkDebugUtilsLabelEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DebugUtilsLabelEXT ) );
+      *reinterpret_cast<VkDebugUtilsLabelEXT*>(this) = rhs;
       return *this;
     }
 
@@ -23557,12 +23566,12 @@
 
     DebugUtilsObjectNameInfoEXT( VkDebugUtilsObjectNameInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DebugUtilsObjectNameInfoEXT ) );
+      *reinterpret_cast<VkDebugUtilsObjectNameInfoEXT*>(this) = rhs;
     }
 
     DebugUtilsObjectNameInfoEXT& operator=( VkDebugUtilsObjectNameInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DebugUtilsObjectNameInfoEXT ) );
+      *reinterpret_cast<VkDebugUtilsObjectNameInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -23651,12 +23660,12 @@
 
     DebugUtilsMessengerCallbackDataEXT( VkDebugUtilsMessengerCallbackDataEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DebugUtilsMessengerCallbackDataEXT ) );
+      *reinterpret_cast<VkDebugUtilsMessengerCallbackDataEXT*>(this) = rhs;
     }
 
     DebugUtilsMessengerCallbackDataEXT& operator=( VkDebugUtilsMessengerCallbackDataEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DebugUtilsMessengerCallbackDataEXT ) );
+      *reinterpret_cast<VkDebugUtilsMessengerCallbackDataEXT*>(this) = rhs;
       return *this;
     }
 
@@ -23791,12 +23800,12 @@
 
     DebugUtilsMessengerCreateInfoEXT( VkDebugUtilsMessengerCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DebugUtilsMessengerCreateInfoEXT ) );
+      *reinterpret_cast<VkDebugUtilsMessengerCreateInfoEXT*>(this) = rhs;
     }
 
     DebugUtilsMessengerCreateInfoEXT& operator=( VkDebugUtilsMessengerCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DebugUtilsMessengerCreateInfoEXT ) );
+      *reinterpret_cast<VkDebugUtilsMessengerCreateInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -23891,12 +23900,12 @@
 
     DebugUtilsObjectTagInfoEXT( VkDebugUtilsObjectTagInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DebugUtilsObjectTagInfoEXT ) );
+      *reinterpret_cast<VkDebugUtilsObjectTagInfoEXT*>(this) = rhs;
     }
 
     DebugUtilsObjectTagInfoEXT& operator=( VkDebugUtilsObjectTagInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DebugUtilsObjectTagInfoEXT ) );
+      *reinterpret_cast<VkDebugUtilsObjectTagInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -23983,12 +23992,12 @@
 
     DedicatedAllocationBufferCreateInfoNV( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DedicatedAllocationBufferCreateInfoNV ) );
+      *reinterpret_cast<VkDedicatedAllocationBufferCreateInfoNV*>(this) = rhs;
     }
 
     DedicatedAllocationBufferCreateInfoNV& operator=( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DedicatedAllocationBufferCreateInfoNV ) );
+      *reinterpret_cast<VkDedicatedAllocationBufferCreateInfoNV*>(this) = rhs;
       return *this;
     }
 
@@ -24043,12 +24052,12 @@
 
     DedicatedAllocationImageCreateInfoNV( VkDedicatedAllocationImageCreateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DedicatedAllocationImageCreateInfoNV ) );
+      *reinterpret_cast<VkDedicatedAllocationImageCreateInfoNV*>(this) = rhs;
     }
 
     DedicatedAllocationImageCreateInfoNV& operator=( VkDedicatedAllocationImageCreateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DedicatedAllocationImageCreateInfoNV ) );
+      *reinterpret_cast<VkDedicatedAllocationImageCreateInfoNV*>(this) = rhs;
       return *this;
     }
 
@@ -24105,12 +24114,12 @@
 
     DedicatedAllocationMemoryAllocateInfoNV( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DedicatedAllocationMemoryAllocateInfoNV ) );
+      *reinterpret_cast<VkDedicatedAllocationMemoryAllocateInfoNV*>(this) = rhs;
     }
 
     DedicatedAllocationMemoryAllocateInfoNV& operator=( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DedicatedAllocationMemoryAllocateInfoNV ) );
+      *reinterpret_cast<VkDedicatedAllocationMemoryAllocateInfoNV*>(this) = rhs;
       return *this;
     }
 
@@ -24177,12 +24186,12 @@
 
     DescriptorBufferInfo( VkDescriptorBufferInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DescriptorBufferInfo ) );
+      *reinterpret_cast<VkDescriptorBufferInfo*>(this) = rhs;
     }
 
     DescriptorBufferInfo& operator=( VkDescriptorBufferInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DescriptorBufferInfo ) );
+      *reinterpret_cast<VkDescriptorBufferInfo*>(this) = rhs;
       return *this;
     }
 
@@ -24244,12 +24253,12 @@
 
     DescriptorImageInfo( VkDescriptorImageInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DescriptorImageInfo ) );
+      *reinterpret_cast<VkDescriptorImageInfo*>(this) = rhs;
     }
 
     DescriptorImageInfo& operator=( VkDescriptorImageInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DescriptorImageInfo ) );
+      *reinterpret_cast<VkDescriptorImageInfo*>(this) = rhs;
       return *this;
     }
 
@@ -24309,12 +24318,12 @@
 
     DescriptorPoolSize( VkDescriptorPoolSize const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DescriptorPoolSize ) );
+      *reinterpret_cast<VkDescriptorPoolSize*>(this) = rhs;
     }
 
     DescriptorPoolSize& operator=( VkDescriptorPoolSize const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DescriptorPoolSize ) );
+      *reinterpret_cast<VkDescriptorPoolSize*>(this) = rhs;
       return *this;
     }
 
@@ -24370,12 +24379,12 @@
 
     DescriptorPoolCreateInfo( VkDescriptorPoolCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DescriptorPoolCreateInfo ) );
+      *reinterpret_cast<VkDescriptorPoolCreateInfo*>(this) = rhs;
     }
 
     DescriptorPoolCreateInfo& operator=( VkDescriptorPoolCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DescriptorPoolCreateInfo ) );
+      *reinterpret_cast<VkDescriptorPoolCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -24454,12 +24463,12 @@
 
     DescriptorPoolInlineUniformBlockCreateInfoEXT( VkDescriptorPoolInlineUniformBlockCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DescriptorPoolInlineUniformBlockCreateInfoEXT ) );
+      *reinterpret_cast<VkDescriptorPoolInlineUniformBlockCreateInfoEXT*>(this) = rhs;
     }
 
     DescriptorPoolInlineUniformBlockCreateInfoEXT& operator=( VkDescriptorPoolInlineUniformBlockCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DescriptorPoolInlineUniformBlockCreateInfoEXT ) );
+      *reinterpret_cast<VkDescriptorPoolInlineUniformBlockCreateInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -24518,12 +24527,12 @@
 
     DescriptorSetAllocateInfo( VkDescriptorSetAllocateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DescriptorSetAllocateInfo ) );
+      *reinterpret_cast<VkDescriptorSetAllocateInfo*>(this) = rhs;
     }
 
     DescriptorSetAllocateInfo& operator=( VkDescriptorSetAllocateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DescriptorSetAllocateInfo ) );
+      *reinterpret_cast<VkDescriptorSetAllocateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -24602,12 +24611,12 @@
 
     DescriptorSetLayoutBinding( VkDescriptorSetLayoutBinding const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DescriptorSetLayoutBinding ) );
+      *reinterpret_cast<VkDescriptorSetLayoutBinding*>(this) = rhs;
     }
 
     DescriptorSetLayoutBinding& operator=( VkDescriptorSetLayoutBinding const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DescriptorSetLayoutBinding ) );
+      *reinterpret_cast<VkDescriptorSetLayoutBinding*>(this) = rhs;
       return *this;
     }
 
@@ -24683,12 +24692,12 @@
 
     DescriptorSetLayoutBindingFlagsCreateInfoEXT( VkDescriptorSetLayoutBindingFlagsCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DescriptorSetLayoutBindingFlagsCreateInfoEXT ) );
+      *reinterpret_cast<VkDescriptorSetLayoutBindingFlagsCreateInfoEXT*>(this) = rhs;
     }
 
     DescriptorSetLayoutBindingFlagsCreateInfoEXT& operator=( VkDescriptorSetLayoutBindingFlagsCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DescriptorSetLayoutBindingFlagsCreateInfoEXT ) );
+      *reinterpret_cast<VkDescriptorSetLayoutBindingFlagsCreateInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -24755,12 +24764,12 @@
 
     DescriptorSetLayoutCreateInfo( VkDescriptorSetLayoutCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DescriptorSetLayoutCreateInfo ) );
+      *reinterpret_cast<VkDescriptorSetLayoutCreateInfo*>(this) = rhs;
     }
 
     DescriptorSetLayoutCreateInfo& operator=( VkDescriptorSetLayoutCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DescriptorSetLayoutCreateInfo ) );
+      *reinterpret_cast<VkDescriptorSetLayoutCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -24866,12 +24875,12 @@
 
     DescriptorSetVariableDescriptorCountAllocateInfoEXT( VkDescriptorSetVariableDescriptorCountAllocateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DescriptorSetVariableDescriptorCountAllocateInfoEXT ) );
+      *reinterpret_cast<VkDescriptorSetVariableDescriptorCountAllocateInfoEXT*>(this) = rhs;
     }
 
     DescriptorSetVariableDescriptorCountAllocateInfoEXT& operator=( VkDescriptorSetVariableDescriptorCountAllocateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DescriptorSetVariableDescriptorCountAllocateInfoEXT ) );
+      *reinterpret_cast<VkDescriptorSetVariableDescriptorCountAllocateInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -24977,12 +24986,12 @@
 
     DescriptorUpdateTemplateEntry( VkDescriptorUpdateTemplateEntry const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateEntry ) );
+      *reinterpret_cast<VkDescriptorUpdateTemplateEntry*>(this) = rhs;
     }
 
     DescriptorUpdateTemplateEntry& operator=( VkDescriptorUpdateTemplateEntry const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateEntry ) );
+      *reinterpret_cast<VkDescriptorUpdateTemplateEntry*>(this) = rhs;
       return *this;
     }
 
@@ -25078,12 +25087,12 @@
 
     DescriptorUpdateTemplateCreateInfo( VkDescriptorUpdateTemplateCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateCreateInfo ) );
+      *reinterpret_cast<VkDescriptorUpdateTemplateCreateInfo*>(this) = rhs;
     }
 
     DescriptorUpdateTemplateCreateInfo& operator=( VkDescriptorUpdateTemplateCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateCreateInfo ) );
+      *reinterpret_cast<VkDescriptorUpdateTemplateCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -25200,12 +25209,12 @@
 
     DeviceQueueCreateInfo( VkDeviceQueueCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DeviceQueueCreateInfo ) );
+      *reinterpret_cast<VkDeviceQueueCreateInfo*>(this) = rhs;
     }
 
     DeviceQueueCreateInfo& operator=( VkDeviceQueueCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DeviceQueueCreateInfo ) );
+      *reinterpret_cast<VkDeviceQueueCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -25392,12 +25401,12 @@
 
     PhysicalDeviceFeatures( VkPhysicalDeviceFeatures const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures ) );
+      *reinterpret_cast<VkPhysicalDeviceFeatures*>(this) = rhs;
     }
 
     PhysicalDeviceFeatures& operator=( VkPhysicalDeviceFeatures const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures ) );
+      *reinterpret_cast<VkPhysicalDeviceFeatures*>(this) = rhs;
       return *this;
     }
 
@@ -25885,12 +25894,12 @@
 
     DeviceCreateInfo( VkDeviceCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DeviceCreateInfo ) );
+      *reinterpret_cast<VkDeviceCreateInfo*>(this) = rhs;
     }
 
     DeviceCreateInfo& operator=( VkDeviceCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DeviceCreateInfo ) );
+      *reinterpret_cast<VkDeviceCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -26001,12 +26010,12 @@
 
     DeviceEventInfoEXT( VkDeviceEventInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DeviceEventInfoEXT ) );
+      *reinterpret_cast<VkDeviceEventInfoEXT*>(this) = rhs;
     }
 
     DeviceEventInfoEXT& operator=( VkDeviceEventInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DeviceEventInfoEXT ) );
+      *reinterpret_cast<VkDeviceEventInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -26061,12 +26070,12 @@
 
     DeviceGeneratedCommandsFeaturesNVX( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsFeaturesNVX ) );
+      *reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>(this) = rhs;
     }
 
     DeviceGeneratedCommandsFeaturesNVX& operator=( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsFeaturesNVX ) );
+      *reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>(this) = rhs;
       return *this;
     }
 
@@ -26129,12 +26138,12 @@
 
     DeviceGeneratedCommandsLimitsNVX( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsLimitsNVX ) );
+      *reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>(this) = rhs;
     }
 
     DeviceGeneratedCommandsLimitsNVX& operator=( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsLimitsNVX ) );
+      *reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>(this) = rhs;
       return *this;
     }
 
@@ -26223,12 +26232,12 @@
 
     DeviceGroupBindSparseInfo( VkDeviceGroupBindSparseInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DeviceGroupBindSparseInfo ) );
+      *reinterpret_cast<VkDeviceGroupBindSparseInfo*>(this) = rhs;
     }
 
     DeviceGroupBindSparseInfo& operator=( VkDeviceGroupBindSparseInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DeviceGroupBindSparseInfo ) );
+      *reinterpret_cast<VkDeviceGroupBindSparseInfo*>(this) = rhs;
       return *this;
     }
 
@@ -26291,12 +26300,12 @@
 
     DeviceGroupCommandBufferBeginInfo( VkDeviceGroupCommandBufferBeginInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DeviceGroupCommandBufferBeginInfo ) );
+      *reinterpret_cast<VkDeviceGroupCommandBufferBeginInfo*>(this) = rhs;
     }
 
     DeviceGroupCommandBufferBeginInfo& operator=( VkDeviceGroupCommandBufferBeginInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DeviceGroupCommandBufferBeginInfo ) );
+      *reinterpret_cast<VkDeviceGroupCommandBufferBeginInfo*>(this) = rhs;
       return *this;
     }
 
@@ -26353,12 +26362,12 @@
 
     DeviceGroupDeviceCreateInfo( VkDeviceGroupDeviceCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DeviceGroupDeviceCreateInfo ) );
+      *reinterpret_cast<VkDeviceGroupDeviceCreateInfo*>(this) = rhs;
     }
 
     DeviceGroupDeviceCreateInfo& operator=( VkDeviceGroupDeviceCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DeviceGroupDeviceCreateInfo ) );
+      *reinterpret_cast<VkDeviceGroupDeviceCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -26460,12 +26469,12 @@
 
     DeviceGroupPresentInfoKHR( VkDeviceGroupPresentInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DeviceGroupPresentInfoKHR ) );
+      *reinterpret_cast<VkDeviceGroupPresentInfoKHR*>(this) = rhs;
     }
 
     DeviceGroupPresentInfoKHR& operator=( VkDeviceGroupPresentInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DeviceGroupPresentInfoKHR ) );
+      *reinterpret_cast<VkDeviceGroupPresentInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -26540,12 +26549,12 @@
 
     DeviceGroupRenderPassBeginInfo( VkDeviceGroupRenderPassBeginInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DeviceGroupRenderPassBeginInfo ) );
+      *reinterpret_cast<VkDeviceGroupRenderPassBeginInfo*>(this) = rhs;
     }
 
     DeviceGroupRenderPassBeginInfo& operator=( VkDeviceGroupRenderPassBeginInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DeviceGroupRenderPassBeginInfo ) );
+      *reinterpret_cast<VkDeviceGroupRenderPassBeginInfo*>(this) = rhs;
       return *this;
     }
 
@@ -26626,12 +26635,12 @@
 
     DeviceGroupSubmitInfo( VkDeviceGroupSubmitInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DeviceGroupSubmitInfo ) );
+      *reinterpret_cast<VkDeviceGroupSubmitInfo*>(this) = rhs;
     }
 
     DeviceGroupSubmitInfo& operator=( VkDeviceGroupSubmitInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DeviceGroupSubmitInfo ) );
+      *reinterpret_cast<VkDeviceGroupSubmitInfo*>(this) = rhs;
       return *this;
     }
 
@@ -26726,12 +26735,12 @@
 
     DeviceGroupSwapchainCreateInfoKHR( VkDeviceGroupSwapchainCreateInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DeviceGroupSwapchainCreateInfoKHR ) );
+      *reinterpret_cast<VkDeviceGroupSwapchainCreateInfoKHR*>(this) = rhs;
     }
 
     DeviceGroupSwapchainCreateInfoKHR& operator=( VkDeviceGroupSwapchainCreateInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DeviceGroupSwapchainCreateInfoKHR ) );
+      *reinterpret_cast<VkDeviceGroupSwapchainCreateInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -26786,12 +26795,12 @@
 
     DeviceMemoryOverallocationCreateInfoAMD( VkDeviceMemoryOverallocationCreateInfoAMD const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DeviceMemoryOverallocationCreateInfoAMD ) );
+      *reinterpret_cast<VkDeviceMemoryOverallocationCreateInfoAMD*>(this) = rhs;
     }
 
     DeviceMemoryOverallocationCreateInfoAMD& operator=( VkDeviceMemoryOverallocationCreateInfoAMD const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DeviceMemoryOverallocationCreateInfoAMD ) );
+      *reinterpret_cast<VkDeviceMemoryOverallocationCreateInfoAMD*>(this) = rhs;
       return *this;
     }
 
@@ -26846,12 +26855,12 @@
 
     DeviceQueueGlobalPriorityCreateInfoEXT( VkDeviceQueueGlobalPriorityCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DeviceQueueGlobalPriorityCreateInfoEXT ) );
+      *reinterpret_cast<VkDeviceQueueGlobalPriorityCreateInfoEXT*>(this) = rhs;
     }
 
     DeviceQueueGlobalPriorityCreateInfoEXT& operator=( VkDeviceQueueGlobalPriorityCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DeviceQueueGlobalPriorityCreateInfoEXT ) );
+      *reinterpret_cast<VkDeviceQueueGlobalPriorityCreateInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -26910,12 +26919,12 @@
 
     DeviceQueueInfo2( VkDeviceQueueInfo2 const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DeviceQueueInfo2 ) );
+      *reinterpret_cast<VkDeviceQueueInfo2*>(this) = rhs;
     }
 
     DeviceQueueInfo2& operator=( VkDeviceQueueInfo2 const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DeviceQueueInfo2 ) );
+      *reinterpret_cast<VkDeviceQueueInfo2*>(this) = rhs;
       return *this;
     }
 
@@ -26990,12 +26999,12 @@
 
     DispatchIndirectCommand( VkDispatchIndirectCommand const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DispatchIndirectCommand ) );
+      *reinterpret_cast<VkDispatchIndirectCommand*>(this) = rhs;
     }
 
     DispatchIndirectCommand& operator=( VkDispatchIndirectCommand const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DispatchIndirectCommand ) );
+      *reinterpret_cast<VkDispatchIndirectCommand*>(this) = rhs;
       return *this;
     }
 
@@ -27053,12 +27062,12 @@
 
     DisplayEventInfoEXT( VkDisplayEventInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DisplayEventInfoEXT ) );
+      *reinterpret_cast<VkDisplayEventInfoEXT*>(this) = rhs;
     }
 
     DisplayEventInfoEXT& operator=( VkDisplayEventInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DisplayEventInfoEXT ) );
+      *reinterpret_cast<VkDisplayEventInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -27115,12 +27124,12 @@
 
     DisplayModeParametersKHR( VkDisplayModeParametersKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DisplayModeParametersKHR ) );
+      *reinterpret_cast<VkDisplayModeParametersKHR*>(this) = rhs;
     }
 
     DisplayModeParametersKHR& operator=( VkDisplayModeParametersKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DisplayModeParametersKHR ) );
+      *reinterpret_cast<VkDisplayModeParametersKHR*>(this) = rhs;
       return *this;
     }
 
@@ -27172,12 +27181,12 @@
 
     DisplayModeCreateInfoKHR( VkDisplayModeCreateInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DisplayModeCreateInfoKHR ) );
+      *reinterpret_cast<VkDisplayModeCreateInfoKHR*>(this) = rhs;
     }
 
     DisplayModeCreateInfoKHR& operator=( VkDisplayModeCreateInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DisplayModeCreateInfoKHR ) );
+      *reinterpret_cast<VkDisplayModeCreateInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -27411,12 +27420,12 @@
 
     DisplayPlaneInfo2KHR( VkDisplayPlaneInfo2KHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DisplayPlaneInfo2KHR ) );
+      *reinterpret_cast<VkDisplayPlaneInfo2KHR*>(this) = rhs;
     }
 
     DisplayPlaneInfo2KHR& operator=( VkDisplayPlaneInfo2KHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DisplayPlaneInfo2KHR ) );
+      *reinterpret_cast<VkDisplayPlaneInfo2KHR*>(this) = rhs;
       return *this;
     }
 
@@ -27540,12 +27549,12 @@
 
     DisplayPowerInfoEXT( VkDisplayPowerInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DisplayPowerInfoEXT ) );
+      *reinterpret_cast<VkDisplayPowerInfoEXT*>(this) = rhs;
     }
 
     DisplayPowerInfoEXT& operator=( VkDisplayPowerInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DisplayPowerInfoEXT ) );
+      *reinterpret_cast<VkDisplayPowerInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -27604,12 +27613,12 @@
 
     DisplayPresentInfoKHR( VkDisplayPresentInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DisplayPresentInfoKHR ) );
+      *reinterpret_cast<VkDisplayPresentInfoKHR*>(this) = rhs;
     }
 
     DisplayPresentInfoKHR& operator=( VkDisplayPresentInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DisplayPresentInfoKHR ) );
+      *reinterpret_cast<VkDisplayPresentInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -27765,12 +27774,12 @@
 
     DisplaySurfaceCreateInfoKHR( VkDisplaySurfaceCreateInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DisplaySurfaceCreateInfoKHR ) );
+      *reinterpret_cast<VkDisplaySurfaceCreateInfoKHR*>(this) = rhs;
     }
 
     DisplaySurfaceCreateInfoKHR& operator=( VkDisplaySurfaceCreateInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DisplaySurfaceCreateInfoKHR ) );
+      *reinterpret_cast<VkDisplaySurfaceCreateInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -27889,12 +27898,12 @@
 
     DrawIndexedIndirectCommand( VkDrawIndexedIndirectCommand const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DrawIndexedIndirectCommand ) );
+      *reinterpret_cast<VkDrawIndexedIndirectCommand*>(this) = rhs;
     }
 
     DrawIndexedIndirectCommand& operator=( VkDrawIndexedIndirectCommand const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DrawIndexedIndirectCommand ) );
+      *reinterpret_cast<VkDrawIndexedIndirectCommand*>(this) = rhs;
       return *this;
     }
 
@@ -27974,12 +27983,12 @@
 
     DrawIndirectCommand( VkDrawIndirectCommand const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DrawIndirectCommand ) );
+      *reinterpret_cast<VkDrawIndirectCommand*>(this) = rhs;
     }
 
     DrawIndirectCommand& operator=( VkDrawIndirectCommand const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DrawIndirectCommand ) );
+      *reinterpret_cast<VkDrawIndirectCommand*>(this) = rhs;
       return *this;
     }
 
@@ -28047,12 +28056,12 @@
 
     DrawMeshTasksIndirectCommandNV( VkDrawMeshTasksIndirectCommandNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DrawMeshTasksIndirectCommandNV ) );
+      *reinterpret_cast<VkDrawMeshTasksIndirectCommandNV*>(this) = rhs;
     }
 
     DrawMeshTasksIndirectCommandNV& operator=( VkDrawMeshTasksIndirectCommandNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( DrawMeshTasksIndirectCommandNV ) );
+      *reinterpret_cast<VkDrawMeshTasksIndirectCommandNV*>(this) = rhs;
       return *this;
     }
 
@@ -28167,12 +28176,12 @@
 
     EventCreateInfo( VkEventCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( EventCreateInfo ) );
+      *reinterpret_cast<VkEventCreateInfo*>(this) = rhs;
     }
 
     EventCreateInfo& operator=( VkEventCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( EventCreateInfo ) );
+      *reinterpret_cast<VkEventCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -28227,12 +28236,12 @@
 
     ExportFenceCreateInfo( VkExportFenceCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ExportFenceCreateInfo ) );
+      *reinterpret_cast<VkExportFenceCreateInfo*>(this) = rhs;
     }
 
     ExportFenceCreateInfo& operator=( VkExportFenceCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ExportFenceCreateInfo ) );
+      *reinterpret_cast<VkExportFenceCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -28292,12 +28301,12 @@
 
     ExportFenceWin32HandleInfoKHR( VkExportFenceWin32HandleInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ExportFenceWin32HandleInfoKHR ) );
+      *reinterpret_cast<VkExportFenceWin32HandleInfoKHR*>(this) = rhs;
     }
 
     ExportFenceWin32HandleInfoKHR& operator=( VkExportFenceWin32HandleInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ExportFenceWin32HandleInfoKHR ) );
+      *reinterpret_cast<VkExportFenceWin32HandleInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -28369,12 +28378,12 @@
 
     ExportMemoryAllocateInfo( VkExportMemoryAllocateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfo ) );
+      *reinterpret_cast<VkExportMemoryAllocateInfo*>(this) = rhs;
     }
 
     ExportMemoryAllocateInfo& operator=( VkExportMemoryAllocateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfo ) );
+      *reinterpret_cast<VkExportMemoryAllocateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -28429,12 +28438,12 @@
 
     ExportMemoryAllocateInfoNV( VkExportMemoryAllocateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoNV ) );
+      *reinterpret_cast<VkExportMemoryAllocateInfoNV*>(this) = rhs;
     }
 
     ExportMemoryAllocateInfoNV& operator=( VkExportMemoryAllocateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoNV ) );
+      *reinterpret_cast<VkExportMemoryAllocateInfoNV*>(this) = rhs;
       return *this;
     }
 
@@ -28494,12 +28503,12 @@
 
     ExportMemoryWin32HandleInfoKHR( VkExportMemoryWin32HandleInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoKHR ) );
+      *reinterpret_cast<VkExportMemoryWin32HandleInfoKHR*>(this) = rhs;
     }
 
     ExportMemoryWin32HandleInfoKHR& operator=( VkExportMemoryWin32HandleInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoKHR ) );
+      *reinterpret_cast<VkExportMemoryWin32HandleInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -28574,12 +28583,12 @@
 
     ExportMemoryWin32HandleInfoNV( VkExportMemoryWin32HandleInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoNV ) );
+      *reinterpret_cast<VkExportMemoryWin32HandleInfoNV*>(this) = rhs;
     }
 
     ExportMemoryWin32HandleInfoNV& operator=( VkExportMemoryWin32HandleInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoNV ) );
+      *reinterpret_cast<VkExportMemoryWin32HandleInfoNV*>(this) = rhs;
       return *this;
     }
 
@@ -28643,12 +28652,12 @@
 
     ExportSemaphoreCreateInfo( VkExportSemaphoreCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ExportSemaphoreCreateInfo ) );
+      *reinterpret_cast<VkExportSemaphoreCreateInfo*>(this) = rhs;
     }
 
     ExportSemaphoreCreateInfo& operator=( VkExportSemaphoreCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ExportSemaphoreCreateInfo ) );
+      *reinterpret_cast<VkExportSemaphoreCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -28708,12 +28717,12 @@
 
     ExportSemaphoreWin32HandleInfoKHR( VkExportSemaphoreWin32HandleInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ExportSemaphoreWin32HandleInfoKHR ) );
+      *reinterpret_cast<VkExportSemaphoreWin32HandleInfoKHR*>(this) = rhs;
     }
 
     ExportSemaphoreWin32HandleInfoKHR& operator=( VkExportSemaphoreWin32HandleInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ExportSemaphoreWin32HandleInfoKHR ) );
+      *reinterpret_cast<VkExportSemaphoreWin32HandleInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -28914,12 +28923,12 @@
 
     ExternalFormatANDROID( VkExternalFormatANDROID const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ExternalFormatANDROID ) );
+      *reinterpret_cast<VkExternalFormatANDROID*>(this) = rhs;
     }
 
     ExternalFormatANDROID& operator=( VkExternalFormatANDROID const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ExternalFormatANDROID ) );
+      *reinterpret_cast<VkExternalFormatANDROID*>(this) = rhs;
       return *this;
     }
 
@@ -29074,12 +29083,12 @@
 
     ExternalMemoryBufferCreateInfo( VkExternalMemoryBufferCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ExternalMemoryBufferCreateInfo ) );
+      *reinterpret_cast<VkExternalMemoryBufferCreateInfo*>(this) = rhs;
     }
 
     ExternalMemoryBufferCreateInfo& operator=( VkExternalMemoryBufferCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ExternalMemoryBufferCreateInfo ) );
+      *reinterpret_cast<VkExternalMemoryBufferCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -29134,12 +29143,12 @@
 
     ExternalMemoryImageCreateInfo( VkExternalMemoryImageCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfo ) );
+      *reinterpret_cast<VkExternalMemoryImageCreateInfo*>(this) = rhs;
     }
 
     ExternalMemoryImageCreateInfo& operator=( VkExternalMemoryImageCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfo ) );
+      *reinterpret_cast<VkExternalMemoryImageCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -29194,12 +29203,12 @@
 
     ExternalMemoryImageCreateInfoNV( VkExternalMemoryImageCreateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoNV ) );
+      *reinterpret_cast<VkExternalMemoryImageCreateInfoNV*>(this) = rhs;
     }
 
     ExternalMemoryImageCreateInfoNV& operator=( VkExternalMemoryImageCreateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoNV ) );
+      *reinterpret_cast<VkExternalMemoryImageCreateInfoNV*>(this) = rhs;
       return *this;
     }
 
@@ -29291,12 +29300,12 @@
 
     FenceCreateInfo( VkFenceCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( FenceCreateInfo ) );
+      *reinterpret_cast<VkFenceCreateInfo*>(this) = rhs;
     }
 
     FenceCreateInfo& operator=( VkFenceCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( FenceCreateInfo ) );
+      *reinterpret_cast<VkFenceCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -29353,12 +29362,12 @@
 
     FenceGetFdInfoKHR( VkFenceGetFdInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( FenceGetFdInfoKHR ) );
+      *reinterpret_cast<VkFenceGetFdInfoKHR*>(this) = rhs;
     }
 
     FenceGetFdInfoKHR& operator=( VkFenceGetFdInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( FenceGetFdInfoKHR ) );
+      *reinterpret_cast<VkFenceGetFdInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -29424,12 +29433,12 @@
 
     FenceGetWin32HandleInfoKHR( VkFenceGetWin32HandleInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( FenceGetWin32HandleInfoKHR ) );
+      *reinterpret_cast<VkFenceGetWin32HandleInfoKHR*>(this) = rhs;
     }
 
     FenceGetWin32HandleInfoKHR& operator=( VkFenceGetWin32HandleInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( FenceGetWin32HandleInfoKHR ) );
+      *reinterpret_cast<VkFenceGetWin32HandleInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -29603,12 +29612,12 @@
 
     FramebufferCreateInfo( VkFramebufferCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( FramebufferCreateInfo ) );
+      *reinterpret_cast<VkFramebufferCreateInfo*>(this) = rhs;
     }
 
     FramebufferCreateInfo& operator=( VkFramebufferCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( FramebufferCreateInfo ) );
+      *reinterpret_cast<VkFramebufferCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -29754,12 +29763,12 @@
 
     VertexInputBindingDescription( VkVertexInputBindingDescription const & rhs )
     {
-      memcpy( this, &rhs, sizeof( VertexInputBindingDescription ) );
+      *reinterpret_cast<VkVertexInputBindingDescription*>(this) = rhs;
     }
 
     VertexInputBindingDescription& operator=( VkVertexInputBindingDescription const & rhs )
     {
-      memcpy( this, &rhs, sizeof( VertexInputBindingDescription ) );
+      *reinterpret_cast<VkVertexInputBindingDescription*>(this) = rhs;
       return *this;
     }
 
@@ -29823,12 +29832,12 @@
 
     VertexInputAttributeDescription( VkVertexInputAttributeDescription const & rhs )
     {
-      memcpy( this, &rhs, sizeof( VertexInputAttributeDescription ) );
+      *reinterpret_cast<VkVertexInputAttributeDescription*>(this) = rhs;
     }
 
     VertexInputAttributeDescription& operator=( VkVertexInputAttributeDescription const & rhs )
     {
-      memcpy( this, &rhs, sizeof( VertexInputAttributeDescription ) );
+      *reinterpret_cast<VkVertexInputAttributeDescription*>(this) = rhs;
       return *this;
     }
 
@@ -29902,12 +29911,12 @@
 
     PipelineVertexInputStateCreateInfo( VkPipelineVertexInputStateCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineVertexInputStateCreateInfo ) );
+      *reinterpret_cast<VkPipelineVertexInputStateCreateInfo*>(this) = rhs;
     }
 
     PipelineVertexInputStateCreateInfo& operator=( VkPipelineVertexInputStateCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineVertexInputStateCreateInfo ) );
+      *reinterpret_cast<VkPipelineVertexInputStateCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -29998,12 +30007,12 @@
 
     PipelineInputAssemblyStateCreateInfo( VkPipelineInputAssemblyStateCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineInputAssemblyStateCreateInfo ) );
+      *reinterpret_cast<VkPipelineInputAssemblyStateCreateInfo*>(this) = rhs;
     }
 
     PipelineInputAssemblyStateCreateInfo& operator=( VkPipelineInputAssemblyStateCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineInputAssemblyStateCreateInfo ) );
+      *reinterpret_cast<VkPipelineInputAssemblyStateCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -30076,12 +30085,12 @@
 
     PipelineTessellationStateCreateInfo( VkPipelineTessellationStateCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineTessellationStateCreateInfo ) );
+      *reinterpret_cast<VkPipelineTessellationStateCreateInfo*>(this) = rhs;
     }
 
     PipelineTessellationStateCreateInfo& operator=( VkPipelineTessellationStateCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineTessellationStateCreateInfo ) );
+      *reinterpret_cast<VkPipelineTessellationStateCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -30154,12 +30163,12 @@
 
     Viewport( VkViewport const & rhs )
     {
-      memcpy( this, &rhs, sizeof( Viewport ) );
+      *reinterpret_cast<VkViewport*>(this) = rhs;
     }
 
     Viewport& operator=( VkViewport const & rhs )
     {
-      memcpy( this, &rhs, sizeof( Viewport ) );
+      *reinterpret_cast<VkViewport*>(this) = rhs;
       return *this;
     }
 
@@ -30249,12 +30258,12 @@
 
     PipelineViewportStateCreateInfo( VkPipelineViewportStateCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineViewportStateCreateInfo ) );
+      *reinterpret_cast<VkPipelineViewportStateCreateInfo*>(this) = rhs;
     }
 
     PipelineViewportStateCreateInfo& operator=( VkPipelineViewportStateCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineViewportStateCreateInfo ) );
+      *reinterpret_cast<VkPipelineViewportStateCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -30361,12 +30370,12 @@
 
     PipelineRasterizationStateCreateInfo( VkPipelineRasterizationStateCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineRasterizationStateCreateInfo ) );
+      *reinterpret_cast<VkPipelineRasterizationStateCreateInfo*>(this) = rhs;
     }
 
     PipelineRasterizationStateCreateInfo& operator=( VkPipelineRasterizationStateCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineRasterizationStateCreateInfo ) );
+      *reinterpret_cast<VkPipelineRasterizationStateCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -30513,12 +30522,12 @@
 
     PipelineMultisampleStateCreateInfo( VkPipelineMultisampleStateCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineMultisampleStateCreateInfo ) );
+      *reinterpret_cast<VkPipelineMultisampleStateCreateInfo*>(this) = rhs;
     }
 
     PipelineMultisampleStateCreateInfo& operator=( VkPipelineMultisampleStateCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineMultisampleStateCreateInfo ) );
+      *reinterpret_cast<VkPipelineMultisampleStateCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -30633,12 +30642,12 @@
 
     StencilOpState( VkStencilOpState const & rhs )
     {
-      memcpy( this, &rhs, sizeof( StencilOpState ) );
+      *reinterpret_cast<VkStencilOpState*>(this) = rhs;
     }
 
     StencilOpState& operator=( VkStencilOpState const & rhs )
     {
-      memcpy( this, &rhs, sizeof( StencilOpState ) );
+      *reinterpret_cast<VkStencilOpState*>(this) = rhs;
       return *this;
     }
 
@@ -30746,12 +30755,12 @@
 
     PipelineDepthStencilStateCreateInfo( VkPipelineDepthStencilStateCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineDepthStencilStateCreateInfo ) );
+      *reinterpret_cast<VkPipelineDepthStencilStateCreateInfo*>(this) = rhs;
     }
 
     PipelineDepthStencilStateCreateInfo& operator=( VkPipelineDepthStencilStateCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineDepthStencilStateCreateInfo ) );
+      *reinterpret_cast<VkPipelineDepthStencilStateCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -30892,12 +30901,12 @@
 
     PipelineColorBlendAttachmentState( VkPipelineColorBlendAttachmentState const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineColorBlendAttachmentState ) );
+      *reinterpret_cast<VkPipelineColorBlendAttachmentState*>(this) = rhs;
     }
 
     PipelineColorBlendAttachmentState& operator=( VkPipelineColorBlendAttachmentState const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineColorBlendAttachmentState ) );
+      *reinterpret_cast<VkPipelineColorBlendAttachmentState*>(this) = rhs;
       return *this;
     }
 
@@ -31006,12 +31015,12 @@
 
     PipelineColorBlendStateCreateInfo( VkPipelineColorBlendStateCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineColorBlendStateCreateInfo ) );
+      *reinterpret_cast<VkPipelineColorBlendStateCreateInfo*>(this) = rhs;
     }
 
     PipelineColorBlendStateCreateInfo& operator=( VkPipelineColorBlendStateCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineColorBlendStateCreateInfo ) );
+      *reinterpret_cast<VkPipelineColorBlendStateCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -31110,12 +31119,12 @@
 
     PipelineDynamicStateCreateInfo( VkPipelineDynamicStateCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineDynamicStateCreateInfo ) );
+      *reinterpret_cast<VkPipelineDynamicStateCreateInfo*>(this) = rhs;
     }
 
     PipelineDynamicStateCreateInfo& operator=( VkPipelineDynamicStateCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineDynamicStateCreateInfo ) );
+      *reinterpret_cast<VkPipelineDynamicStateCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -31218,12 +31227,12 @@
 
     GraphicsPipelineCreateInfo( VkGraphicsPipelineCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( GraphicsPipelineCreateInfo ) );
+      *reinterpret_cast<VkGraphicsPipelineCreateInfo*>(this) = rhs;
     }
 
     GraphicsPipelineCreateInfo& operator=( VkGraphicsPipelineCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( GraphicsPipelineCreateInfo ) );
+      *reinterpret_cast<VkGraphicsPipelineCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -31408,12 +31417,12 @@
 
     XYColorEXT( VkXYColorEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( XYColorEXT ) );
+      *reinterpret_cast<VkXYColorEXT*>(this) = rhs;
     }
 
     XYColorEXT& operator=( VkXYColorEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( XYColorEXT ) );
+      *reinterpret_cast<VkXYColorEXT*>(this) = rhs;
       return *this;
     }
 
@@ -31477,12 +31486,12 @@
 
     HdrMetadataEXT( VkHdrMetadataEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( HdrMetadataEXT ) );
+      *reinterpret_cast<VkHdrMetadataEXT*>(this) = rhs;
     }
 
     HdrMetadataEXT& operator=( VkHdrMetadataEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( HdrMetadataEXT ) );
+      *reinterpret_cast<VkHdrMetadataEXT*>(this) = rhs;
       return *this;
     }
 
@@ -31593,12 +31602,12 @@
 
     HeadlessSurfaceCreateInfoEXT( VkHeadlessSurfaceCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( HeadlessSurfaceCreateInfoEXT ) );
+      *reinterpret_cast<VkHeadlessSurfaceCreateInfoEXT*>(this) = rhs;
     }
 
     HeadlessSurfaceCreateInfoEXT& operator=( VkHeadlessSurfaceCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( HeadlessSurfaceCreateInfoEXT ) );
+      *reinterpret_cast<VkHeadlessSurfaceCreateInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -31656,12 +31665,12 @@
 
     IOSSurfaceCreateInfoMVK( VkIOSSurfaceCreateInfoMVK const & rhs )
     {
-      memcpy( this, &rhs, sizeof( IOSSurfaceCreateInfoMVK ) );
+      *reinterpret_cast<VkIOSSurfaceCreateInfoMVK*>(this) = rhs;
     }
 
     IOSSurfaceCreateInfoMVK& operator=( VkIOSSurfaceCreateInfoMVK const & rhs )
     {
-      memcpy( this, &rhs, sizeof( IOSSurfaceCreateInfoMVK ) );
+      *reinterpret_cast<VkIOSSurfaceCreateInfoMVK*>(this) = rhs;
       return *this;
     }
 
@@ -31732,12 +31741,12 @@
 
     ImageBlit( VkImageBlit const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageBlit ) );
+      *reinterpret_cast<VkImageBlit*>(this) = rhs;
     }
 
     ImageBlit& operator=( VkImageBlit const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageBlit ) );
+      *reinterpret_cast<VkImageBlit*>(this) = rhs;
       return *this;
     }
 
@@ -31811,12 +31820,12 @@
 
     ImageCopy( VkImageCopy const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageCopy ) );
+      *reinterpret_cast<VkImageCopy*>(this) = rhs;
     }
 
     ImageCopy& operator=( VkImageCopy const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageCopy ) );
+      *reinterpret_cast<VkImageCopy*>(this) = rhs;
       return *this;
     }
 
@@ -31914,12 +31923,12 @@
 
     ImageCreateInfo( VkImageCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageCreateInfo ) );
+      *reinterpret_cast<VkImageCreateInfo*>(this) = rhs;
     }
 
     ImageCreateInfo& operator=( VkImageCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageCreateInfo ) );
+      *reinterpret_cast<VkImageCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -32108,12 +32117,12 @@
 
     ImageDrmFormatModifierExplicitCreateInfoEXT( VkImageDrmFormatModifierExplicitCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageDrmFormatModifierExplicitCreateInfoEXT ) );
+      *reinterpret_cast<VkImageDrmFormatModifierExplicitCreateInfoEXT*>(this) = rhs;
     }
 
     ImageDrmFormatModifierExplicitCreateInfoEXT& operator=( VkImageDrmFormatModifierExplicitCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageDrmFormatModifierExplicitCreateInfoEXT ) );
+      *reinterpret_cast<VkImageDrmFormatModifierExplicitCreateInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -32186,12 +32195,12 @@
 
     ImageDrmFormatModifierListCreateInfoEXT( VkImageDrmFormatModifierListCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageDrmFormatModifierListCreateInfoEXT ) );
+      *reinterpret_cast<VkImageDrmFormatModifierListCreateInfoEXT*>(this) = rhs;
     }
 
     ImageDrmFormatModifierListCreateInfoEXT& operator=( VkImageDrmFormatModifierListCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageDrmFormatModifierListCreateInfoEXT ) );
+      *reinterpret_cast<VkImageDrmFormatModifierListCreateInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -32289,12 +32298,12 @@
 
     ImageFormatListCreateInfoKHR( VkImageFormatListCreateInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageFormatListCreateInfoKHR ) );
+      *reinterpret_cast<VkImageFormatListCreateInfoKHR*>(this) = rhs;
     }
 
     ImageFormatListCreateInfoKHR& operator=( VkImageFormatListCreateInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageFormatListCreateInfoKHR ) );
+      *reinterpret_cast<VkImageFormatListCreateInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -32398,12 +32407,12 @@
 
     ImageSubresourceRange( VkImageSubresourceRange const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageSubresourceRange ) );
+      *reinterpret_cast<VkImageSubresourceRange*>(this) = rhs;
     }
 
     ImageSubresourceRange& operator=( VkImageSubresourceRange const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageSubresourceRange ) );
+      *reinterpret_cast<VkImageSubresourceRange*>(this) = rhs;
       return *this;
     }
 
@@ -32491,12 +32500,12 @@
 
     ImageMemoryBarrier( VkImageMemoryBarrier const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageMemoryBarrier ) );
+      *reinterpret_cast<VkImageMemoryBarrier*>(this) = rhs;
     }
 
     ImageMemoryBarrier& operator=( VkImageMemoryBarrier const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageMemoryBarrier ) );
+      *reinterpret_cast<VkImageMemoryBarrier*>(this) = rhs;
       return *this;
     }
 
@@ -32607,12 +32616,12 @@
 
     ImageMemoryRequirementsInfo2( VkImageMemoryRequirementsInfo2 const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageMemoryRequirementsInfo2 ) );
+      *reinterpret_cast<VkImageMemoryRequirementsInfo2*>(this) = rhs;
     }
 
     ImageMemoryRequirementsInfo2& operator=( VkImageMemoryRequirementsInfo2 const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageMemoryRequirementsInfo2 ) );
+      *reinterpret_cast<VkImageMemoryRequirementsInfo2*>(this) = rhs;
       return *this;
     }
 
@@ -32670,12 +32679,12 @@
 
     ImagePipeSurfaceCreateInfoFUCHSIA( VkImagePipeSurfaceCreateInfoFUCHSIA const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImagePipeSurfaceCreateInfoFUCHSIA ) );
+      *reinterpret_cast<VkImagePipeSurfaceCreateInfoFUCHSIA*>(this) = rhs;
     }
 
     ImagePipeSurfaceCreateInfoFUCHSIA& operator=( VkImagePipeSurfaceCreateInfoFUCHSIA const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImagePipeSurfaceCreateInfoFUCHSIA ) );
+      *reinterpret_cast<VkImagePipeSurfaceCreateInfoFUCHSIA*>(this) = rhs;
       return *this;
     }
 
@@ -32739,12 +32748,12 @@
 
     ImagePlaneMemoryRequirementsInfo( VkImagePlaneMemoryRequirementsInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImagePlaneMemoryRequirementsInfo ) );
+      *reinterpret_cast<VkImagePlaneMemoryRequirementsInfo*>(this) = rhs;
     }
 
     ImagePlaneMemoryRequirementsInfo& operator=( VkImagePlaneMemoryRequirementsInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImagePlaneMemoryRequirementsInfo ) );
+      *reinterpret_cast<VkImagePlaneMemoryRequirementsInfo*>(this) = rhs;
       return *this;
     }
 
@@ -32807,12 +32816,12 @@
 
     ImageResolve( VkImageResolve const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageResolve ) );
+      *reinterpret_cast<VkImageResolve*>(this) = rhs;
     }
 
     ImageResolve& operator=( VkImageResolve const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageResolve ) );
+      *reinterpret_cast<VkImageResolve*>(this) = rhs;
       return *this;
     }
 
@@ -32886,12 +32895,12 @@
 
     ImageSparseMemoryRequirementsInfo2( VkImageSparseMemoryRequirementsInfo2 const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageSparseMemoryRequirementsInfo2 ) );
+      *reinterpret_cast<VkImageSparseMemoryRequirementsInfo2*>(this) = rhs;
     }
 
     ImageSparseMemoryRequirementsInfo2& operator=( VkImageSparseMemoryRequirementsInfo2 const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageSparseMemoryRequirementsInfo2 ) );
+      *reinterpret_cast<VkImageSparseMemoryRequirementsInfo2*>(this) = rhs;
       return *this;
     }
 
@@ -32946,12 +32955,12 @@
 
     ImageStencilUsageCreateInfoEXT( VkImageStencilUsageCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageStencilUsageCreateInfoEXT ) );
+      *reinterpret_cast<VkImageStencilUsageCreateInfoEXT*>(this) = rhs;
     }
 
     ImageStencilUsageCreateInfoEXT& operator=( VkImageStencilUsageCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageStencilUsageCreateInfoEXT ) );
+      *reinterpret_cast<VkImageStencilUsageCreateInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -33006,12 +33015,12 @@
 
     ImageSwapchainCreateInfoKHR( VkImageSwapchainCreateInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageSwapchainCreateInfoKHR ) );
+      *reinterpret_cast<VkImageSwapchainCreateInfoKHR*>(this) = rhs;
     }
 
     ImageSwapchainCreateInfoKHR& operator=( VkImageSwapchainCreateInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageSwapchainCreateInfoKHR ) );
+      *reinterpret_cast<VkImageSwapchainCreateInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -33066,12 +33075,12 @@
 
     ImageViewASTCDecodeModeEXT( VkImageViewASTCDecodeModeEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageViewASTCDecodeModeEXT ) );
+      *reinterpret_cast<VkImageViewASTCDecodeModeEXT*>(this) = rhs;
     }
 
     ImageViewASTCDecodeModeEXT& operator=( VkImageViewASTCDecodeModeEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageViewASTCDecodeModeEXT ) );
+      *reinterpret_cast<VkImageViewASTCDecodeModeEXT*>(this) = rhs;
       return *this;
     }
 
@@ -33136,12 +33145,12 @@
 
     ImageViewCreateInfo( VkImageViewCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageViewCreateInfo ) );
+      *reinterpret_cast<VkImageViewCreateInfo*>(this) = rhs;
     }
 
     ImageViewCreateInfo& operator=( VkImageViewCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageViewCreateInfo ) );
+      *reinterpret_cast<VkImageViewCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -33240,12 +33249,12 @@
 
     ImageViewHandleInfoNVX( VkImageViewHandleInfoNVX const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageViewHandleInfoNVX ) );
+      *reinterpret_cast<VkImageViewHandleInfoNVX*>(this) = rhs;
     }
 
     ImageViewHandleInfoNVX& operator=( VkImageViewHandleInfoNVX const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageViewHandleInfoNVX ) );
+      *reinterpret_cast<VkImageViewHandleInfoNVX*>(this) = rhs;
       return *this;
     }
 
@@ -33316,12 +33325,12 @@
 
     ImageViewUsageCreateInfo( VkImageViewUsageCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageViewUsageCreateInfo ) );
+      *reinterpret_cast<VkImageViewUsageCreateInfo*>(this) = rhs;
     }
 
     ImageViewUsageCreateInfo& operator=( VkImageViewUsageCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImageViewUsageCreateInfo ) );
+      *reinterpret_cast<VkImageViewUsageCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -33377,12 +33386,12 @@
 
     ImportAndroidHardwareBufferInfoANDROID( VkImportAndroidHardwareBufferInfoANDROID const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImportAndroidHardwareBufferInfoANDROID ) );
+      *reinterpret_cast<VkImportAndroidHardwareBufferInfoANDROID*>(this) = rhs;
     }
 
     ImportAndroidHardwareBufferInfoANDROID& operator=( VkImportAndroidHardwareBufferInfoANDROID const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImportAndroidHardwareBufferInfoANDROID ) );
+      *reinterpret_cast<VkImportAndroidHardwareBufferInfoANDROID*>(this) = rhs;
       return *this;
     }
 
@@ -33444,12 +33453,12 @@
 
     ImportFenceFdInfoKHR( VkImportFenceFdInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImportFenceFdInfoKHR ) );
+      *reinterpret_cast<VkImportFenceFdInfoKHR*>(this) = rhs;
     }
 
     ImportFenceFdInfoKHR& operator=( VkImportFenceFdInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImportFenceFdInfoKHR ) );
+      *reinterpret_cast<VkImportFenceFdInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -33537,12 +33546,12 @@
 
     ImportFenceWin32HandleInfoKHR( VkImportFenceWin32HandleInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImportFenceWin32HandleInfoKHR ) );
+      *reinterpret_cast<VkImportFenceWin32HandleInfoKHR*>(this) = rhs;
     }
 
     ImportFenceWin32HandleInfoKHR& operator=( VkImportFenceWin32HandleInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImportFenceWin32HandleInfoKHR ) );
+      *reinterpret_cast<VkImportFenceWin32HandleInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -33632,12 +33641,12 @@
 
     ImportMemoryFdInfoKHR( VkImportMemoryFdInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImportMemoryFdInfoKHR ) );
+      *reinterpret_cast<VkImportMemoryFdInfoKHR*>(this) = rhs;
     }
 
     ImportMemoryFdInfoKHR& operator=( VkImportMemoryFdInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImportMemoryFdInfoKHR ) );
+      *reinterpret_cast<VkImportMemoryFdInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -33702,12 +33711,12 @@
 
     ImportMemoryHostPointerInfoEXT( VkImportMemoryHostPointerInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImportMemoryHostPointerInfoEXT ) );
+      *reinterpret_cast<VkImportMemoryHostPointerInfoEXT*>(this) = rhs;
     }
 
     ImportMemoryHostPointerInfoEXT& operator=( VkImportMemoryHostPointerInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImportMemoryHostPointerInfoEXT ) );
+      *reinterpret_cast<VkImportMemoryHostPointerInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -33775,12 +33784,12 @@
 
     ImportMemoryWin32HandleInfoKHR( VkImportMemoryWin32HandleInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoKHR ) );
+      *reinterpret_cast<VkImportMemoryWin32HandleInfoKHR*>(this) = rhs;
     }
 
     ImportMemoryWin32HandleInfoKHR& operator=( VkImportMemoryWin32HandleInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoKHR ) );
+      *reinterpret_cast<VkImportMemoryWin32HandleInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -33855,12 +33864,12 @@
 
     ImportMemoryWin32HandleInfoNV( VkImportMemoryWin32HandleInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoNV ) );
+      *reinterpret_cast<VkImportMemoryWin32HandleInfoNV*>(this) = rhs;
     }
 
     ImportMemoryWin32HandleInfoNV& operator=( VkImportMemoryWin32HandleInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoNV ) );
+      *reinterpret_cast<VkImportMemoryWin32HandleInfoNV*>(this) = rhs;
       return *this;
     }
 
@@ -33930,12 +33939,12 @@
 
     ImportSemaphoreFdInfoKHR( VkImportSemaphoreFdInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImportSemaphoreFdInfoKHR ) );
+      *reinterpret_cast<VkImportSemaphoreFdInfoKHR*>(this) = rhs;
     }
 
     ImportSemaphoreFdInfoKHR& operator=( VkImportSemaphoreFdInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImportSemaphoreFdInfoKHR ) );
+      *reinterpret_cast<VkImportSemaphoreFdInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -34023,12 +34032,12 @@
 
     ImportSemaphoreWin32HandleInfoKHR( VkImportSemaphoreWin32HandleInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImportSemaphoreWin32HandleInfoKHR ) );
+      *reinterpret_cast<VkImportSemaphoreWin32HandleInfoKHR*>(this) = rhs;
     }
 
     ImportSemaphoreWin32HandleInfoKHR& operator=( VkImportSemaphoreWin32HandleInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ImportSemaphoreWin32HandleInfoKHR ) );
+      *reinterpret_cast<VkImportSemaphoreWin32HandleInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -34122,12 +34131,12 @@
 
     IndirectCommandsLayoutTokenNVX( VkIndirectCommandsLayoutTokenNVX const & rhs )
     {
-      memcpy( this, &rhs, sizeof( IndirectCommandsLayoutTokenNVX ) );
+      *reinterpret_cast<VkIndirectCommandsLayoutTokenNVX*>(this) = rhs;
     }
 
     IndirectCommandsLayoutTokenNVX& operator=( VkIndirectCommandsLayoutTokenNVX const & rhs )
     {
-      memcpy( this, &rhs, sizeof( IndirectCommandsLayoutTokenNVX ) );
+      *reinterpret_cast<VkIndirectCommandsLayoutTokenNVX*>(this) = rhs;
       return *this;
     }
 
@@ -34199,12 +34208,12 @@
 
     IndirectCommandsLayoutCreateInfoNVX( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
     {
-      memcpy( this, &rhs, sizeof( IndirectCommandsLayoutCreateInfoNVX ) );
+      *reinterpret_cast<VkIndirectCommandsLayoutCreateInfoNVX*>(this) = rhs;
     }
 
     IndirectCommandsLayoutCreateInfoNVX& operator=( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
     {
-      memcpy( this, &rhs, sizeof( IndirectCommandsLayoutCreateInfoNVX ) );
+      *reinterpret_cast<VkIndirectCommandsLayoutCreateInfoNVX*>(this) = rhs;
       return *this;
     }
 
@@ -34283,12 +34292,12 @@
 
     InitializePerformanceApiInfoINTEL( VkInitializePerformanceApiInfoINTEL const & rhs )
     {
-      memcpy( this, &rhs, sizeof( InitializePerformanceApiInfoINTEL ) );
+      *reinterpret_cast<VkInitializePerformanceApiInfoINTEL*>(this) = rhs;
     }
 
     InitializePerformanceApiInfoINTEL& operator=( VkInitializePerformanceApiInfoINTEL const & rhs )
     {
-      memcpy( this, &rhs, sizeof( InitializePerformanceApiInfoINTEL ) );
+      *reinterpret_cast<VkInitializePerformanceApiInfoINTEL*>(this) = rhs;
       return *this;
     }
 
@@ -34347,12 +34356,12 @@
 
     InputAttachmentAspectReference( VkInputAttachmentAspectReference const & rhs )
     {
-      memcpy( this, &rhs, sizeof( InputAttachmentAspectReference ) );
+      *reinterpret_cast<VkInputAttachmentAspectReference*>(this) = rhs;
     }
 
     InputAttachmentAspectReference& operator=( VkInputAttachmentAspectReference const & rhs )
     {
-      memcpy( this, &rhs, sizeof( InputAttachmentAspectReference ) );
+      *reinterpret_cast<VkInputAttachmentAspectReference*>(this) = rhs;
       return *this;
     }
 
@@ -34420,12 +34429,12 @@
 
     InstanceCreateInfo( VkInstanceCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( InstanceCreateInfo ) );
+      *reinterpret_cast<VkInstanceCreateInfo*>(this) = rhs;
     }
 
     InstanceCreateInfo& operator=( VkInstanceCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( InstanceCreateInfo ) );
+      *reinterpret_cast<VkInstanceCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -34555,12 +34564,12 @@
 
     MacOSSurfaceCreateInfoMVK( VkMacOSSurfaceCreateInfoMVK const & rhs )
     {
-      memcpy( this, &rhs, sizeof( MacOSSurfaceCreateInfoMVK ) );
+      *reinterpret_cast<VkMacOSSurfaceCreateInfoMVK*>(this) = rhs;
     }
 
     MacOSSurfaceCreateInfoMVK& operator=( VkMacOSSurfaceCreateInfoMVK const & rhs )
     {
-      memcpy( this, &rhs, sizeof( MacOSSurfaceCreateInfoMVK ) );
+      *reinterpret_cast<VkMacOSSurfaceCreateInfoMVK*>(this) = rhs;
       return *this;
     }
 
@@ -34628,12 +34637,12 @@
 
     MappedMemoryRange( VkMappedMemoryRange const & rhs )
     {
-      memcpy( this, &rhs, sizeof( MappedMemoryRange ) );
+      *reinterpret_cast<VkMappedMemoryRange*>(this) = rhs;
     }
 
     MappedMemoryRange& operator=( VkMappedMemoryRange const & rhs )
     {
-      memcpy( this, &rhs, sizeof( MappedMemoryRange ) );
+      *reinterpret_cast<VkMappedMemoryRange*>(this) = rhs;
       return *this;
     }
 
@@ -34706,12 +34715,12 @@
 
     MemoryAllocateFlagsInfo( VkMemoryAllocateFlagsInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( MemoryAllocateFlagsInfo ) );
+      *reinterpret_cast<VkMemoryAllocateFlagsInfo*>(this) = rhs;
     }
 
     MemoryAllocateFlagsInfo& operator=( VkMemoryAllocateFlagsInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( MemoryAllocateFlagsInfo ) );
+      *reinterpret_cast<VkMemoryAllocateFlagsInfo*>(this) = rhs;
       return *this;
     }
 
@@ -34776,12 +34785,12 @@
 
     MemoryAllocateInfo( VkMemoryAllocateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( MemoryAllocateInfo ) );
+      *reinterpret_cast<VkMemoryAllocateInfo*>(this) = rhs;
     }
 
     MemoryAllocateInfo& operator=( VkMemoryAllocateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( MemoryAllocateInfo ) );
+      *reinterpret_cast<VkMemoryAllocateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -34846,12 +34855,12 @@
 
     MemoryBarrier( VkMemoryBarrier const & rhs )
     {
-      memcpy( this, &rhs, sizeof( MemoryBarrier ) );
+      *reinterpret_cast<VkMemoryBarrier*>(this) = rhs;
     }
 
     MemoryBarrier& operator=( VkMemoryBarrier const & rhs )
     {
-      memcpy( this, &rhs, sizeof( MemoryBarrier ) );
+      *reinterpret_cast<VkMemoryBarrier*>(this) = rhs;
       return *this;
     }
 
@@ -34916,12 +34925,12 @@
 
     MemoryDedicatedAllocateInfo( VkMemoryDedicatedAllocateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( MemoryDedicatedAllocateInfo ) );
+      *reinterpret_cast<VkMemoryDedicatedAllocateInfo*>(this) = rhs;
     }
 
     MemoryDedicatedAllocateInfo& operator=( VkMemoryDedicatedAllocateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( MemoryDedicatedAllocateInfo ) );
+      *reinterpret_cast<VkMemoryDedicatedAllocateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -35053,12 +35062,12 @@
 
     MemoryGetAndroidHardwareBufferInfoANDROID( VkMemoryGetAndroidHardwareBufferInfoANDROID const & rhs )
     {
-      memcpy( this, &rhs, sizeof( MemoryGetAndroidHardwareBufferInfoANDROID ) );
+      *reinterpret_cast<VkMemoryGetAndroidHardwareBufferInfoANDROID*>(this) = rhs;
     }
 
     MemoryGetAndroidHardwareBufferInfoANDROID& operator=( VkMemoryGetAndroidHardwareBufferInfoANDROID const & rhs )
     {
-      memcpy( this, &rhs, sizeof( MemoryGetAndroidHardwareBufferInfoANDROID ) );
+      *reinterpret_cast<VkMemoryGetAndroidHardwareBufferInfoANDROID*>(this) = rhs;
       return *this;
     }
 
@@ -35116,12 +35125,12 @@
 
     MemoryGetFdInfoKHR( VkMemoryGetFdInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( MemoryGetFdInfoKHR ) );
+      *reinterpret_cast<VkMemoryGetFdInfoKHR*>(this) = rhs;
     }
 
     MemoryGetFdInfoKHR& operator=( VkMemoryGetFdInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( MemoryGetFdInfoKHR ) );
+      *reinterpret_cast<VkMemoryGetFdInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -35187,12 +35196,12 @@
 
     MemoryGetWin32HandleInfoKHR( VkMemoryGetWin32HandleInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( MemoryGetWin32HandleInfoKHR ) );
+      *reinterpret_cast<VkMemoryGetWin32HandleInfoKHR*>(this) = rhs;
     }
 
     MemoryGetWin32HandleInfoKHR& operator=( VkMemoryGetWin32HandleInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( MemoryGetWin32HandleInfoKHR ) );
+      *reinterpret_cast<VkMemoryGetWin32HandleInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -35317,12 +35326,12 @@
 
     MemoryPriorityAllocateInfoEXT( VkMemoryPriorityAllocateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( MemoryPriorityAllocateInfoEXT ) );
+      *reinterpret_cast<VkMemoryPriorityAllocateInfoEXT*>(this) = rhs;
     }
 
     MemoryPriorityAllocateInfoEXT& operator=( VkMemoryPriorityAllocateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( MemoryPriorityAllocateInfoEXT ) );
+      *reinterpret_cast<VkMemoryPriorityAllocateInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -35506,12 +35515,12 @@
 
     MetalSurfaceCreateInfoEXT( VkMetalSurfaceCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( MetalSurfaceCreateInfoEXT ) );
+      *reinterpret_cast<VkMetalSurfaceCreateInfoEXT*>(this) = rhs;
     }
 
     MetalSurfaceCreateInfoEXT& operator=( VkMetalSurfaceCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( MetalSurfaceCreateInfoEXT ) );
+      *reinterpret_cast<VkMetalSurfaceCreateInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -35624,12 +35633,12 @@
 
     ObjectTableCreateInfoNVX( VkObjectTableCreateInfoNVX const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ObjectTableCreateInfoNVX ) );
+      *reinterpret_cast<VkObjectTableCreateInfoNVX*>(this) = rhs;
     }
 
     ObjectTableCreateInfoNVX& operator=( VkObjectTableCreateInfoNVX const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ObjectTableCreateInfoNVX ) );
+      *reinterpret_cast<VkObjectTableCreateInfoNVX*>(this) = rhs;
       return *this;
     }
 
@@ -35750,12 +35759,12 @@
 
     ObjectTableEntryNVX( VkObjectTableEntryNVX const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ObjectTableEntryNVX ) );
+      *reinterpret_cast<VkObjectTableEntryNVX*>(this) = rhs;
     }
 
     ObjectTableEntryNVX& operator=( VkObjectTableEntryNVX const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ObjectTableEntryNVX ) );
+      *reinterpret_cast<VkObjectTableEntryNVX*>(this) = rhs;
       return *this;
     }
 
@@ -35820,12 +35829,12 @@
 
     ObjectTableDescriptorSetEntryNVX( VkObjectTableDescriptorSetEntryNVX const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ObjectTableDescriptorSetEntryNVX ) );
+      *reinterpret_cast<VkObjectTableDescriptorSetEntryNVX*>(this) = rhs;
     }
 
     ObjectTableDescriptorSetEntryNVX& operator=( VkObjectTableDescriptorSetEntryNVX const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ObjectTableDescriptorSetEntryNVX ) );
+      *reinterpret_cast<VkObjectTableDescriptorSetEntryNVX*>(this) = rhs;
       return *this;
     }
 
@@ -35906,12 +35915,12 @@
 
     ObjectTableIndexBufferEntryNVX( VkObjectTableIndexBufferEntryNVX const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ObjectTableIndexBufferEntryNVX ) );
+      *reinterpret_cast<VkObjectTableIndexBufferEntryNVX*>(this) = rhs;
     }
 
     ObjectTableIndexBufferEntryNVX& operator=( VkObjectTableIndexBufferEntryNVX const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ObjectTableIndexBufferEntryNVX ) );
+      *reinterpret_cast<VkObjectTableIndexBufferEntryNVX*>(this) = rhs;
       return *this;
     }
 
@@ -35988,12 +35997,12 @@
 
     ObjectTablePipelineEntryNVX( VkObjectTablePipelineEntryNVX const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ObjectTablePipelineEntryNVX ) );
+      *reinterpret_cast<VkObjectTablePipelineEntryNVX*>(this) = rhs;
     }
 
     ObjectTablePipelineEntryNVX& operator=( VkObjectTablePipelineEntryNVX const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ObjectTablePipelineEntryNVX ) );
+      *reinterpret_cast<VkObjectTablePipelineEntryNVX*>(this) = rhs;
       return *this;
     }
 
@@ -36066,12 +36075,12 @@
 
     ObjectTablePushConstantEntryNVX( VkObjectTablePushConstantEntryNVX const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ObjectTablePushConstantEntryNVX ) );
+      *reinterpret_cast<VkObjectTablePushConstantEntryNVX*>(this) = rhs;
     }
 
     ObjectTablePushConstantEntryNVX& operator=( VkObjectTablePushConstantEntryNVX const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ObjectTablePushConstantEntryNVX ) );
+      *reinterpret_cast<VkObjectTablePushConstantEntryNVX*>(this) = rhs;
       return *this;
     }
 
@@ -36148,12 +36157,12 @@
 
     ObjectTableVertexBufferEntryNVX( VkObjectTableVertexBufferEntryNVX const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ObjectTableVertexBufferEntryNVX ) );
+      *reinterpret_cast<VkObjectTableVertexBufferEntryNVX*>(this) = rhs;
     }
 
     ObjectTableVertexBufferEntryNVX& operator=( VkObjectTableVertexBufferEntryNVX const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ObjectTableVertexBufferEntryNVX ) );
+      *reinterpret_cast<VkObjectTableVertexBufferEntryNVX*>(this) = rhs;
       return *this;
     }
 
@@ -36245,12 +36254,12 @@
 
     PerformanceConfigurationAcquireInfoINTEL( VkPerformanceConfigurationAcquireInfoINTEL const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PerformanceConfigurationAcquireInfoINTEL ) );
+      *reinterpret_cast<VkPerformanceConfigurationAcquireInfoINTEL*>(this) = rhs;
     }
 
     PerformanceConfigurationAcquireInfoINTEL& operator=( VkPerformanceConfigurationAcquireInfoINTEL const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PerformanceConfigurationAcquireInfoINTEL ) );
+      *reinterpret_cast<VkPerformanceConfigurationAcquireInfoINTEL*>(this) = rhs;
       return *this;
     }
 
@@ -36305,12 +36314,12 @@
 
     PerformanceMarkerInfoINTEL( VkPerformanceMarkerInfoINTEL const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PerformanceMarkerInfoINTEL ) );
+      *reinterpret_cast<VkPerformanceMarkerInfoINTEL*>(this) = rhs;
     }
 
     PerformanceMarkerInfoINTEL& operator=( VkPerformanceMarkerInfoINTEL const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PerformanceMarkerInfoINTEL ) );
+      *reinterpret_cast<VkPerformanceMarkerInfoINTEL*>(this) = rhs;
       return *this;
     }
 
@@ -36369,12 +36378,12 @@
 
     PerformanceOverrideInfoINTEL( VkPerformanceOverrideInfoINTEL const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PerformanceOverrideInfoINTEL ) );
+      *reinterpret_cast<VkPerformanceOverrideInfoINTEL*>(this) = rhs;
     }
 
     PerformanceOverrideInfoINTEL& operator=( VkPerformanceOverrideInfoINTEL const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PerformanceOverrideInfoINTEL ) );
+      *reinterpret_cast<VkPerformanceOverrideInfoINTEL*>(this) = rhs;
       return *this;
     }
 
@@ -36445,12 +36454,12 @@
 
     PerformanceStreamMarkerInfoINTEL( VkPerformanceStreamMarkerInfoINTEL const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PerformanceStreamMarkerInfoINTEL ) );
+      *reinterpret_cast<VkPerformanceStreamMarkerInfoINTEL*>(this) = rhs;
     }
 
     PerformanceStreamMarkerInfoINTEL& operator=( VkPerformanceStreamMarkerInfoINTEL const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PerformanceStreamMarkerInfoINTEL ) );
+      *reinterpret_cast<VkPerformanceStreamMarkerInfoINTEL*>(this) = rhs;
       return *this;
     }
 
@@ -36584,12 +36593,12 @@
 
     PerformanceValueINTEL( VkPerformanceValueINTEL const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PerformanceValueINTEL ) );
+      *reinterpret_cast<VkPerformanceValueINTEL*>(this) = rhs;
     }
 
     PerformanceValueINTEL& operator=( VkPerformanceValueINTEL const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PerformanceValueINTEL ) );
+      *reinterpret_cast<VkPerformanceValueINTEL*>(this) = rhs;
       return *this;
     }
 
@@ -36634,12 +36643,12 @@
 
     PhysicalDevice16BitStorageFeatures( VkPhysicalDevice16BitStorageFeatures const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDevice16BitStorageFeatures ) );
+      *reinterpret_cast<VkPhysicalDevice16BitStorageFeatures*>(this) = rhs;
     }
 
     PhysicalDevice16BitStorageFeatures& operator=( VkPhysicalDevice16BitStorageFeatures const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDevice16BitStorageFeatures ) );
+      *reinterpret_cast<VkPhysicalDevice16BitStorageFeatures*>(this) = rhs;
       return *this;
     }
 
@@ -36722,12 +36731,12 @@
 
     PhysicalDevice8BitStorageFeaturesKHR( VkPhysicalDevice8BitStorageFeaturesKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDevice8BitStorageFeaturesKHR ) );
+      *reinterpret_cast<VkPhysicalDevice8BitStorageFeaturesKHR*>(this) = rhs;
     }
 
     PhysicalDevice8BitStorageFeaturesKHR& operator=( VkPhysicalDevice8BitStorageFeaturesKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDevice8BitStorageFeaturesKHR ) );
+      *reinterpret_cast<VkPhysicalDevice8BitStorageFeaturesKHR*>(this) = rhs;
       return *this;
     }
 
@@ -36798,12 +36807,12 @@
 
     PhysicalDeviceASTCDecodeFeaturesEXT( VkPhysicalDeviceASTCDecodeFeaturesEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceASTCDecodeFeaturesEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceASTCDecodeFeaturesEXT*>(this) = rhs;
     }
 
     PhysicalDeviceASTCDecodeFeaturesEXT& operator=( VkPhysicalDeviceASTCDecodeFeaturesEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceASTCDecodeFeaturesEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceASTCDecodeFeaturesEXT*>(this) = rhs;
       return *this;
     }
 
@@ -36858,12 +36867,12 @@
 
     PhysicalDeviceBlendOperationAdvancedFeaturesEXT( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT*>(this) = rhs;
     }
 
     PhysicalDeviceBlendOperationAdvancedFeaturesEXT& operator=( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT*>(this) = rhs;
       return *this;
     }
 
@@ -36965,12 +36974,12 @@
 
     PhysicalDeviceBufferDeviceAddressFeaturesEXT( VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceBufferDeviceAddressFeaturesEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT*>(this) = rhs;
     }
 
     PhysicalDeviceBufferDeviceAddressFeaturesEXT& operator=( VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceBufferDeviceAddressFeaturesEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT*>(this) = rhs;
       return *this;
     }
 
@@ -37043,12 +37052,12 @@
 
     PhysicalDeviceComputeShaderDerivativesFeaturesNV( VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceComputeShaderDerivativesFeaturesNV ) );
+      *reinterpret_cast<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV*>(this) = rhs;
     }
 
     PhysicalDeviceComputeShaderDerivativesFeaturesNV& operator=( VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceComputeShaderDerivativesFeaturesNV ) );
+      *reinterpret_cast<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV*>(this) = rhs;
       return *this;
     }
 
@@ -37113,12 +37122,12 @@
 
     PhysicalDeviceConditionalRenderingFeaturesEXT( VkPhysicalDeviceConditionalRenderingFeaturesEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceConditionalRenderingFeaturesEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceConditionalRenderingFeaturesEXT*>(this) = rhs;
     }
 
     PhysicalDeviceConditionalRenderingFeaturesEXT& operator=( VkPhysicalDeviceConditionalRenderingFeaturesEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceConditionalRenderingFeaturesEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceConditionalRenderingFeaturesEXT*>(this) = rhs;
       return *this;
     }
 
@@ -37232,12 +37241,12 @@
 
     PhysicalDeviceCooperativeMatrixFeaturesNV( VkPhysicalDeviceCooperativeMatrixFeaturesNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceCooperativeMatrixFeaturesNV ) );
+      *reinterpret_cast<VkPhysicalDeviceCooperativeMatrixFeaturesNV*>(this) = rhs;
     }
 
     PhysicalDeviceCooperativeMatrixFeaturesNV& operator=( VkPhysicalDeviceCooperativeMatrixFeaturesNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceCooperativeMatrixFeaturesNV ) );
+      *reinterpret_cast<VkPhysicalDeviceCooperativeMatrixFeaturesNV*>(this) = rhs;
       return *this;
     }
 
@@ -37333,12 +37342,12 @@
 
     PhysicalDeviceCornerSampledImageFeaturesNV( VkPhysicalDeviceCornerSampledImageFeaturesNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceCornerSampledImageFeaturesNV ) );
+      *reinterpret_cast<VkPhysicalDeviceCornerSampledImageFeaturesNV*>(this) = rhs;
     }
 
     PhysicalDeviceCornerSampledImageFeaturesNV& operator=( VkPhysicalDeviceCornerSampledImageFeaturesNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceCornerSampledImageFeaturesNV ) );
+      *reinterpret_cast<VkPhysicalDeviceCornerSampledImageFeaturesNV*>(this) = rhs;
       return *this;
     }
 
@@ -37393,12 +37402,12 @@
 
     PhysicalDeviceCoverageReductionModeFeaturesNV( VkPhysicalDeviceCoverageReductionModeFeaturesNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceCoverageReductionModeFeaturesNV ) );
+      *reinterpret_cast<VkPhysicalDeviceCoverageReductionModeFeaturesNV*>(this) = rhs;
     }
 
     PhysicalDeviceCoverageReductionModeFeaturesNV& operator=( VkPhysicalDeviceCoverageReductionModeFeaturesNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceCoverageReductionModeFeaturesNV ) );
+      *reinterpret_cast<VkPhysicalDeviceCoverageReductionModeFeaturesNV*>(this) = rhs;
       return *this;
     }
 
@@ -37453,12 +37462,12 @@
 
     PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV( VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV ) );
+      *reinterpret_cast<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV*>(this) = rhs;
     }
 
     PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV& operator=( VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV ) );
+      *reinterpret_cast<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV*>(this) = rhs;
       return *this;
     }
 
@@ -37513,12 +37522,12 @@
 
     PhysicalDeviceDepthClipEnableFeaturesEXT( VkPhysicalDeviceDepthClipEnableFeaturesEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceDepthClipEnableFeaturesEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceDepthClipEnableFeaturesEXT*>(this) = rhs;
     }
 
     PhysicalDeviceDepthClipEnableFeaturesEXT& operator=( VkPhysicalDeviceDepthClipEnableFeaturesEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceDepthClipEnableFeaturesEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceDepthClipEnableFeaturesEXT*>(this) = rhs;
       return *this;
     }
 
@@ -37650,12 +37659,12 @@
 
     PhysicalDeviceDescriptorIndexingFeaturesEXT( VkPhysicalDeviceDescriptorIndexingFeaturesEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceDescriptorIndexingFeaturesEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceDescriptorIndexingFeaturesEXT*>(this) = rhs;
     }
 
     PhysicalDeviceDescriptorIndexingFeaturesEXT& operator=( VkPhysicalDeviceDescriptorIndexingFeaturesEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceDescriptorIndexingFeaturesEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceDescriptorIndexingFeaturesEXT*>(this) = rhs;
       return *this;
     }
 
@@ -38011,12 +38020,12 @@
 
     PhysicalDeviceExclusiveScissorFeaturesNV( VkPhysicalDeviceExclusiveScissorFeaturesNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceExclusiveScissorFeaturesNV ) );
+      *reinterpret_cast<VkPhysicalDeviceExclusiveScissorFeaturesNV*>(this) = rhs;
     }
 
     PhysicalDeviceExclusiveScissorFeaturesNV& operator=( VkPhysicalDeviceExclusiveScissorFeaturesNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceExclusiveScissorFeaturesNV ) );
+      *reinterpret_cast<VkPhysicalDeviceExclusiveScissorFeaturesNV*>(this) = rhs;
       return *this;
     }
 
@@ -38075,12 +38084,12 @@
 
     PhysicalDeviceExternalBufferInfo( VkPhysicalDeviceExternalBufferInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceExternalBufferInfo ) );
+      *reinterpret_cast<VkPhysicalDeviceExternalBufferInfo*>(this) = rhs;
     }
 
     PhysicalDeviceExternalBufferInfo& operator=( VkPhysicalDeviceExternalBufferInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceExternalBufferInfo ) );
+      *reinterpret_cast<VkPhysicalDeviceExternalBufferInfo*>(this) = rhs;
       return *this;
     }
 
@@ -38151,12 +38160,12 @@
 
     PhysicalDeviceExternalFenceInfo( VkPhysicalDeviceExternalFenceInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceExternalFenceInfo ) );
+      *reinterpret_cast<VkPhysicalDeviceExternalFenceInfo*>(this) = rhs;
     }
 
     PhysicalDeviceExternalFenceInfo& operator=( VkPhysicalDeviceExternalFenceInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceExternalFenceInfo ) );
+      *reinterpret_cast<VkPhysicalDeviceExternalFenceInfo*>(this) = rhs;
       return *this;
     }
 
@@ -38211,12 +38220,12 @@
 
     PhysicalDeviceExternalImageFormatInfo( VkPhysicalDeviceExternalImageFormatInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceExternalImageFormatInfo ) );
+      *reinterpret_cast<VkPhysicalDeviceExternalImageFormatInfo*>(this) = rhs;
     }
 
     PhysicalDeviceExternalImageFormatInfo& operator=( VkPhysicalDeviceExternalImageFormatInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceExternalImageFormatInfo ) );
+      *reinterpret_cast<VkPhysicalDeviceExternalImageFormatInfo*>(this) = rhs;
       return *this;
     }
 
@@ -38304,12 +38313,12 @@
 
     PhysicalDeviceExternalSemaphoreInfo( VkPhysicalDeviceExternalSemaphoreInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceExternalSemaphoreInfo ) );
+      *reinterpret_cast<VkPhysicalDeviceExternalSemaphoreInfo*>(this) = rhs;
     }
 
     PhysicalDeviceExternalSemaphoreInfo& operator=( VkPhysicalDeviceExternalSemaphoreInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceExternalSemaphoreInfo ) );
+      *reinterpret_cast<VkPhysicalDeviceExternalSemaphoreInfo*>(this) = rhs;
       return *this;
     }
 
@@ -38364,12 +38373,12 @@
 
     PhysicalDeviceFeatures2( VkPhysicalDeviceFeatures2 const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures2 ) );
+      *reinterpret_cast<VkPhysicalDeviceFeatures2*>(this) = rhs;
     }
 
     PhysicalDeviceFeatures2& operator=( VkPhysicalDeviceFeatures2 const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures2 ) );
+      *reinterpret_cast<VkPhysicalDeviceFeatures2*>(this) = rhs;
       return *this;
     }
 
@@ -38426,12 +38435,12 @@
 
     PhysicalDeviceFloat16Int8FeaturesKHR( VkPhysicalDeviceFloat16Int8FeaturesKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceFloat16Int8FeaturesKHR ) );
+      *reinterpret_cast<VkPhysicalDeviceFloat16Int8FeaturesKHR*>(this) = rhs;
     }
 
     PhysicalDeviceFloat16Int8FeaturesKHR& operator=( VkPhysicalDeviceFloat16Int8FeaturesKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceFloat16Int8FeaturesKHR ) );
+      *reinterpret_cast<VkPhysicalDeviceFloat16Int8FeaturesKHR*>(this) = rhs;
       return *this;
     }
 
@@ -38633,12 +38642,12 @@
 
     PhysicalDeviceFragmentShaderBarycentricFeaturesNV( VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceFragmentShaderBarycentricFeaturesNV ) );
+      *reinterpret_cast<VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV*>(this) = rhs;
     }
 
     PhysicalDeviceFragmentShaderBarycentricFeaturesNV& operator=( VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceFragmentShaderBarycentricFeaturesNV ) );
+      *reinterpret_cast<VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV*>(this) = rhs;
       return *this;
     }
 
@@ -38697,12 +38706,12 @@
 
     PhysicalDeviceFragmentShaderInterlockFeaturesEXT( VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceFragmentShaderInterlockFeaturesEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT*>(this) = rhs;
     }
 
     PhysicalDeviceFragmentShaderInterlockFeaturesEXT& operator=( VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceFragmentShaderInterlockFeaturesEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT*>(this) = rhs;
       return *this;
     }
 
@@ -38810,12 +38819,12 @@
 
     PhysicalDeviceHostQueryResetFeaturesEXT( VkPhysicalDeviceHostQueryResetFeaturesEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceHostQueryResetFeaturesEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceHostQueryResetFeaturesEXT*>(this) = rhs;
     }
 
     PhysicalDeviceHostQueryResetFeaturesEXT& operator=( VkPhysicalDeviceHostQueryResetFeaturesEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceHostQueryResetFeaturesEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceHostQueryResetFeaturesEXT*>(this) = rhs;
       return *this;
     }
 
@@ -38917,12 +38926,12 @@
 
     PhysicalDeviceImageDrmFormatModifierInfoEXT( VkPhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceImageDrmFormatModifierInfoEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceImageDrmFormatModifierInfoEXT*>(this) = rhs;
     }
 
     PhysicalDeviceImageDrmFormatModifierInfoEXT& operator=( VkPhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceImageDrmFormatModifierInfoEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceImageDrmFormatModifierInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -39009,12 +39018,12 @@
 
     PhysicalDeviceImageFormatInfo2( VkPhysicalDeviceImageFormatInfo2 const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceImageFormatInfo2 ) );
+      *reinterpret_cast<VkPhysicalDeviceImageFormatInfo2*>(this) = rhs;
     }
 
     PhysicalDeviceImageFormatInfo2& operator=( VkPhysicalDeviceImageFormatInfo2 const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceImageFormatInfo2 ) );
+      *reinterpret_cast<VkPhysicalDeviceImageFormatInfo2*>(this) = rhs;
       return *this;
     }
 
@@ -39101,12 +39110,12 @@
 
     PhysicalDeviceImageViewImageFormatInfoEXT( VkPhysicalDeviceImageViewImageFormatInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceImageViewImageFormatInfoEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceImageViewImageFormatInfoEXT*>(this) = rhs;
     }
 
     PhysicalDeviceImageViewImageFormatInfoEXT& operator=( VkPhysicalDeviceImageViewImageFormatInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceImageViewImageFormatInfoEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceImageViewImageFormatInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -39163,12 +39172,12 @@
 
     PhysicalDeviceInlineUniformBlockFeaturesEXT( VkPhysicalDeviceInlineUniformBlockFeaturesEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceInlineUniformBlockFeaturesEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceInlineUniformBlockFeaturesEXT*>(this) = rhs;
     }
 
     PhysicalDeviceInlineUniformBlockFeaturesEXT& operator=( VkPhysicalDeviceInlineUniformBlockFeaturesEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceInlineUniformBlockFeaturesEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceInlineUniformBlockFeaturesEXT*>(this) = rhs;
       return *this;
     }
 
@@ -39578,12 +39587,12 @@
 
     PhysicalDeviceMemoryPriorityFeaturesEXT( VkPhysicalDeviceMemoryPriorityFeaturesEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceMemoryPriorityFeaturesEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceMemoryPriorityFeaturesEXT*>(this) = rhs;
     }
 
     PhysicalDeviceMemoryPriorityFeaturesEXT& operator=( VkPhysicalDeviceMemoryPriorityFeaturesEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceMemoryPriorityFeaturesEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceMemoryPriorityFeaturesEXT*>(this) = rhs;
       return *this;
     }
 
@@ -39705,12 +39714,12 @@
 
     PhysicalDeviceMeshShaderFeaturesNV( VkPhysicalDeviceMeshShaderFeaturesNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceMeshShaderFeaturesNV ) );
+      *reinterpret_cast<VkPhysicalDeviceMeshShaderFeaturesNV*>(this) = rhs;
     }
 
     PhysicalDeviceMeshShaderFeaturesNV& operator=( VkPhysicalDeviceMeshShaderFeaturesNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceMeshShaderFeaturesNV ) );
+      *reinterpret_cast<VkPhysicalDeviceMeshShaderFeaturesNV*>(this) = rhs;
       return *this;
     }
 
@@ -39834,12 +39843,12 @@
 
     PhysicalDeviceMultiviewFeatures( VkPhysicalDeviceMultiviewFeatures const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceMultiviewFeatures ) );
+      *reinterpret_cast<VkPhysicalDeviceMultiviewFeatures*>(this) = rhs;
     }
 
     PhysicalDeviceMultiviewFeatures& operator=( VkPhysicalDeviceMultiviewFeatures const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceMultiviewFeatures ) );
+      *reinterpret_cast<VkPhysicalDeviceMultiviewFeatures*>(this) = rhs;
       return *this;
     }
 
@@ -40159,12 +40168,12 @@
 
     PhysicalDeviceProtectedMemoryFeatures( VkPhysicalDeviceProtectedMemoryFeatures const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceProtectedMemoryFeatures ) );
+      *reinterpret_cast<VkPhysicalDeviceProtectedMemoryFeatures*>(this) = rhs;
     }
 
     PhysicalDeviceProtectedMemoryFeatures& operator=( VkPhysicalDeviceProtectedMemoryFeatures const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceProtectedMemoryFeatures ) );
+      *reinterpret_cast<VkPhysicalDeviceProtectedMemoryFeatures*>(this) = rhs;
       return *this;
     }
 
@@ -40332,12 +40341,12 @@
 
     PhysicalDeviceRepresentativeFragmentTestFeaturesNV( VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceRepresentativeFragmentTestFeaturesNV ) );
+      *reinterpret_cast<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV*>(this) = rhs;
     }
 
     PhysicalDeviceRepresentativeFragmentTestFeaturesNV& operator=( VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceRepresentativeFragmentTestFeaturesNV ) );
+      *reinterpret_cast<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV*>(this) = rhs;
       return *this;
     }
 
@@ -40468,12 +40477,12 @@
 
     PhysicalDeviceSamplerYcbcrConversionFeatures( VkPhysicalDeviceSamplerYcbcrConversionFeatures const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceSamplerYcbcrConversionFeatures ) );
+      *reinterpret_cast<VkPhysicalDeviceSamplerYcbcrConversionFeatures*>(this) = rhs;
     }
 
     PhysicalDeviceSamplerYcbcrConversionFeatures& operator=( VkPhysicalDeviceSamplerYcbcrConversionFeatures const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceSamplerYcbcrConversionFeatures ) );
+      *reinterpret_cast<VkPhysicalDeviceSamplerYcbcrConversionFeatures*>(this) = rhs;
       return *this;
     }
 
@@ -40528,12 +40537,12 @@
 
     PhysicalDeviceScalarBlockLayoutFeaturesEXT( VkPhysicalDeviceScalarBlockLayoutFeaturesEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceScalarBlockLayoutFeaturesEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceScalarBlockLayoutFeaturesEXT*>(this) = rhs;
     }
 
     PhysicalDeviceScalarBlockLayoutFeaturesEXT& operator=( VkPhysicalDeviceScalarBlockLayoutFeaturesEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceScalarBlockLayoutFeaturesEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceScalarBlockLayoutFeaturesEXT*>(this) = rhs;
       return *this;
     }
 
@@ -40590,12 +40599,12 @@
 
     PhysicalDeviceShaderAtomicInt64FeaturesKHR( VkPhysicalDeviceShaderAtomicInt64FeaturesKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceShaderAtomicInt64FeaturesKHR ) );
+      *reinterpret_cast<VkPhysicalDeviceShaderAtomicInt64FeaturesKHR*>(this) = rhs;
     }
 
     PhysicalDeviceShaderAtomicInt64FeaturesKHR& operator=( VkPhysicalDeviceShaderAtomicInt64FeaturesKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceShaderAtomicInt64FeaturesKHR ) );
+      *reinterpret_cast<VkPhysicalDeviceShaderAtomicInt64FeaturesKHR*>(this) = rhs;
       return *this;
     }
 
@@ -40709,6 +40718,66 @@
   };
   static_assert( sizeof( PhysicalDeviceShaderCorePropertiesAMD ) == sizeof( VkPhysicalDeviceShaderCorePropertiesAMD ), "struct and wrapper have different size!" );
 
+  struct PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT
+  {
+    PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT( Bool32 shaderDemoteToHelperInvocation_ = 0 )
+      : shaderDemoteToHelperInvocation( shaderDemoteToHelperInvocation_ )
+    {}
+
+    PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT( VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const & rhs )
+    {
+      *reinterpret_cast<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT*>(this) = rhs;
+    }
+
+    PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT& operator=( VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const & rhs )
+    {
+      *reinterpret_cast<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT*>(this) = rhs;
+      return *this;
+    }
+
+    PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT & setPNext( void* pNext_ )
+    {
+      pNext = pNext_;
+      return *this;
+    }
+
+    PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT & setShaderDemoteToHelperInvocation( Bool32 shaderDemoteToHelperInvocation_ )
+    {
+      shaderDemoteToHelperInvocation = shaderDemoteToHelperInvocation_;
+      return *this;
+    }
+
+    operator VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const&() const
+    {
+      return *reinterpret_cast<const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT*>( this );
+    }
+
+    operator VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT &()
+    {
+      return *reinterpret_cast<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT*>( this );
+    }
+
+    bool operator==( PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const& rhs ) const
+    {
+      return ( sType == rhs.sType )
+          && ( pNext == rhs.pNext )
+          && ( shaderDemoteToHelperInvocation == rhs.shaderDemoteToHelperInvocation );
+    }
+
+    bool operator!=( PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const& rhs ) const
+    {
+      return !operator==( rhs );
+    }
+
+  private:
+    StructureType sType = StructureType::ePhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT;
+
+  public:
+    void* pNext = nullptr;
+    Bool32 shaderDemoteToHelperInvocation;
+  };
+  static_assert( sizeof( PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT ) == sizeof( VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT ), "struct and wrapper have different size!" );
+
   struct PhysicalDeviceShaderDrawParametersFeatures
   {
     PhysicalDeviceShaderDrawParametersFeatures( Bool32 shaderDrawParameters_ = 0 )
@@ -40717,12 +40786,12 @@
 
     PhysicalDeviceShaderDrawParametersFeatures( VkPhysicalDeviceShaderDrawParametersFeatures const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceShaderDrawParametersFeatures ) );
+      *reinterpret_cast<VkPhysicalDeviceShaderDrawParametersFeatures*>(this) = rhs;
     }
 
     PhysicalDeviceShaderDrawParametersFeatures& operator=( VkPhysicalDeviceShaderDrawParametersFeatures const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceShaderDrawParametersFeatures ) );
+      *reinterpret_cast<VkPhysicalDeviceShaderDrawParametersFeatures*>(this) = rhs;
       return *this;
     }
 
@@ -40777,12 +40846,12 @@
 
     PhysicalDeviceShaderImageFootprintFeaturesNV( VkPhysicalDeviceShaderImageFootprintFeaturesNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceShaderImageFootprintFeaturesNV ) );
+      *reinterpret_cast<VkPhysicalDeviceShaderImageFootprintFeaturesNV*>(this) = rhs;
     }
 
     PhysicalDeviceShaderImageFootprintFeaturesNV& operator=( VkPhysicalDeviceShaderImageFootprintFeaturesNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceShaderImageFootprintFeaturesNV ) );
+      *reinterpret_cast<VkPhysicalDeviceShaderImageFootprintFeaturesNV*>(this) = rhs;
       return *this;
     }
 
@@ -40837,12 +40906,12 @@
 
     PhysicalDeviceShaderIntegerFunctions2INTEL( VkPhysicalDeviceShaderIntegerFunctions2INTEL const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceShaderIntegerFunctions2INTEL ) );
+      *reinterpret_cast<VkPhysicalDeviceShaderIntegerFunctions2INTEL*>(this) = rhs;
     }
 
     PhysicalDeviceShaderIntegerFunctions2INTEL& operator=( VkPhysicalDeviceShaderIntegerFunctions2INTEL const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceShaderIntegerFunctions2INTEL ) );
+      *reinterpret_cast<VkPhysicalDeviceShaderIntegerFunctions2INTEL*>(this) = rhs;
       return *this;
     }
 
@@ -40897,12 +40966,12 @@
 
     PhysicalDeviceShaderSMBuiltinsFeaturesNV( VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceShaderSMBuiltinsFeaturesNV ) );
+      *reinterpret_cast<VkPhysicalDeviceShaderSMBuiltinsFeaturesNV*>(this) = rhs;
     }
 
     PhysicalDeviceShaderSMBuiltinsFeaturesNV& operator=( VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceShaderSMBuiltinsFeaturesNV ) );
+      *reinterpret_cast<VkPhysicalDeviceShaderSMBuiltinsFeaturesNV*>(this) = rhs;
       return *this;
     }
 
@@ -40994,12 +41063,12 @@
 
     PhysicalDeviceShadingRateImageFeaturesNV( VkPhysicalDeviceShadingRateImageFeaturesNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceShadingRateImageFeaturesNV ) );
+      *reinterpret_cast<VkPhysicalDeviceShadingRateImageFeaturesNV*>(this) = rhs;
     }
 
     PhysicalDeviceShadingRateImageFeaturesNV& operator=( VkPhysicalDeviceShadingRateImageFeaturesNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceShadingRateImageFeaturesNV ) );
+      *reinterpret_cast<VkPhysicalDeviceShadingRateImageFeaturesNV*>(this) = rhs;
       return *this;
     }
 
@@ -41107,12 +41176,12 @@
 
     PhysicalDeviceSparseImageFormatInfo2( VkPhysicalDeviceSparseImageFormatInfo2 const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceSparseImageFormatInfo2 ) );
+      *reinterpret_cast<VkPhysicalDeviceSparseImageFormatInfo2*>(this) = rhs;
     }
 
     PhysicalDeviceSparseImageFormatInfo2& operator=( VkPhysicalDeviceSparseImageFormatInfo2 const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceSparseImageFormatInfo2 ) );
+      *reinterpret_cast<VkPhysicalDeviceSparseImageFormatInfo2*>(this) = rhs;
       return *this;
     }
 
@@ -41238,12 +41307,12 @@
 
     PhysicalDeviceSurfaceInfo2KHR( VkPhysicalDeviceSurfaceInfo2KHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceSurfaceInfo2KHR ) );
+      *reinterpret_cast<VkPhysicalDeviceSurfaceInfo2KHR*>(this) = rhs;
     }
 
     PhysicalDeviceSurfaceInfo2KHR& operator=( VkPhysicalDeviceSurfaceInfo2KHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceSurfaceInfo2KHR ) );
+      *reinterpret_cast<VkPhysicalDeviceSurfaceInfo2KHR*>(this) = rhs;
       return *this;
     }
 
@@ -41290,6 +41359,105 @@
   };
   static_assert( sizeof( PhysicalDeviceSurfaceInfo2KHR ) == sizeof( VkPhysicalDeviceSurfaceInfo2KHR ), "struct and wrapper have different size!" );
 
+  struct PhysicalDeviceTexelBufferAlignmentFeaturesEXT
+  {
+    PhysicalDeviceTexelBufferAlignmentFeaturesEXT( Bool32 texelBufferAlignment_ = 0 )
+      : texelBufferAlignment( texelBufferAlignment_ )
+    {}
+
+    PhysicalDeviceTexelBufferAlignmentFeaturesEXT( VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs )
+    {
+      *reinterpret_cast<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT*>(this) = rhs;
+    }
+
+    PhysicalDeviceTexelBufferAlignmentFeaturesEXT& operator=( VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs )
+    {
+      *reinterpret_cast<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT*>(this) = rhs;
+      return *this;
+    }
+
+    PhysicalDeviceTexelBufferAlignmentFeaturesEXT & setPNext( void* pNext_ )
+    {
+      pNext = pNext_;
+      return *this;
+    }
+
+    PhysicalDeviceTexelBufferAlignmentFeaturesEXT & setTexelBufferAlignment( Bool32 texelBufferAlignment_ )
+    {
+      texelBufferAlignment = texelBufferAlignment_;
+      return *this;
+    }
+
+    operator VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const&() const
+    {
+      return *reinterpret_cast<const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT*>( this );
+    }
+
+    operator VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT &()
+    {
+      return *reinterpret_cast<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT*>( this );
+    }
+
+    bool operator==( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const& rhs ) const
+    {
+      return ( sType == rhs.sType )
+          && ( pNext == rhs.pNext )
+          && ( texelBufferAlignment == rhs.texelBufferAlignment );
+    }
+
+    bool operator!=( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const& rhs ) const
+    {
+      return !operator==( rhs );
+    }
+
+  private:
+    StructureType sType = StructureType::ePhysicalDeviceTexelBufferAlignmentFeaturesEXT;
+
+  public:
+    void* pNext = nullptr;
+    Bool32 texelBufferAlignment;
+  };
+  static_assert( sizeof( PhysicalDeviceTexelBufferAlignmentFeaturesEXT ) == sizeof( VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT ), "struct and wrapper have different size!" );
+
+  struct PhysicalDeviceTexelBufferAlignmentPropertiesEXT
+  {
+    operator VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT const&() const
+    {
+      return *reinterpret_cast<const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT*>( this );
+    }
+
+    operator VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT &()
+    {
+      return *reinterpret_cast<VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT*>( this );
+    }
+
+    bool operator==( PhysicalDeviceTexelBufferAlignmentPropertiesEXT const& rhs ) const
+    {
+      return ( sType == rhs.sType )
+          && ( pNext == rhs.pNext )
+          && ( storageTexelBufferOffsetAlignmentBytes == rhs.storageTexelBufferOffsetAlignmentBytes )
+          && ( storageTexelBufferOffsetSingleTexelAlignment == rhs.storageTexelBufferOffsetSingleTexelAlignment )
+          && ( uniformTexelBufferOffsetAlignmentBytes == rhs.uniformTexelBufferOffsetAlignmentBytes )
+          && ( uniformTexelBufferOffsetSingleTexelAlignment == rhs.uniformTexelBufferOffsetSingleTexelAlignment );
+    }
+
+    bool operator!=( PhysicalDeviceTexelBufferAlignmentPropertiesEXT const& rhs ) const
+    {
+      return !operator==( rhs );
+    }
+
+  private:
+    StructureType sType = StructureType::ePhysicalDeviceTexelBufferAlignmentPropertiesEXT;
+
+  public:
+    void* pNext = nullptr;
+    DeviceSize storageTexelBufferOffsetAlignmentBytes;
+    Bool32 storageTexelBufferOffsetSingleTexelAlignment;
+    DeviceSize uniformTexelBufferOffsetAlignmentBytes;
+    Bool32 uniformTexelBufferOffsetSingleTexelAlignment;
+  };
+  static_assert( sizeof( PhysicalDeviceTexelBufferAlignmentPropertiesEXT ) == sizeof( VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT ), "struct and wrapper have different size!" );
+
   struct PhysicalDeviceTransformFeedbackFeaturesEXT
   {
     PhysicalDeviceTransformFeedbackFeaturesEXT( Bool32 transformFeedback_ = 0,
@@ -41300,12 +41468,12 @@
 
     PhysicalDeviceTransformFeedbackFeaturesEXT( VkPhysicalDeviceTransformFeedbackFeaturesEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceTransformFeedbackFeaturesEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceTransformFeedbackFeaturesEXT*>(this) = rhs;
     }
 
     PhysicalDeviceTransformFeedbackFeaturesEXT& operator=( VkPhysicalDeviceTransformFeedbackFeaturesEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceTransformFeedbackFeaturesEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceTransformFeedbackFeaturesEXT*>(this) = rhs;
       return *this;
     }
 
@@ -41419,12 +41587,12 @@
 
     PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR( VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR ) );
+      *reinterpret_cast<VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR*>(this) = rhs;
     }
 
     PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR& operator=( VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR ) );
+      *reinterpret_cast<VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR*>(this) = rhs;
       return *this;
     }
 
@@ -41481,12 +41649,12 @@
 
     PhysicalDeviceVariablePointersFeatures( VkPhysicalDeviceVariablePointersFeatures const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceVariablePointersFeatures ) );
+      *reinterpret_cast<VkPhysicalDeviceVariablePointersFeatures*>(this) = rhs;
     }
 
     PhysicalDeviceVariablePointersFeatures& operator=( VkPhysicalDeviceVariablePointersFeatures const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceVariablePointersFeatures ) );
+      *reinterpret_cast<VkPhysicalDeviceVariablePointersFeatures*>(this) = rhs;
       return *this;
     }
 
@@ -41551,12 +41719,12 @@
 
     PhysicalDeviceVertexAttributeDivisorFeaturesEXT( VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceVertexAttributeDivisorFeaturesEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT*>(this) = rhs;
     }
 
     PhysicalDeviceVertexAttributeDivisorFeaturesEXT& operator=( VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceVertexAttributeDivisorFeaturesEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT*>(this) = rhs;
       return *this;
     }
 
@@ -41656,12 +41824,12 @@
 
     PhysicalDeviceVulkanMemoryModelFeaturesKHR( VkPhysicalDeviceVulkanMemoryModelFeaturesKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceVulkanMemoryModelFeaturesKHR ) );
+      *reinterpret_cast<VkPhysicalDeviceVulkanMemoryModelFeaturesKHR*>(this) = rhs;
     }
 
     PhysicalDeviceVulkanMemoryModelFeaturesKHR& operator=( VkPhysicalDeviceVulkanMemoryModelFeaturesKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceVulkanMemoryModelFeaturesKHR ) );
+      *reinterpret_cast<VkPhysicalDeviceVulkanMemoryModelFeaturesKHR*>(this) = rhs;
       return *this;
     }
 
@@ -41732,12 +41900,12 @@
 
     PhysicalDeviceYcbcrImageArraysFeaturesEXT( VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceYcbcrImageArraysFeaturesEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT*>(this) = rhs;
     }
 
     PhysicalDeviceYcbcrImageArraysFeaturesEXT& operator=( VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PhysicalDeviceYcbcrImageArraysFeaturesEXT ) );
+      *reinterpret_cast<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT*>(this) = rhs;
       return *this;
     }
 
@@ -41796,12 +41964,12 @@
 
     PipelineCacheCreateInfo( VkPipelineCacheCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineCacheCreateInfo ) );
+      *reinterpret_cast<VkPipelineCacheCreateInfo*>(this) = rhs;
     }
 
     PipelineCacheCreateInfo& operator=( VkPipelineCacheCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineCacheCreateInfo ) );
+      *reinterpret_cast<VkPipelineCacheCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -41876,12 +42044,12 @@
 
     PipelineColorBlendAdvancedStateCreateInfoEXT( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) );
+      *reinterpret_cast<VkPipelineColorBlendAdvancedStateCreateInfoEXT*>(this) = rhs;
     }
 
     PipelineColorBlendAdvancedStateCreateInfoEXT& operator=( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) );
+      *reinterpret_cast<VkPipelineColorBlendAdvancedStateCreateInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -41960,12 +42128,12 @@
 
     PipelineCoverageModulationStateCreateInfoNV( VkPipelineCoverageModulationStateCreateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineCoverageModulationStateCreateInfoNV ) );
+      *reinterpret_cast<VkPipelineCoverageModulationStateCreateInfoNV*>(this) = rhs;
     }
 
     PipelineCoverageModulationStateCreateInfoNV& operator=( VkPipelineCoverageModulationStateCreateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineCoverageModulationStateCreateInfoNV ) );
+      *reinterpret_cast<VkPipelineCoverageModulationStateCreateInfoNV*>(this) = rhs;
       return *this;
     }
 
@@ -42054,12 +42222,12 @@
 
     PipelineCoverageReductionStateCreateInfoNV( VkPipelineCoverageReductionStateCreateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineCoverageReductionStateCreateInfoNV ) );
+      *reinterpret_cast<VkPipelineCoverageReductionStateCreateInfoNV*>(this) = rhs;
     }
 
     PipelineCoverageReductionStateCreateInfoNV& operator=( VkPipelineCoverageReductionStateCreateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineCoverageReductionStateCreateInfoNV ) );
+      *reinterpret_cast<VkPipelineCoverageReductionStateCreateInfoNV*>(this) = rhs;
       return *this;
     }
 
@@ -42126,12 +42294,12 @@
 
     PipelineCoverageToColorStateCreateInfoNV( VkPipelineCoverageToColorStateCreateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineCoverageToColorStateCreateInfoNV ) );
+      *reinterpret_cast<VkPipelineCoverageToColorStateCreateInfoNV*>(this) = rhs;
     }
 
     PipelineCoverageToColorStateCreateInfoNV& operator=( VkPipelineCoverageToColorStateCreateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineCoverageToColorStateCreateInfoNV ) );
+      *reinterpret_cast<VkPipelineCoverageToColorStateCreateInfoNV*>(this) = rhs;
       return *this;
     }
 
@@ -42234,12 +42402,12 @@
 
     PipelineCreationFeedbackCreateInfoEXT( VkPipelineCreationFeedbackCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineCreationFeedbackCreateInfoEXT ) );
+      *reinterpret_cast<VkPipelineCreationFeedbackCreateInfoEXT*>(this) = rhs;
     }
 
     PipelineCreationFeedbackCreateInfoEXT& operator=( VkPipelineCreationFeedbackCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineCreationFeedbackCreateInfoEXT ) );
+      *reinterpret_cast<VkPipelineCreationFeedbackCreateInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -42316,12 +42484,12 @@
 
     PipelineDiscardRectangleStateCreateInfoEXT( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) );
+      *reinterpret_cast<VkPipelineDiscardRectangleStateCreateInfoEXT*>(this) = rhs;
     }
 
     PipelineDiscardRectangleStateCreateInfoEXT& operator=( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) );
+      *reinterpret_cast<VkPipelineDiscardRectangleStateCreateInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -42404,12 +42572,12 @@
 
     PushConstantRange( VkPushConstantRange const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PushConstantRange ) );
+      *reinterpret_cast<VkPushConstantRange*>(this) = rhs;
     }
 
     PushConstantRange& operator=( VkPushConstantRange const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PushConstantRange ) );
+      *reinterpret_cast<VkPushConstantRange*>(this) = rhs;
       return *this;
     }
 
@@ -42475,12 +42643,12 @@
 
     PipelineLayoutCreateInfo( VkPipelineLayoutCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineLayoutCreateInfo ) );
+      *reinterpret_cast<VkPipelineLayoutCreateInfo*>(this) = rhs;
     }
 
     PipelineLayoutCreateInfo& operator=( VkPipelineLayoutCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineLayoutCreateInfo ) );
+      *reinterpret_cast<VkPipelineLayoutCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -42571,12 +42739,12 @@
 
     PipelineRasterizationConservativeStateCreateInfoEXT( VkPipelineRasterizationConservativeStateCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineRasterizationConservativeStateCreateInfoEXT ) );
+      *reinterpret_cast<VkPipelineRasterizationConservativeStateCreateInfoEXT*>(this) = rhs;
     }
 
     PipelineRasterizationConservativeStateCreateInfoEXT& operator=( VkPipelineRasterizationConservativeStateCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineRasterizationConservativeStateCreateInfoEXT ) );
+      *reinterpret_cast<VkPipelineRasterizationConservativeStateCreateInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -42649,12 +42817,12 @@
 
     PipelineRasterizationDepthClipStateCreateInfoEXT( VkPipelineRasterizationDepthClipStateCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineRasterizationDepthClipStateCreateInfoEXT ) );
+      *reinterpret_cast<VkPipelineRasterizationDepthClipStateCreateInfoEXT*>(this) = rhs;
     }
 
     PipelineRasterizationDepthClipStateCreateInfoEXT& operator=( VkPipelineRasterizationDepthClipStateCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineRasterizationDepthClipStateCreateInfoEXT ) );
+      *reinterpret_cast<VkPipelineRasterizationDepthClipStateCreateInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -42717,12 +42885,12 @@
 
     PipelineRasterizationStateRasterizationOrderAMD( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineRasterizationStateRasterizationOrderAMD ) );
+      *reinterpret_cast<VkPipelineRasterizationStateRasterizationOrderAMD*>(this) = rhs;
     }
 
     PipelineRasterizationStateRasterizationOrderAMD& operator=( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineRasterizationStateRasterizationOrderAMD ) );
+      *reinterpret_cast<VkPipelineRasterizationStateRasterizationOrderAMD*>(this) = rhs;
       return *this;
     }
 
@@ -42779,12 +42947,12 @@
 
     PipelineRasterizationStateStreamCreateInfoEXT( VkPipelineRasterizationStateStreamCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineRasterizationStateStreamCreateInfoEXT ) );
+      *reinterpret_cast<VkPipelineRasterizationStateStreamCreateInfoEXT*>(this) = rhs;
     }
 
     PipelineRasterizationStateStreamCreateInfoEXT& operator=( VkPipelineRasterizationStateStreamCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineRasterizationStateStreamCreateInfoEXT ) );
+      *reinterpret_cast<VkPipelineRasterizationStateStreamCreateInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -42847,12 +43015,12 @@
 
     PipelineRepresentativeFragmentTestStateCreateInfoNV( VkPipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineRepresentativeFragmentTestStateCreateInfoNV ) );
+      *reinterpret_cast<VkPipelineRepresentativeFragmentTestStateCreateInfoNV*>(this) = rhs;
     }
 
     PipelineRepresentativeFragmentTestStateCreateInfoNV& operator=( VkPipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineRepresentativeFragmentTestStateCreateInfoNV ) );
+      *reinterpret_cast<VkPipelineRepresentativeFragmentTestStateCreateInfoNV*>(this) = rhs;
       return *this;
     }
 
@@ -42909,12 +43077,12 @@
 
     PipelineSampleLocationsStateCreateInfoEXT( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineSampleLocationsStateCreateInfoEXT ) );
+      *reinterpret_cast<VkPipelineSampleLocationsStateCreateInfoEXT*>(this) = rhs;
     }
 
     PipelineSampleLocationsStateCreateInfoEXT& operator=( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineSampleLocationsStateCreateInfoEXT ) );
+      *reinterpret_cast<VkPipelineSampleLocationsStateCreateInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -42977,12 +43145,12 @@
 
     PipelineTessellationDomainOriginStateCreateInfo( VkPipelineTessellationDomainOriginStateCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineTessellationDomainOriginStateCreateInfo ) );
+      *reinterpret_cast<VkPipelineTessellationDomainOriginStateCreateInfo*>(this) = rhs;
     }
 
     PipelineTessellationDomainOriginStateCreateInfo& operator=( VkPipelineTessellationDomainOriginStateCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineTessellationDomainOriginStateCreateInfo ) );
+      *reinterpret_cast<VkPipelineTessellationDomainOriginStateCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -43039,12 +43207,12 @@
 
     VertexInputBindingDivisorDescriptionEXT( VkVertexInputBindingDivisorDescriptionEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( VertexInputBindingDivisorDescriptionEXT ) );
+      *reinterpret_cast<VkVertexInputBindingDivisorDescriptionEXT*>(this) = rhs;
     }
 
     VertexInputBindingDivisorDescriptionEXT& operator=( VkVertexInputBindingDivisorDescriptionEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( VertexInputBindingDivisorDescriptionEXT ) );
+      *reinterpret_cast<VkVertexInputBindingDivisorDescriptionEXT*>(this) = rhs;
       return *this;
     }
 
@@ -43096,12 +43264,12 @@
 
     PipelineVertexInputDivisorStateCreateInfoEXT( VkPipelineVertexInputDivisorStateCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineVertexInputDivisorStateCreateInfoEXT ) );
+      *reinterpret_cast<VkPipelineVertexInputDivisorStateCreateInfoEXT*>(this) = rhs;
     }
 
     PipelineVertexInputDivisorStateCreateInfoEXT& operator=( VkPipelineVertexInputDivisorStateCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineVertexInputDivisorStateCreateInfoEXT ) );
+      *reinterpret_cast<VkPipelineVertexInputDivisorStateCreateInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -43168,12 +43336,12 @@
 
     PipelineViewportCoarseSampleOrderStateCreateInfoNV( VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineViewportCoarseSampleOrderStateCreateInfoNV ) );
+      *reinterpret_cast<VkPipelineViewportCoarseSampleOrderStateCreateInfoNV*>(this) = rhs;
     }
 
     PipelineViewportCoarseSampleOrderStateCreateInfoNV& operator=( VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineViewportCoarseSampleOrderStateCreateInfoNV ) );
+      *reinterpret_cast<VkPipelineViewportCoarseSampleOrderStateCreateInfoNV*>(this) = rhs;
       return *this;
     }
 
@@ -43246,12 +43414,12 @@
 
     PipelineViewportExclusiveScissorStateCreateInfoNV( VkPipelineViewportExclusiveScissorStateCreateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineViewportExclusiveScissorStateCreateInfoNV ) );
+      *reinterpret_cast<VkPipelineViewportExclusiveScissorStateCreateInfoNV*>(this) = rhs;
     }
 
     PipelineViewportExclusiveScissorStateCreateInfoNV& operator=( VkPipelineViewportExclusiveScissorStateCreateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineViewportExclusiveScissorStateCreateInfoNV ) );
+      *reinterpret_cast<VkPipelineViewportExclusiveScissorStateCreateInfoNV*>(this) = rhs;
       return *this;
     }
 
@@ -43316,12 +43484,12 @@
 
     ShadingRatePaletteNV( VkShadingRatePaletteNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ShadingRatePaletteNV ) );
+      *reinterpret_cast<VkShadingRatePaletteNV*>(this) = rhs;
     }
 
     ShadingRatePaletteNV& operator=( VkShadingRatePaletteNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ShadingRatePaletteNV ) );
+      *reinterpret_cast<VkShadingRatePaletteNV*>(this) = rhs;
       return *this;
     }
 
@@ -43375,12 +43543,12 @@
 
     PipelineViewportShadingRateImageStateCreateInfoNV( VkPipelineViewportShadingRateImageStateCreateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineViewportShadingRateImageStateCreateInfoNV ) );
+      *reinterpret_cast<VkPipelineViewportShadingRateImageStateCreateInfoNV*>(this) = rhs;
     }
 
     PipelineViewportShadingRateImageStateCreateInfoNV& operator=( VkPipelineViewportShadingRateImageStateCreateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineViewportShadingRateImageStateCreateInfoNV ) );
+      *reinterpret_cast<VkPipelineViewportShadingRateImageStateCreateInfoNV*>(this) = rhs;
       return *this;
     }
 
@@ -43457,12 +43625,12 @@
 
     ViewportSwizzleNV( VkViewportSwizzleNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ViewportSwizzleNV ) );
+      *reinterpret_cast<VkViewportSwizzleNV*>(this) = rhs;
     }
 
     ViewportSwizzleNV& operator=( VkViewportSwizzleNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ViewportSwizzleNV ) );
+      *reinterpret_cast<VkViewportSwizzleNV*>(this) = rhs;
       return *this;
     }
 
@@ -43532,12 +43700,12 @@
 
     PipelineViewportSwizzleStateCreateInfoNV( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineViewportSwizzleStateCreateInfoNV ) );
+      *reinterpret_cast<VkPipelineViewportSwizzleStateCreateInfoNV*>(this) = rhs;
     }
 
     PipelineViewportSwizzleStateCreateInfoNV& operator=( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineViewportSwizzleStateCreateInfoNV ) );
+      *reinterpret_cast<VkPipelineViewportSwizzleStateCreateInfoNV*>(this) = rhs;
       return *this;
     }
 
@@ -43610,12 +43778,12 @@
 
     ViewportWScalingNV( VkViewportWScalingNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ViewportWScalingNV ) );
+      *reinterpret_cast<VkViewportWScalingNV*>(this) = rhs;
     }
 
     ViewportWScalingNV& operator=( VkViewportWScalingNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ViewportWScalingNV ) );
+      *reinterpret_cast<VkViewportWScalingNV*>(this) = rhs;
       return *this;
     }
 
@@ -43669,12 +43837,12 @@
 
     PipelineViewportWScalingStateCreateInfoNV( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineViewportWScalingStateCreateInfoNV ) );
+      *reinterpret_cast<VkPipelineViewportWScalingStateCreateInfoNV*>(this) = rhs;
     }
 
     PipelineViewportWScalingStateCreateInfoNV& operator=( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PipelineViewportWScalingStateCreateInfoNV ) );
+      *reinterpret_cast<VkPipelineViewportWScalingStateCreateInfoNV*>(this) = rhs;
       return *this;
     }
 
@@ -43746,12 +43914,12 @@
 
     PresentFrameTokenGGP( VkPresentFrameTokenGGP const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PresentFrameTokenGGP ) );
+      *reinterpret_cast<VkPresentFrameTokenGGP*>(this) = rhs;
     }
 
     PresentFrameTokenGGP& operator=( VkPresentFrameTokenGGP const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PresentFrameTokenGGP ) );
+      *reinterpret_cast<VkPresentFrameTokenGGP*>(this) = rhs;
       return *this;
     }
 
@@ -43817,12 +43985,12 @@
 
     PresentInfoKHR( VkPresentInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PresentInfoKHR ) );
+      *reinterpret_cast<VkPresentInfoKHR*>(this) = rhs;
     }
 
     PresentInfoKHR& operator=( VkPresentInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PresentInfoKHR ) );
+      *reinterpret_cast<VkPresentInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -43928,12 +44096,12 @@
 
     RectLayerKHR( VkRectLayerKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( RectLayerKHR ) );
+      *reinterpret_cast<VkRectLayerKHR*>(this) = rhs;
     }
 
     RectLayerKHR& operator=( VkRectLayerKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( RectLayerKHR ) );
+      *reinterpret_cast<VkRectLayerKHR*>(this) = rhs;
       return *this;
     }
 
@@ -43993,12 +44161,12 @@
 
     PresentRegionKHR( VkPresentRegionKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PresentRegionKHR ) );
+      *reinterpret_cast<VkPresentRegionKHR*>(this) = rhs;
     }
 
     PresentRegionKHR& operator=( VkPresentRegionKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PresentRegionKHR ) );
+      *reinterpret_cast<VkPresentRegionKHR*>(this) = rhs;
       return *this;
     }
 
@@ -44050,12 +44218,12 @@
 
     PresentRegionsKHR( VkPresentRegionsKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PresentRegionsKHR ) );
+      *reinterpret_cast<VkPresentRegionsKHR*>(this) = rhs;
     }
 
     PresentRegionsKHR& operator=( VkPresentRegionsKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PresentRegionsKHR ) );
+      *reinterpret_cast<VkPresentRegionsKHR*>(this) = rhs;
       return *this;
     }
 
@@ -44120,12 +44288,12 @@
 
     PresentTimeGOOGLE( VkPresentTimeGOOGLE const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PresentTimeGOOGLE ) );
+      *reinterpret_cast<VkPresentTimeGOOGLE*>(this) = rhs;
     }
 
     PresentTimeGOOGLE& operator=( VkPresentTimeGOOGLE const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PresentTimeGOOGLE ) );
+      *reinterpret_cast<VkPresentTimeGOOGLE*>(this) = rhs;
       return *this;
     }
 
@@ -44177,12 +44345,12 @@
 
     PresentTimesInfoGOOGLE( VkPresentTimesInfoGOOGLE const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PresentTimesInfoGOOGLE ) );
+      *reinterpret_cast<VkPresentTimesInfoGOOGLE*>(this) = rhs;
     }
 
     PresentTimesInfoGOOGLE& operator=( VkPresentTimesInfoGOOGLE const & rhs )
     {
-      memcpy( this, &rhs, sizeof( PresentTimesInfoGOOGLE ) );
+      *reinterpret_cast<VkPresentTimesInfoGOOGLE*>(this) = rhs;
       return *this;
     }
 
@@ -44245,12 +44413,12 @@
 
     ProtectedSubmitInfo( VkProtectedSubmitInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ProtectedSubmitInfo ) );
+      *reinterpret_cast<VkProtectedSubmitInfo*>(this) = rhs;
     }
 
     ProtectedSubmitInfo& operator=( VkProtectedSubmitInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ProtectedSubmitInfo ) );
+      *reinterpret_cast<VkProtectedSubmitInfo*>(this) = rhs;
       return *this;
     }
 
@@ -44311,12 +44479,12 @@
 
     QueryPoolCreateInfo( VkQueryPoolCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( QueryPoolCreateInfo ) );
+      *reinterpret_cast<VkQueryPoolCreateInfo*>(this) = rhs;
     }
 
     QueryPoolCreateInfo& operator=( VkQueryPoolCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( QueryPoolCreateInfo ) );
+      *reinterpret_cast<VkQueryPoolCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -44395,12 +44563,12 @@
 
     QueryPoolCreateInfoINTEL( VkQueryPoolCreateInfoINTEL const & rhs )
     {
-      memcpy( this, &rhs, sizeof( QueryPoolCreateInfoINTEL ) );
+      *reinterpret_cast<VkQueryPoolCreateInfoINTEL*>(this) = rhs;
     }
 
     QueryPoolCreateInfoINTEL& operator=( VkQueryPoolCreateInfoINTEL const & rhs )
     {
-      memcpy( this, &rhs, sizeof( QueryPoolCreateInfoINTEL ) );
+      *reinterpret_cast<VkQueryPoolCreateInfoINTEL*>(this) = rhs;
       return *this;
     }
 
@@ -44561,12 +44729,12 @@
 
     RayTracingShaderGroupCreateInfoNV( VkRayTracingShaderGroupCreateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( RayTracingShaderGroupCreateInfoNV ) );
+      *reinterpret_cast<VkRayTracingShaderGroupCreateInfoNV*>(this) = rhs;
     }
 
     RayTracingShaderGroupCreateInfoNV& operator=( VkRayTracingShaderGroupCreateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( RayTracingShaderGroupCreateInfoNV ) );
+      *reinterpret_cast<VkRayTracingShaderGroupCreateInfoNV*>(this) = rhs;
       return *this;
     }
 
@@ -44669,12 +44837,12 @@
 
     RayTracingPipelineCreateInfoNV( VkRayTracingPipelineCreateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( RayTracingPipelineCreateInfoNV ) );
+      *reinterpret_cast<VkRayTracingPipelineCreateInfoNV*>(this) = rhs;
     }
 
     RayTracingPipelineCreateInfoNV& operator=( VkRayTracingPipelineCreateInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( RayTracingPipelineCreateInfoNV ) );
+      *reinterpret_cast<VkRayTracingPipelineCreateInfoNV*>(this) = rhs;
       return *this;
     }
 
@@ -44827,12 +44995,12 @@
 
     RenderPassBeginInfo( VkRenderPassBeginInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( RenderPassBeginInfo ) );
+      *reinterpret_cast<VkRenderPassBeginInfo*>(this) = rhs;
     }
 
     RenderPassBeginInfo& operator=( VkRenderPassBeginInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( RenderPassBeginInfo ) );
+      *reinterpret_cast<VkRenderPassBeginInfo*>(this) = rhs;
       return *this;
     }
 
@@ -44937,12 +45105,12 @@
 
     SubpassDescription( VkSubpassDescription const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SubpassDescription ) );
+      *reinterpret_cast<VkSubpassDescription*>(this) = rhs;
     }
 
     SubpassDescription& operator=( VkSubpassDescription const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SubpassDescription ) );
+      *reinterpret_cast<VkSubpassDescription*>(this) = rhs;
       return *this;
     }
 
@@ -45068,12 +45236,12 @@
 
     SubpassDependency( VkSubpassDependency const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SubpassDependency ) );
+      *reinterpret_cast<VkSubpassDependency*>(this) = rhs;
     }
 
     SubpassDependency& operator=( VkSubpassDependency const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SubpassDependency ) );
+      *reinterpret_cast<VkSubpassDependency*>(this) = rhs;
       return *this;
     }
 
@@ -45175,12 +45343,12 @@
 
     RenderPassCreateInfo( VkRenderPassCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( RenderPassCreateInfo ) );
+      *reinterpret_cast<VkRenderPassCreateInfo*>(this) = rhs;
     }
 
     RenderPassCreateInfo& operator=( VkRenderPassCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( RenderPassCreateInfo ) );
+      *reinterpret_cast<VkRenderPassCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -45303,12 +45471,12 @@
 
     SubpassDescription2KHR( VkSubpassDescription2KHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SubpassDescription2KHR ) );
+      *reinterpret_cast<VkSubpassDescription2KHR*>(this) = rhs;
     }
 
     SubpassDescription2KHR& operator=( VkSubpassDescription2KHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SubpassDescription2KHR ) );
+      *reinterpret_cast<VkSubpassDescription2KHR*>(this) = rhs;
       return *this;
     }
 
@@ -45457,12 +45625,12 @@
 
     SubpassDependency2KHR( VkSubpassDependency2KHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SubpassDependency2KHR ) );
+      *reinterpret_cast<VkSubpassDependency2KHR*>(this) = rhs;
     }
 
     SubpassDependency2KHR& operator=( VkSubpassDependency2KHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SubpassDependency2KHR ) );
+      *reinterpret_cast<VkSubpassDependency2KHR*>(this) = rhs;
       return *this;
     }
 
@@ -45589,12 +45757,12 @@
 
     RenderPassCreateInfo2KHR( VkRenderPassCreateInfo2KHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( RenderPassCreateInfo2KHR ) );
+      *reinterpret_cast<VkRenderPassCreateInfo2KHR*>(this) = rhs;
     }
 
     RenderPassCreateInfo2KHR& operator=( VkRenderPassCreateInfo2KHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( RenderPassCreateInfo2KHR ) );
+      *reinterpret_cast<VkRenderPassCreateInfo2KHR*>(this) = rhs;
       return *this;
     }
 
@@ -45713,12 +45881,12 @@
 
     RenderPassFragmentDensityMapCreateInfoEXT( VkRenderPassFragmentDensityMapCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( RenderPassFragmentDensityMapCreateInfoEXT ) );
+      *reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT*>(this) = rhs;
     }
 
     RenderPassFragmentDensityMapCreateInfoEXT& operator=( VkRenderPassFragmentDensityMapCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( RenderPassFragmentDensityMapCreateInfoEXT ) );
+      *reinterpret_cast<VkRenderPassFragmentDensityMapCreateInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -45775,12 +45943,12 @@
 
     RenderPassInputAttachmentAspectCreateInfo( VkRenderPassInputAttachmentAspectCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( RenderPassInputAttachmentAspectCreateInfo ) );
+      *reinterpret_cast<VkRenderPassInputAttachmentAspectCreateInfo*>(this) = rhs;
     }
 
     RenderPassInputAttachmentAspectCreateInfo& operator=( VkRenderPassInputAttachmentAspectCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( RenderPassInputAttachmentAspectCreateInfo ) );
+      *reinterpret_cast<VkRenderPassInputAttachmentAspectCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -45853,12 +46021,12 @@
 
     RenderPassMultiviewCreateInfo( VkRenderPassMultiviewCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( RenderPassMultiviewCreateInfo ) );
+      *reinterpret_cast<VkRenderPassMultiviewCreateInfo*>(this) = rhs;
     }
 
     RenderPassMultiviewCreateInfo& operator=( VkRenderPassMultiviewCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( RenderPassMultiviewCreateInfo ) );
+      *reinterpret_cast<VkRenderPassMultiviewCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -45955,12 +46123,12 @@
 
     SubpassSampleLocationsEXT( VkSubpassSampleLocationsEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SubpassSampleLocationsEXT ) );
+      *reinterpret_cast<VkSubpassSampleLocationsEXT*>(this) = rhs;
     }
 
     SubpassSampleLocationsEXT& operator=( VkSubpassSampleLocationsEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SubpassSampleLocationsEXT ) );
+      *reinterpret_cast<VkSubpassSampleLocationsEXT*>(this) = rhs;
       return *this;
     }
 
@@ -46016,12 +46184,12 @@
 
     RenderPassSampleLocationsBeginInfoEXT( VkRenderPassSampleLocationsBeginInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( RenderPassSampleLocationsBeginInfoEXT ) );
+      *reinterpret_cast<VkRenderPassSampleLocationsBeginInfoEXT*>(this) = rhs;
     }
 
     RenderPassSampleLocationsBeginInfoEXT& operator=( VkRenderPassSampleLocationsBeginInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( RenderPassSampleLocationsBeginInfoEXT ) );
+      *reinterpret_cast<VkRenderPassSampleLocationsBeginInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -46130,12 +46298,12 @@
 
     SamplerCreateInfo( VkSamplerCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SamplerCreateInfo ) );
+      *reinterpret_cast<VkSamplerCreateInfo*>(this) = rhs;
     }
 
     SamplerCreateInfo& operator=( VkSamplerCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SamplerCreateInfo ) );
+      *reinterpret_cast<VkSamplerCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -46310,12 +46478,12 @@
 
     SamplerReductionModeCreateInfoEXT( VkSamplerReductionModeCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SamplerReductionModeCreateInfoEXT ) );
+      *reinterpret_cast<VkSamplerReductionModeCreateInfoEXT*>(this) = rhs;
     }
 
     SamplerReductionModeCreateInfoEXT& operator=( VkSamplerReductionModeCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SamplerReductionModeCreateInfoEXT ) );
+      *reinterpret_cast<VkSamplerReductionModeCreateInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -46384,12 +46552,12 @@
 
     SamplerYcbcrConversionCreateInfo( VkSamplerYcbcrConversionCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SamplerYcbcrConversionCreateInfo ) );
+      *reinterpret_cast<VkSamplerYcbcrConversionCreateInfo*>(this) = rhs;
     }
 
     SamplerYcbcrConversionCreateInfo& operator=( VkSamplerYcbcrConversionCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SamplerYcbcrConversionCreateInfo ) );
+      *reinterpret_cast<VkSamplerYcbcrConversionCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -46533,12 +46701,12 @@
 
     SamplerYcbcrConversionInfo( VkSamplerYcbcrConversionInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SamplerYcbcrConversionInfo ) );
+      *reinterpret_cast<VkSamplerYcbcrConversionInfo*>(this) = rhs;
     }
 
     SamplerYcbcrConversionInfo& operator=( VkSamplerYcbcrConversionInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SamplerYcbcrConversionInfo ) );
+      *reinterpret_cast<VkSamplerYcbcrConversionInfo*>(this) = rhs;
       return *this;
     }
 
@@ -46593,12 +46761,12 @@
 
     SemaphoreCreateInfo( VkSemaphoreCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SemaphoreCreateInfo ) );
+      *reinterpret_cast<VkSemaphoreCreateInfo*>(this) = rhs;
     }
 
     SemaphoreCreateInfo& operator=( VkSemaphoreCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SemaphoreCreateInfo ) );
+      *reinterpret_cast<VkSemaphoreCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -46655,12 +46823,12 @@
 
     SemaphoreGetFdInfoKHR( VkSemaphoreGetFdInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SemaphoreGetFdInfoKHR ) );
+      *reinterpret_cast<VkSemaphoreGetFdInfoKHR*>(this) = rhs;
     }
 
     SemaphoreGetFdInfoKHR& operator=( VkSemaphoreGetFdInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SemaphoreGetFdInfoKHR ) );
+      *reinterpret_cast<VkSemaphoreGetFdInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -46726,12 +46894,12 @@
 
     SemaphoreGetWin32HandleInfoKHR( VkSemaphoreGetWin32HandleInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SemaphoreGetWin32HandleInfoKHR ) );
+      *reinterpret_cast<VkSemaphoreGetWin32HandleInfoKHR*>(this) = rhs;
     }
 
     SemaphoreGetWin32HandleInfoKHR& operator=( VkSemaphoreGetWin32HandleInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SemaphoreGetWin32HandleInfoKHR ) );
+      *reinterpret_cast<VkSemaphoreGetWin32HandleInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -46799,12 +46967,12 @@
 
     ShaderModuleCreateInfo( VkShaderModuleCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ShaderModuleCreateInfo ) );
+      *reinterpret_cast<VkShaderModuleCreateInfo*>(this) = rhs;
     }
 
     ShaderModuleCreateInfo& operator=( VkShaderModuleCreateInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ShaderModuleCreateInfo ) );
+      *reinterpret_cast<VkShaderModuleCreateInfo*>(this) = rhs;
       return *this;
     }
 
@@ -46875,12 +47043,12 @@
 
     ShaderModuleValidationCacheCreateInfoEXT( VkShaderModuleValidationCacheCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ShaderModuleValidationCacheCreateInfoEXT ) );
+      *reinterpret_cast<VkShaderModuleValidationCacheCreateInfoEXT*>(this) = rhs;
     }
 
     ShaderModuleValidationCacheCreateInfoEXT& operator=( VkShaderModuleValidationCacheCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ShaderModuleValidationCacheCreateInfoEXT ) );
+      *reinterpret_cast<VkShaderModuleValidationCacheCreateInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -47173,12 +47341,12 @@
 
     StreamDescriptorSurfaceCreateInfoGGP( VkStreamDescriptorSurfaceCreateInfoGGP const & rhs )
     {
-      memcpy( this, &rhs, sizeof( StreamDescriptorSurfaceCreateInfoGGP ) );
+      *reinterpret_cast<VkStreamDescriptorSurfaceCreateInfoGGP*>(this) = rhs;
     }
 
     StreamDescriptorSurfaceCreateInfoGGP& operator=( VkStreamDescriptorSurfaceCreateInfoGGP const & rhs )
     {
-      memcpy( this, &rhs, sizeof( StreamDescriptorSurfaceCreateInfoGGP ) );
+      *reinterpret_cast<VkStreamDescriptorSurfaceCreateInfoGGP*>(this) = rhs;
       return *this;
     }
 
@@ -47254,12 +47422,12 @@
 
     SubmitInfo( VkSubmitInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SubmitInfo ) );
+      *reinterpret_cast<VkSubmitInfo*>(this) = rhs;
     }
 
     SubmitInfo& operator=( VkSubmitInfo const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SubmitInfo ) );
+      *reinterpret_cast<VkSubmitInfo*>(this) = rhs;
       return *this;
     }
 
@@ -47362,12 +47530,12 @@
 
     SubpassBeginInfoKHR( VkSubpassBeginInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SubpassBeginInfoKHR ) );
+      *reinterpret_cast<VkSubpassBeginInfoKHR*>(this) = rhs;
     }
 
     SubpassBeginInfoKHR& operator=( VkSubpassBeginInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SubpassBeginInfoKHR ) );
+      *reinterpret_cast<VkSubpassBeginInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -47426,12 +47594,12 @@
 
     SubpassDescriptionDepthStencilResolveKHR( VkSubpassDescriptionDepthStencilResolveKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SubpassDescriptionDepthStencilResolveKHR ) );
+      *reinterpret_cast<VkSubpassDescriptionDepthStencilResolveKHR*>(this) = rhs;
     }
 
     SubpassDescriptionDepthStencilResolveKHR& operator=( VkSubpassDescriptionDepthStencilResolveKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SubpassDescriptionDepthStencilResolveKHR ) );
+      *reinterpret_cast<VkSubpassDescriptionDepthStencilResolveKHR*>(this) = rhs;
       return *this;
     }
 
@@ -47501,12 +47669,12 @@
 
     SubpassEndInfoKHR( VkSubpassEndInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SubpassEndInfoKHR ) );
+      *reinterpret_cast<VkSubpassEndInfoKHR*>(this) = rhs;
     }
 
     SubpassEndInfoKHR& operator=( VkSubpassEndInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SubpassEndInfoKHR ) );
+      *reinterpret_cast<VkSubpassEndInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -47684,12 +47852,12 @@
 
     SurfaceCapabilitiesFullScreenExclusiveEXT( VkSurfaceCapabilitiesFullScreenExclusiveEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SurfaceCapabilitiesFullScreenExclusiveEXT ) );
+      *reinterpret_cast<VkSurfaceCapabilitiesFullScreenExclusiveEXT*>(this) = rhs;
     }
 
     SurfaceCapabilitiesFullScreenExclusiveEXT& operator=( VkSurfaceCapabilitiesFullScreenExclusiveEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SurfaceCapabilitiesFullScreenExclusiveEXT ) );
+      *reinterpret_cast<VkSurfaceCapabilitiesFullScreenExclusiveEXT*>(this) = rhs;
       return *this;
     }
 
@@ -47807,12 +47975,12 @@
 
     SurfaceFullScreenExclusiveInfoEXT( VkSurfaceFullScreenExclusiveInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SurfaceFullScreenExclusiveInfoEXT ) );
+      *reinterpret_cast<VkSurfaceFullScreenExclusiveInfoEXT*>(this) = rhs;
     }
 
     SurfaceFullScreenExclusiveInfoEXT& operator=( VkSurfaceFullScreenExclusiveInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SurfaceFullScreenExclusiveInfoEXT ) );
+      *reinterpret_cast<VkSurfaceFullScreenExclusiveInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -47869,12 +48037,12 @@
 
     SurfaceFullScreenExclusiveWin32InfoEXT( VkSurfaceFullScreenExclusiveWin32InfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SurfaceFullScreenExclusiveWin32InfoEXT ) );
+      *reinterpret_cast<VkSurfaceFullScreenExclusiveWin32InfoEXT*>(this) = rhs;
     }
 
     SurfaceFullScreenExclusiveWin32InfoEXT& operator=( VkSurfaceFullScreenExclusiveWin32InfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SurfaceFullScreenExclusiveWin32InfoEXT ) );
+      *reinterpret_cast<VkSurfaceFullScreenExclusiveWin32InfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -47930,12 +48098,12 @@
 
     SurfaceProtectedCapabilitiesKHR( VkSurfaceProtectedCapabilitiesKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SurfaceProtectedCapabilitiesKHR ) );
+      *reinterpret_cast<VkSurfaceProtectedCapabilitiesKHR*>(this) = rhs;
     }
 
     SurfaceProtectedCapabilitiesKHR& operator=( VkSurfaceProtectedCapabilitiesKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SurfaceProtectedCapabilitiesKHR ) );
+      *reinterpret_cast<VkSurfaceProtectedCapabilitiesKHR*>(this) = rhs;
       return *this;
     }
 
@@ -47990,12 +48158,12 @@
 
     SwapchainCounterCreateInfoEXT( VkSwapchainCounterCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SwapchainCounterCreateInfoEXT ) );
+      *reinterpret_cast<VkSwapchainCounterCreateInfoEXT*>(this) = rhs;
     }
 
     SwapchainCounterCreateInfoEXT& operator=( VkSwapchainCounterCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SwapchainCounterCreateInfoEXT ) );
+      *reinterpret_cast<VkSwapchainCounterCreateInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -48080,12 +48248,12 @@
 
     SwapchainCreateInfoKHR( VkSwapchainCreateInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SwapchainCreateInfoKHR ) );
+      *reinterpret_cast<VkSwapchainCreateInfoKHR*>(this) = rhs;
     }
 
     SwapchainCreateInfoKHR& operator=( VkSwapchainCreateInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SwapchainCreateInfoKHR ) );
+      *reinterpret_cast<VkSwapchainCreateInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -48260,12 +48428,12 @@
 
     SwapchainDisplayNativeHdrCreateInfoAMD( VkSwapchainDisplayNativeHdrCreateInfoAMD const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SwapchainDisplayNativeHdrCreateInfoAMD ) );
+      *reinterpret_cast<VkSwapchainDisplayNativeHdrCreateInfoAMD*>(this) = rhs;
     }
 
     SwapchainDisplayNativeHdrCreateInfoAMD& operator=( VkSwapchainDisplayNativeHdrCreateInfoAMD const & rhs )
     {
-      memcpy( this, &rhs, sizeof( SwapchainDisplayNativeHdrCreateInfoAMD ) );
+      *reinterpret_cast<VkSwapchainDisplayNativeHdrCreateInfoAMD*>(this) = rhs;
       return *this;
     }
 
@@ -48357,12 +48525,12 @@
 
     ValidationCacheCreateInfoEXT( VkValidationCacheCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ValidationCacheCreateInfoEXT ) );
+      *reinterpret_cast<VkValidationCacheCreateInfoEXT*>(this) = rhs;
     }
 
     ValidationCacheCreateInfoEXT& operator=( VkValidationCacheCreateInfoEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ValidationCacheCreateInfoEXT ) );
+      *reinterpret_cast<VkValidationCacheCreateInfoEXT*>(this) = rhs;
       return *this;
     }
 
@@ -48439,12 +48607,12 @@
 
     ValidationFeaturesEXT( VkValidationFeaturesEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ValidationFeaturesEXT ) );
+      *reinterpret_cast<VkValidationFeaturesEXT*>(this) = rhs;
     }
 
     ValidationFeaturesEXT& operator=( VkValidationFeaturesEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ValidationFeaturesEXT ) );
+      *reinterpret_cast<VkValidationFeaturesEXT*>(this) = rhs;
       return *this;
     }
 
@@ -48525,12 +48693,12 @@
 
     ValidationFlagsEXT( VkValidationFlagsEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ValidationFlagsEXT ) );
+      *reinterpret_cast<VkValidationFlagsEXT*>(this) = rhs;
     }
 
     ValidationFlagsEXT& operator=( VkValidationFlagsEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ValidationFlagsEXT ) );
+      *reinterpret_cast<VkValidationFlagsEXT*>(this) = rhs;
       return *this;
     }
 
@@ -48596,12 +48764,12 @@
 
     ViSurfaceCreateInfoNN( VkViSurfaceCreateInfoNN const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ViSurfaceCreateInfoNN ) );
+      *reinterpret_cast<VkViSurfaceCreateInfoNN*>(this) = rhs;
     }
 
     ViSurfaceCreateInfoNN& operator=( VkViSurfaceCreateInfoNN const & rhs )
     {
-      memcpy( this, &rhs, sizeof( ViSurfaceCreateInfoNN ) );
+      *reinterpret_cast<VkViSurfaceCreateInfoNN*>(this) = rhs;
       return *this;
     }
 
@@ -48670,12 +48838,12 @@
 
     WaylandSurfaceCreateInfoKHR( VkWaylandSurfaceCreateInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( WaylandSurfaceCreateInfoKHR ) );
+      *reinterpret_cast<VkWaylandSurfaceCreateInfoKHR*>(this) = rhs;
     }
 
     WaylandSurfaceCreateInfoKHR& operator=( VkWaylandSurfaceCreateInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( WaylandSurfaceCreateInfoKHR ) );
+      *reinterpret_cast<VkWaylandSurfaceCreateInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -48760,12 +48928,12 @@
 
     Win32KeyedMutexAcquireReleaseInfoKHR( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) );
+      *reinterpret_cast<VkWin32KeyedMutexAcquireReleaseInfoKHR*>(this) = rhs;
     }
 
     Win32KeyedMutexAcquireReleaseInfoKHR& operator=( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) );
+      *reinterpret_cast<VkWin32KeyedMutexAcquireReleaseInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -48882,12 +49050,12 @@
 
     Win32KeyedMutexAcquireReleaseInfoNV( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) );
+      *reinterpret_cast<VkWin32KeyedMutexAcquireReleaseInfoNV*>(this) = rhs;
     }
 
     Win32KeyedMutexAcquireReleaseInfoNV& operator=( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) );
+      *reinterpret_cast<VkWin32KeyedMutexAcquireReleaseInfoNV*>(this) = rhs;
       return *this;
     }
 
@@ -48996,12 +49164,12 @@
 
     Win32SurfaceCreateInfoKHR( VkWin32SurfaceCreateInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( Win32SurfaceCreateInfoKHR ) );
+      *reinterpret_cast<VkWin32SurfaceCreateInfoKHR*>(this) = rhs;
     }
 
     Win32SurfaceCreateInfoKHR& operator=( VkWin32SurfaceCreateInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( Win32SurfaceCreateInfoKHR ) );
+      *reinterpret_cast<VkWin32SurfaceCreateInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -49087,12 +49255,12 @@
 
     WriteDescriptorSet( VkWriteDescriptorSet const & rhs )
     {
-      memcpy( this, &rhs, sizeof( WriteDescriptorSet ) );
+      *reinterpret_cast<VkWriteDescriptorSet*>(this) = rhs;
     }
 
     WriteDescriptorSet& operator=( VkWriteDescriptorSet const & rhs )
     {
-      memcpy( this, &rhs, sizeof( WriteDescriptorSet ) );
+      *reinterpret_cast<VkWriteDescriptorSet*>(this) = rhs;
       return *this;
     }
 
@@ -49205,12 +49373,12 @@
 
     WriteDescriptorSetAccelerationStructureNV( VkWriteDescriptorSetAccelerationStructureNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( WriteDescriptorSetAccelerationStructureNV ) );
+      *reinterpret_cast<VkWriteDescriptorSetAccelerationStructureNV*>(this) = rhs;
     }
 
     WriteDescriptorSetAccelerationStructureNV& operator=( VkWriteDescriptorSetAccelerationStructureNV const & rhs )
     {
-      memcpy( this, &rhs, sizeof( WriteDescriptorSetAccelerationStructureNV ) );
+      *reinterpret_cast<VkWriteDescriptorSetAccelerationStructureNV*>(this) = rhs;
       return *this;
     }
 
@@ -49275,12 +49443,12 @@
 
     WriteDescriptorSetInlineUniformBlockEXT( VkWriteDescriptorSetInlineUniformBlockEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( WriteDescriptorSetInlineUniformBlockEXT ) );
+      *reinterpret_cast<VkWriteDescriptorSetInlineUniformBlockEXT*>(this) = rhs;
     }
 
     WriteDescriptorSetInlineUniformBlockEXT& operator=( VkWriteDescriptorSetInlineUniformBlockEXT const & rhs )
     {
-      memcpy( this, &rhs, sizeof( WriteDescriptorSetInlineUniformBlockEXT ) );
+      *reinterpret_cast<VkWriteDescriptorSetInlineUniformBlockEXT*>(this) = rhs;
       return *this;
     }
 
@@ -49348,12 +49516,12 @@
 
     XcbSurfaceCreateInfoKHR( VkXcbSurfaceCreateInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( XcbSurfaceCreateInfoKHR ) );
+      *reinterpret_cast<VkXcbSurfaceCreateInfoKHR*>(this) = rhs;
     }
 
     XcbSurfaceCreateInfoKHR& operator=( VkXcbSurfaceCreateInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( XcbSurfaceCreateInfoKHR ) );
+      *reinterpret_cast<VkXcbSurfaceCreateInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -49430,12 +49598,12 @@
 
     XlibSurfaceCreateInfoKHR( VkXlibSurfaceCreateInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( XlibSurfaceCreateInfoKHR ) );
+      *reinterpret_cast<VkXlibSurfaceCreateInfoKHR*>(this) = rhs;
     }
 
     XlibSurfaceCreateInfoKHR& operator=( VkXlibSurfaceCreateInfoKHR const & rhs )
     {
-      memcpy( this, &rhs, sizeof( XlibSurfaceCreateInfoKHR ) );
+      *reinterpret_cast<VkXlibSurfaceCreateInfoKHR*>(this) = rhs;
       return *this;
     }
 
@@ -57562,6 +57730,8 @@
   template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceShaderAtomicInt64FeaturesKHR>{ enum { value = true }; };
   template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceShaderAtomicInt64FeaturesKHR>{ enum { value = true }; };
   template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceShaderCorePropertiesAMD>{ enum { value = true }; };
+  template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT>{ enum { value = true }; };
+  template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT>{ enum { value = true }; };
   template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceShaderDrawParametersFeatures>{ enum { value = true }; };
   template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceShaderDrawParametersFeatures>{ enum { value = true }; };
   template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceShaderImageFootprintFeaturesNV>{ enum { value = true }; };
@@ -57575,6 +57745,9 @@
   template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceShadingRateImageFeaturesNV>{ enum { value = true }; };
   template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceShadingRateImagePropertiesNV>{ enum { value = true }; };
   template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceSubgroupProperties>{ enum { value = true }; };
+  template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceTexelBufferAlignmentFeaturesEXT>{ enum { value = true }; };
+  template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceTexelBufferAlignmentFeaturesEXT>{ enum { value = true }; };
+  template <> struct isStructureChainValid<PhysicalDeviceMemoryProperties2, PhysicalDeviceTexelBufferAlignmentPropertiesEXT>{ enum { value = true }; };
   template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceTransformFeedbackFeaturesEXT>{ enum { value = true }; };
   template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceTransformFeedbackFeaturesEXT>{ enum { value = true }; };
   template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceTransformFeedbackPropertiesEXT>{ enum { value = true }; };
@@ -58095,7 +58268,7 @@
     // This interface is designed to be used for per-device function pointers in combination with a linked vulkan library.
     void init(vk::Instance const& instance, vk::Device const& device = {})
     {
-      init(instance, ::vkGetInstanceProcAddr, device, device ? ::vkGetDeviceProcAddr : nullptr);
+      init(static_cast<VkInstance>(instance), ::vkGetInstanceProcAddr, static_cast<VkDevice>(device), device ? ::vkGetDeviceProcAddr : nullptr);
     }
 #endif // !defined(VK_NO_PROTOTYPES)
 
diff --git a/include/vulkan/vulkan_core.h b/include/vulkan/vulkan_core.h
index bc15e27..7a6739f 100644
--- a/include/vulkan/vulkan_core.h
+++ b/include/vulkan/vulkan_core.h
@@ -43,7 +43,7 @@
 #define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
 #define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
 // Version of this file
-#define VK_HEADER_VERSION 112
+#define VK_HEADER_VERSION 113
 
 
 #define VK_NULL_HANDLE 0
@@ -504,6 +504,9 @@
     VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001,
     VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,
     VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
@@ -9476,6 +9479,37 @@
     uint32_t                                    queryCount);
 #endif
 
+
+#define VK_EXT_shader_demote_to_helper_invocation 1
+#define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION 1
+#define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME "VK_EXT_shader_demote_to_helper_invocation"
+typedef struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           shaderDemoteToHelperInvocation;
+} VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT;
+
+
+
+#define VK_EXT_texel_buffer_alignment 1
+#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION 1
+#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME "VK_EXT_texel_buffer_alignment"
+typedef struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           texelBufferAlignment;
+} VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT;
+
+typedef struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT {
+    VkStructureType    sType;
+    void*              pNext;
+    VkDeviceSize       storageTexelBufferOffsetAlignmentBytes;
+    VkBool32           storageTexelBufferOffsetSingleTexelAlignment;
+    VkDeviceSize       uniformTexelBufferOffsetAlignmentBytes;
+    VkBool32           uniformTexelBufferOffsetSingleTexelAlignment;
+} VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT;
+
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/registry/validusage.json b/registry/validusage.json
index 9f9e6bd..12c5086 100644
--- a/registry/validusage.json
+++ b/registry/validusage.json
@@ -1,9 +1,9 @@
 {
   "version info": {
     "schema version": 2,
-    "api version": "1.1.112",
-    "comment": "from git branch: github-master commit: 7376fb77d1a43d79bb1cfd919d493d21b963d5ef",
-    "date": "2019-06-24 03:30:45Z"
+    "api version": "1.1.113",
+    "comment": "from git branch: github-master commit: 8897c572ce5473486bb92e3ab9574a5f130794c3",
+    "date": "2019-06-30 06:14:36Z"
   },
   "validation": {
     "vkGetInstanceProcAddr": {
@@ -362,7 +362,7 @@
         },
         {
           "vuid": "VUID-VkDeviceCreateInfo-pNext-pNext",
-          "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>, <a href=\"#VkDeviceMemoryOverallocationCreateInfoAMD\">VkDeviceMemoryOverallocationCreateInfoAMD</a>, <a href=\"#VkPhysicalDevice16BitStorageFeatures\">VkPhysicalDevice16BitStorageFeatures</a>, <a href=\"#VkPhysicalDevice8BitStorageFeaturesKHR\">VkPhysicalDevice8BitStorageFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceASTCDecodeFeaturesEXT\">VkPhysicalDeviceASTCDecodeFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT\">VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeaturesEXT\">VkPhysicalDeviceBufferDeviceAddressFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceComputeShaderDerivativesFeaturesNV\">VkPhysicalDeviceComputeShaderDerivativesFeaturesNV</a>, <a href=\"#VkPhysicalDeviceConditionalRenderingFeaturesEXT\">VkPhysicalDeviceConditionalRenderingFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixFeaturesNV\">VkPhysicalDeviceCooperativeMatrixFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCornerSampledImageFeaturesNV\">VkPhysicalDeviceCornerSampledImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCoverageReductionModeFeaturesNV\">VkPhysicalDeviceCoverageReductionModeFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV\">VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDepthClipEnableFeaturesEXT\">VkPhysicalDeviceDepthClipEnableFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExclusiveScissorFeaturesNV\">VkPhysicalDeviceExclusiveScissorFeaturesNV</a>, <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a>, <a href=\"#VkPhysicalDeviceFloat16Int8FeaturesKHR\">VkPhysicalDeviceFloat16Int8FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapFeaturesEXT\">VkPhysicalDeviceFragmentDensityMapFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV\">VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV</a>, <a href=\"#VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT\">VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceHostQueryResetFeaturesEXT\">VkPhysicalDeviceHostQueryResetFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockFeaturesEXT\">VkPhysicalDeviceInlineUniformBlockFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMemoryPriorityFeaturesEXT\">VkPhysicalDeviceMemoryPriorityFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMeshShaderFeaturesNV\">VkPhysicalDeviceMeshShaderFeaturesNV</a>, <a href=\"#VkPhysicalDeviceMultiviewFeatures\">VkPhysicalDeviceMultiviewFeatures</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryFeatures\">VkPhysicalDeviceProtectedMemoryFeatures</a>, <a href=\"#VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV\">VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV</a>, <a href=\"#VkPhysicalDeviceSamplerYcbcrConversionFeatures\">VkPhysicalDeviceSamplerYcbcrConversionFeatures</a>, <a href=\"#VkPhysicalDeviceScalarBlockLayoutFeaturesEXT\">VkPhysicalDeviceScalarBlockLayoutFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderAtomicInt64FeaturesKHR\">VkPhysicalDeviceShaderAtomicInt64FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderDrawParametersFeatures\">VkPhysicalDeviceShaderDrawParametersFeatures</a>, <a href=\"#VkPhysicalDeviceShaderImageFootprintFeaturesNV\">VkPhysicalDeviceShaderImageFootprintFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShaderIntegerFunctions2INTEL\">VkPhysicalDeviceShaderIntegerFunctions2INTEL</a>, <a href=\"#VkPhysicalDeviceShaderSMBuiltinsFeaturesNV\">VkPhysicalDeviceShaderSMBuiltinsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShadingRateImageFeaturesNV\">VkPhysicalDeviceShadingRateImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackFeaturesEXT\">VkPhysicalDeviceTransformFeedbackFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR\">VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceVariablePointersFeatures\">VkPhysicalDeviceVariablePointersFeatures</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT\">VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceVulkanMemoryModelFeaturesKHR\">VkPhysicalDeviceVulkanMemoryModelFeaturesKHR</a>, or <a href=\"#VkPhysicalDeviceYcbcrImageArraysFeaturesEXT\">VkPhysicalDeviceYcbcrImageArraysFeaturesEXT</a>"
+          "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>, <a href=\"#VkDeviceMemoryOverallocationCreateInfoAMD\">VkDeviceMemoryOverallocationCreateInfoAMD</a>, <a href=\"#VkPhysicalDevice16BitStorageFeatures\">VkPhysicalDevice16BitStorageFeatures</a>, <a href=\"#VkPhysicalDevice8BitStorageFeaturesKHR\">VkPhysicalDevice8BitStorageFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceASTCDecodeFeaturesEXT\">VkPhysicalDeviceASTCDecodeFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT\">VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeaturesEXT\">VkPhysicalDeviceBufferDeviceAddressFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceComputeShaderDerivativesFeaturesNV\">VkPhysicalDeviceComputeShaderDerivativesFeaturesNV</a>, <a href=\"#VkPhysicalDeviceConditionalRenderingFeaturesEXT\">VkPhysicalDeviceConditionalRenderingFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixFeaturesNV\">VkPhysicalDeviceCooperativeMatrixFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCornerSampledImageFeaturesNV\">VkPhysicalDeviceCornerSampledImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCoverageReductionModeFeaturesNV\">VkPhysicalDeviceCoverageReductionModeFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV\">VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDepthClipEnableFeaturesEXT\">VkPhysicalDeviceDepthClipEnableFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExclusiveScissorFeaturesNV\">VkPhysicalDeviceExclusiveScissorFeaturesNV</a>, <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a>, <a href=\"#VkPhysicalDeviceFloat16Int8FeaturesKHR\">VkPhysicalDeviceFloat16Int8FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapFeaturesEXT\">VkPhysicalDeviceFragmentDensityMapFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV\">VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV</a>, <a href=\"#VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT\">VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceHostQueryResetFeaturesEXT\">VkPhysicalDeviceHostQueryResetFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockFeaturesEXT\">VkPhysicalDeviceInlineUniformBlockFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMemoryPriorityFeaturesEXT\">VkPhysicalDeviceMemoryPriorityFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMeshShaderFeaturesNV\">VkPhysicalDeviceMeshShaderFeaturesNV</a>, <a href=\"#VkPhysicalDeviceMultiviewFeatures\">VkPhysicalDeviceMultiviewFeatures</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryFeatures\">VkPhysicalDeviceProtectedMemoryFeatures</a>, <a href=\"#VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV\">VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV</a>, <a href=\"#VkPhysicalDeviceSamplerYcbcrConversionFeatures\">VkPhysicalDeviceSamplerYcbcrConversionFeatures</a>, <a href=\"#VkPhysicalDeviceScalarBlockLayoutFeaturesEXT\">VkPhysicalDeviceScalarBlockLayoutFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderAtomicInt64FeaturesKHR\">VkPhysicalDeviceShaderAtomicInt64FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT\">VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderDrawParametersFeatures\">VkPhysicalDeviceShaderDrawParametersFeatures</a>, <a href=\"#VkPhysicalDeviceShaderImageFootprintFeaturesNV\">VkPhysicalDeviceShaderImageFootprintFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShaderIntegerFunctions2INTEL\">VkPhysicalDeviceShaderIntegerFunctions2INTEL</a>, <a href=\"#VkPhysicalDeviceShaderSMBuiltinsFeaturesNV\">VkPhysicalDeviceShaderSMBuiltinsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShadingRateImageFeaturesNV\">VkPhysicalDeviceShadingRateImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT\">VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackFeaturesEXT\">VkPhysicalDeviceTransformFeedbackFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR\">VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceVariablePointersFeatures\">VkPhysicalDeviceVariablePointersFeatures</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT\">VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceVulkanMemoryModelFeaturesKHR\">VkPhysicalDeviceVulkanMemoryModelFeaturesKHR</a>, or <a href=\"#VkPhysicalDeviceYcbcrImageArraysFeaturesEXT\">VkPhysicalDeviceYcbcrImageArraysFeaturesEXT</a>"
         },
         {
           "vuid": "VUID-VkDeviceCreateInfo-sType-unique",
@@ -6208,7 +6208,11 @@
         },
         {
           "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>"
+          "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=\"#VkPhysicalDeviceMemoryBudgetPropertiesEXT\">VkPhysicalDeviceMemoryBudgetPropertiesEXT</a> or <a href=\"#VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT\">VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT</a>"
+        },
+        {
+          "vuid": "VUID-VkPhysicalDeviceMemoryProperties2-sType-unique",
+          "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
         }
       ]
     },
@@ -7501,8 +7505,8 @@
           "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>"
         },
         {
-          "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-VkBufferViewCreateInfo-offset-02749",
+          "text": " If the <a href=\"#features-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-range-00928",
@@ -7556,6 +7560,16 @@
           "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-buffer-02750",
+          "text": " If the <a href=\"#features-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-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": {
@@ -23136,6 +23150,22 @@
         }
       ]
     },
+    "VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT": {
+      "(VK_EXT_shader_demote_to_helper_invocation)": [
+        {
+          "vuid": "VUID-VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT</code>"
+        }
+      ]
+    },
+    "VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT": {
+      "(VK_EXT_texel_buffer_alignment)": [
+        {
+          "vuid": "VUID-VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT</code>"
+        }
+      ]
+    },
     "VkPhysicalDevicePushDescriptorPropertiesKHR": {
       "(VK_KHR_push_descriptor)": [
         {
@@ -23344,6 +23374,14 @@
         }
       ]
     },
+    "VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT": {
+      "(VK_EXT_texel_buffer_alignment)": [
+        {
+          "vuid": "VUID-VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT-sType-sType",
+          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT</code>"
+        }
+      ]
+    },
     "vkGetPhysicalDeviceMultisamplePropertiesEXT": {
       "(VK_EXT_sample_locations)": [
         {
diff --git a/registry/vk.xml b/registry/vk.xml
index a0ebc9a..fd8d838 100644
--- a/registry/vk.xml
+++ b/registry/vk.xml
@@ -154,7 +154,7 @@
         <type category="define">// Vulkan 1.1 version number
 #define <name>VK_API_VERSION_1_1</name> <type>VK_MAKE_VERSION</type>(1, 1, 0)// Patch version should always be set to 0</type>
         <type category="define">// Version of this file
-#define <name>VK_HEADER_VERSION</name> 112</type>
+#define <name>VK_HEADER_VERSION</name> 113</type>
 
         <type category="define">
 #define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
@@ -3134,10 +3134,10 @@
             <member><type>void</type>*    <name>pNext</name><comment>Pointer to next structure</comment></member>
             <member><type>uint32_t</type> <name>shaderEngineCount</name><comment>number of shader engines</comment></member>
             <member><type>uint32_t</type> <name>shaderArraysPerEngineCount</name><comment>number of shader arrays</comment></member>
-            <member><type>uint32_t</type> <name>computeUnitsPerShaderArray</name><comment>number of CUs per shader array</comment></member>
+            <member><type>uint32_t</type> <name>computeUnitsPerShaderArray</name><comment>number of physical CUs per shader array</comment></member>
             <member><type>uint32_t</type> <name>simdPerComputeUnit</name><comment>number of SIMDs per compute unit</comment></member>
             <member><type>uint32_t</type> <name>wavefrontsPerSimd</name><comment>number of wavefront slots in each SIMD</comment></member>
-            <member><type>uint32_t</type> <name>wavefrontSize</name><comment>number of threads per wavefront</comment></member>
+            <member><type>uint32_t</type> <name>wavefrontSize</name><comment>maximum number of threads per wavefront</comment></member>
             <member><type>uint32_t</type> <name>sgprsPerSimd</name><comment>number of physical SGPRs per SIMD</comment></member>
             <member><type>uint32_t</type> <name>minSgprAllocation</name><comment>minimum number of SGPRs that can be allocated by a wave</comment></member>
             <member><type>uint32_t</type> <name>maxSgprAllocation</name><comment>number of available SGPRs</comment></member>
@@ -3964,6 +3964,24 @@
             <member><type>VkBool32</type>               <name>fragmentShaderPixelInterlock</name></member>
             <member><type>VkBool32</type>               <name>fragmentShaderShadingRateInterlock</name></member>
         </type>
+        <type category="struct" name="VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
+            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
+            <member noautovalidity="true"><type>void</type>*        <name>pNext</name></member>
+            <member><type>VkBool32</type>                           <name>shaderDemoteToHelperInvocation</name></member>
+        </type>
+        <type category="struct" name="VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
+            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
+            <member noautovalidity="true"><type>void</type>*        <name>pNext</name></member>
+            <member><type>VkBool32</type>                           <name>texelBufferAlignment</name></member>
+        </type>
+        <type category="struct" name="VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT" structextends="VkPhysicalDeviceMemoryProperties2" returnedonly="true">
+            <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
+            <member noautovalidity="true"><type>void</type>*        <name>pNext</name></member>
+            <member><type>VkDeviceSize</type>                       <name>storageTexelBufferOffsetAlignmentBytes</name></member>
+            <member><type>VkBool32</type>                           <name>storageTexelBufferOffsetSingleTexelAlignment</name></member>
+            <member><type>VkDeviceSize</type>                       <name>uniformTexelBufferOffsetAlignmentBytes</name></member>
+            <member><type>VkBool32</type>                           <name>uniformTexelBufferOffsetSingleTexelAlignment</name></member>
+        </type>
     </types>
 
     <comment>Vulkan enumerant (token) definitions</comment>
@@ -11076,10 +11094,12 @@
                 <enum value="&quot;VK_KHR_extension_276&quot;"              name="VK_KHR_extension_276"/>
             </require>
         </extension>
-        <extension name="VK_EXT_extension_277" number="277" type="device" author="EXT" contact="Jeff Bolz @jeffbolznv" supported="disabled">
+        <extension name="VK_EXT_shader_demote_to_helper_invocation" number="277" type="device" requires="VK_KHR_get_physical_device_properties2" author="EXT" contact="Jeff Bolz @jeffbolznv" supported="vulkan">
             <require>
-                <enum value="0"                                             name="VK_EXT_EXTENSION_277_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_277&quot;"              name="VK_EXT_extension_277"/>
+                <enum value="1"                                                     name="VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION"/>
+                <enum value="&quot;VK_EXT_shader_demote_to_helper_invocation&quot;" name="VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME"/>
+                <enum offset="0" extends="VkStructureType"                          name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT"/>
+                <type name="VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT"/>
             </require>
         </extension>
         <extension name="VK_NV_extension_278" number="278" type="device" author="NV" contact="Christoph Kubisch @pixeljetstream" supported="disabled">
@@ -11106,10 +11126,14 @@
                 <enum value="&quot;VK_ARM_extension_281&quot;"              name="VK_ARM_extension_281"/>
             </require>
         </extension>
-        <extension name="VK_EXT_extension_282" number="282" type="device" author="EXT" contact="Jeff Bolz @jeffbolznv" supported="disabled">
+        <extension name="VK_EXT_texel_buffer_alignment" number="282" type="device" requires="VK_KHR_get_physical_device_properties2" author="EXT" contact="Jeff Bolz @jeffbolznv" supported="vulkan">
             <require>
-                <enum value="0"                                             name="VK_EXT_EXTENSION_282_SPEC_VERSION"/>
-                <enum value="&quot;VK_EXT_extension_282&quot;"              name="VK_EXT_extension_282"/>
+                <enum value="1"                                             name="VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION"/>
+                <enum value="&quot;VK_EXT_texel_buffer_alignment&quot;"     name="VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME"/>
+                <enum offset="0" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT"/>
+                <enum offset="1" extends="VkStructureType"                  name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT"/>
+                <type name="VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT"/>
+                <type name="VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT"/>
             </require>
         </extension>
     </extensions>