diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -2,6 +2,12 @@
 
 ## WIP
 
+## [3.4] - 2020-06-03
+  - Bump API version to 1.2.142
+    - The spec includes specific locations for types, so we use them
+    - BaseType -> FundamentalTypes
+  - Add `withSomeStruct` helper
+
 ## [3.3.1] - 2020-05-18
   - Bump API version to 1.2.141
   - Generate haddocks for command parameters, #92
diff --git a/readme.md b/readme.md
--- a/readme.md
+++ b/readme.md
@@ -298,6 +298,30 @@
 - `pkg-config` and `SDL2` to build the Haskell `sdl2` package.
 - `glslang` (for the `glslangValidator` binary, to build the shaders)
 
+### Building on Windows
+
+- Clone this repo
+- Install stack
+  - https://docs.haskellstack.org/en/stable/install_and_upgrade/#windows
+- Make sure your graphics driver has installed `vulkan-1.dll` in `C:/windows/system32`
+- Install the LunarG Vulkan SDK
+  - https://vulkan.lunarg.com/sdk/home#windows
+  - Remember the installation directory, use in place of `C:/VulkanSDK/1.2.135.0` below
+  - We will link against `vulkan-1.lib` from this installation
+  - We will use the `glslangValidator` from this installation, make sure it's
+    in your `PATH` or otherwise made available to `stack`
+- Install the system dependencies via stack
+  - pkg-config
+  - SDL2
+  - `stack exec -- pacman -S mingw-w64-x86_64-pkg-config mingw-w64-x86_64-SDL2`
+  - Note that the above command will also install mingw's `libvulkan-1.dll`,
+    I had trouble getting things to run with this dll, so make sure you're
+    linking to the windows SDK installed earlier instead.
+- Build the packages
+  - `stack --extra-lib-dirs C:/VulkanSDK/1.2.135.0 build`
+- Run an example program
+  - `stack --extra-lib-dirs C:/VulkanSDK/1.2.135.0 run resize`
+
 ## Examples
 
 There exists a package to build some example programs in the
diff --git a/src/Vulkan/CStruct/Extends.hs b/src/Vulkan/CStruct/Extends.hs
--- a/src/Vulkan/CStruct/Extends.hs
+++ b/src/Vulkan/CStruct/Extends.hs
@@ -7,6 +7,8 @@
                                , Chain
                                , Extendss
                                , SomeStruct(..)
+                               , extendSomeStruct
+                               , withSomeStruct
                                , withSomeCStruct
                                , peekSomeCStruct
                                , pokeSomeCStruct
@@ -95,7 +97,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_calibrated_timestamps (CalibratedTimestampInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints (CheckpointDataNV)
 import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ClearAttachment)
-import {-# SOURCE #-} Vulkan.Core10.SharedTypes (ClearDepthStencilValue)
+import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ClearDepthStencilValue)
 import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ClearRect)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shading_rate_image (CoarseSampleLocationNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shading_rate_image (CoarseSampleOrderCustomNV)
@@ -191,8 +193,8 @@
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore (ExportSemaphoreCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_semaphore_win32 (ExportSemaphoreWin32HandleInfoKHR)
 import {-# SOURCE #-} Vulkan.Core10.ExtensionDiscovery (ExtensionProperties)
-import {-# SOURCE #-} Vulkan.Core10.SharedTypes (Extent2D)
-import {-# SOURCE #-} Vulkan.Core10.SharedTypes (Extent3D)
+import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (Extent2D)
+import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (Extent3D)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (ExternalBufferProperties)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities (ExternalFenceProperties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (ExternalFormatANDROID)
@@ -243,9 +245,9 @@
 import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ImageResolve)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (ImageSparseMemoryRequirementsInfo2)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage (ImageStencilUsageCreateInfo)
-import {-# SOURCE #-} Vulkan.Core10.Image (ImageSubresource)
-import {-# SOURCE #-} Vulkan.Core10.SharedTypes (ImageSubresourceLayers)
-import {-# SOURCE #-} Vulkan.Core10.SharedTypes (ImageSubresourceRange)
+import {-# SOURCE #-} Vulkan.Core10.SparseResourceMemoryManagement (ImageSubresource)
+import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ImageSubresourceLayers)
+import {-# SOURCE #-} Vulkan.Core10.ImageView (ImageSubresourceRange)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (ImageSwapchainCreateInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_astc_decode_mode (ImageViewASTCDecodeModeEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_image_view_handle (ImageViewAddressPropertiesNVX)
@@ -289,8 +291,8 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_win32 (MemoryWin32HandlePropertiesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_surface (MetalSurfaceCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (MultisamplePropertiesEXT)
-import {-# SOURCE #-} Vulkan.Core10.SharedTypes (Offset2D)
-import {-# SOURCE #-} Vulkan.Core10.SharedTypes (Offset3D)
+import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (Offset2D)
+import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (Offset3D)
 import {-# SOURCE #-} Vulkan.Extensions.VK_GOOGLE_display_timing (PastPresentationTimingGOOGLE)
 import {-# SOURCE #-} Vulkan.Extensions.VK_INTEL_performance_query (PerformanceConfigurationAcquireInfoINTEL)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (PerformanceCounterDescriptionKHR)
@@ -486,7 +488,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (RayTracingPipelineInterfaceCreateInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (RayTracingShaderGroupCreateInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (RayTracingShaderGroupCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (Rect2D)
+import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (Rect2D)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_incremental_present (RectLayerKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_GOOGLE_display_timing (RefreshCycleDurationGOOGLE)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer (RenderPassAttachmentBeginInfo)
@@ -570,7 +572,7 @@
 import {-# SOURCE #-} Vulkan.Core10.Pipeline (VertexInputBindingDescription)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_attribute_divisor (VertexInputBindingDivisorDescriptionEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NN_vi_surface (ViSurfaceCreateInfoNN)
-import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (Viewport)
+import {-# SOURCE #-} Vulkan.Core10.Pipeline (Viewport)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_viewport_swizzle (ViewportSwizzleNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_clip_space_w_scaling (ViewportWScalingNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_wayland_surface (WaylandSurfaceCreateInfoKHR)
@@ -722,6 +724,7 @@
   Extends DescriptorSetLayoutCreateInfo DescriptorSetLayoutBindingFlagsCreateInfo = ()
   Extends DescriptorSetLayoutSupport DescriptorSetVariableDescriptorCountLayoutSupport = ()
   Extends DeviceCreateInfo PhysicalDeviceDeviceGeneratedCommandsFeaturesNV = ()
+  Extends DeviceCreateInfo DevicePrivateDataCreateInfoEXT = ()
   Extends DeviceCreateInfo (PhysicalDeviceFeatures2 '[]) = ()
   Extends DeviceCreateInfo PhysicalDeviceVariablePointersFeatures = ()
   Extends DeviceCreateInfo PhysicalDeviceMultiviewFeatures = ()
@@ -1023,28 +1026,59 @@
 
 deriving instance (forall es. Show (Chain es) => Show (a es)) => Show (SomeStruct a)
 
+-- | The constraint is so on this instance to encourage type inference
 instance Zero (a '[]) => Zero (SomeStruct a) where
   zero = SomeStruct (zero :: a '[])
 
+-- | Forget which extensions a pointed-to struct has by casting the pointer
 forgetExtensions :: Ptr (a es) -> Ptr (SomeStruct a)
 forgetExtensions = castPtr
 
+-- | Add an extension to the beginning of the struct chain
+--
+-- This can be used to optionally extend structs based on some condition (for
+-- example, an extension or layer being available)
+extendSomeStruct
+  :: (Extensible a, Extends a e, ToCStruct e, Show e)
+  => e
+  -> SomeStruct a
+  -> SomeStruct a
+extendSomeStruct e (SomeStruct a) = SomeStruct (setNext a (e, getNext a))
+
+-- | Consume a 'SomeStruct' value
+withSomeStruct
+  :: forall a b
+   . SomeStruct a
+  -> (forall es . (Extendss a es, PokeChain es, Show (Chain es)) => a es -> b)
+  -> b
+withSomeStruct (SomeStruct s) f = f s
+
+-- | Write the C representation of some extended @a@ and use the pointer,
+-- the pointer must not be returned from the continuation.
 withSomeCStruct
   :: forall a b
    . (forall es . (Extendss a es, PokeChain es) => ToCStruct (a es))
   => SomeStruct a
   -> (forall es . (Extendss a es, PokeChain es) => Ptr (a es) -> IO b)
   -> IO b
-withSomeCStruct (SomeStruct s) f = withCStruct s f
+withSomeCStruct s f = withSomeStruct s (`withCStruct` f)
 
+-- | Given some memory for the head of the chain, allocate and poke the
+-- tail and run an action.
 pokeSomeCStruct
   :: (forall es . (Extendss a es, PokeChain es) => ToCStruct (a es))
   => Ptr (SomeStruct a)
+  -- ^ Pointer to some memory at least the size of the head of the struct
+  -- chain.
   -> SomeStruct a
+  -- ^ The struct to poke
   -> IO b
+  -- ^ Computation to run while the poked tail is valid
   -> IO b
 pokeSomeCStruct p (SomeStruct s) = pokeCStruct (castPtr p) s
 
+-- | Given a pointer to a struct with an unknown chain, peek the struct and
+-- its chain.
 peekSomeCStruct
   :: forall a
    . (Extensible a, forall es . (Extendss a es, PeekChain es) => FromCStruct (a es))
@@ -1056,9 +1090,7 @@
   peekSomeChain @a pNext $ \tail' -> SomeStruct (setNext head' tail')
 
 peekSomeChain
-  :: forall
-       a
-       b
+  :: forall a b
    . (Extensible a)
   => Ptr BaseOutStructure
   -> (  forall es
@@ -1077,7 +1109,6 @@
       $ \head' -> peekSomeChain @a (next (baseOut :: BaseOutStructure))
                                   (\tail' -> c (head', tail'))
 
-
 peekChainHead
   :: forall a b
    . Extensible a
@@ -1100,6 +1131,7 @@
   STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV -> go @ExportMemoryWin32HandleInfoNV
   STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV -> go @Win32KeyedMutexAcquireReleaseInfoNV
   STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV -> go @PhysicalDeviceDeviceGeneratedCommandsFeaturesNV
+  STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT -> go @DevicePrivateDataCreateInfoEXT
   STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV -> go @PhysicalDeviceDeviceGeneratedCommandsPropertiesNV
   STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV -> go @GraphicsPipelineShaderGroupsCreateInfoNV
   STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 -> go @(PhysicalDeviceFeatures2 '[])
@@ -1389,6 +1421,7 @@
 {-# complete (::&) :: ExportMemoryWin32HandleInfoNV #-}
 {-# complete (::&) :: Win32KeyedMutexAcquireReleaseInfoNV #-}
 {-# complete (::&) :: PhysicalDeviceDeviceGeneratedCommandsFeaturesNV #-}
+{-# complete (::&) :: DevicePrivateDataCreateInfoEXT #-}
 {-# complete (::&) :: PhysicalDeviceDeviceGeneratedCommandsPropertiesNV #-}
 {-# complete (::&) :: GraphicsPipelineShaderGroupsCreateInfoNV #-}
 {-# complete (::&) :: PhysicalDeviceFeatures2 #-}
diff --git a/src/Vulkan/Core10.hs b/src/Vulkan/Core10.hs
--- a/src/Vulkan/Core10.hs
+++ b/src/Vulkan/Core10.hs
@@ -2,7 +2,6 @@
 module Vulkan.Core10  ( pattern API_VERSION_1_0
                       , module Vulkan.Core10.APIConstants
                       , module Vulkan.Core10.AllocationCallbacks
-                      , module Vulkan.Core10.BaseType
                       , module Vulkan.Core10.Buffer
                       , module Vulkan.Core10.BufferView
                       , module Vulkan.Core10.CommandBuffer
@@ -16,6 +15,7 @@
                       , module Vulkan.Core10.ExtensionDiscovery
                       , module Vulkan.Core10.Fence
                       , module Vulkan.Core10.FuncPointers
+                      , module Vulkan.Core10.FundamentalTypes
                       , module Vulkan.Core10.Handles
                       , module Vulkan.Core10.Image
                       , module Vulkan.Core10.ImageView
@@ -32,12 +32,10 @@
                       , module Vulkan.Core10.QueueSemaphore
                       , module Vulkan.Core10.Sampler
                       , module Vulkan.Core10.Shader
-                      , module Vulkan.Core10.SharedTypes
                       , module Vulkan.Core10.SparseResourceMemoryManagement
                       ) where
 import Vulkan.Core10.APIConstants
 import Vulkan.Core10.AllocationCallbacks
-import Vulkan.Core10.BaseType
 import Vulkan.Core10.Buffer
 import Vulkan.Core10.BufferView
 import Vulkan.Core10.CommandBuffer
@@ -51,6 +49,7 @@
 import Vulkan.Core10.ExtensionDiscovery
 import Vulkan.Core10.Fence
 import Vulkan.Core10.FuncPointers
+import Vulkan.Core10.FundamentalTypes
 import Vulkan.Core10.Handles
 import Vulkan.Core10.Image
 import Vulkan.Core10.ImageView
@@ -67,7 +66,6 @@
 import Vulkan.Core10.QueueSemaphore
 import Vulkan.Core10.Sampler
 import Vulkan.Core10.Shader
-import Vulkan.Core10.SharedTypes
 import Vulkan.Core10.SparseResourceMemoryManagement
 import Data.Word (Word32)
 import Vulkan.Version (pattern MAKE_VERSION)
diff --git a/src/Vulkan/Core10/APIConstants.hs b/src/Vulkan/Core10/APIConstants.hs
--- a/src/Vulkan/Core10/APIConstants.hs
+++ b/src/Vulkan/Core10/APIConstants.hs
@@ -55,7 +55,7 @@
 import Data.Word (Word64)
 import Vulkan.Core10.Enums.ObjectType (ObjectType)
 import Vulkan.Zero (Zero(..))
-import Vulkan.Core10.BaseType (Bool32(..))
+import Vulkan.Core10.FundamentalTypes (Bool32(..))
 import Vulkan.Core10.Enums.PipelineCacheHeaderVersion (PipelineCacheHeaderVersion(..))
 -- No documentation found for TopLevel "VK_LOD_CLAMP_NONE"
 pattern LOD_CLAMP_NONE :: Float
diff --git a/src/Vulkan/Core10/BaseType.hs b/src/Vulkan/Core10/BaseType.hs
deleted file mode 100644
--- a/src/Vulkan/Core10/BaseType.hs
+++ /dev/null
@@ -1,351 +0,0 @@
-{-# language CPP #-}
-module Vulkan.Core10.BaseType  ( boolToBool32
-                               , bool32ToBool
-                               , Bool32( FALSE
-                                       , TRUE
-                                       , ..
-                                       )
-                               , SampleMask
-                               , Flags
-                               , DeviceSize
-                               , DeviceAddress
-                               ) where
-
-import Data.Bool (bool)
-import GHC.Read (choose)
-import GHC.Read (expectP)
-import GHC.Read (parens)
-import GHC.Show (showParen)
-import GHC.Show (showString)
-import GHC.Show (showsPrec)
-import Text.ParserCombinators.ReadPrec ((+++))
-import Text.ParserCombinators.ReadPrec (prec)
-import Text.ParserCombinators.ReadPrec (step)
-import Foreign.Storable (Storable)
-import Data.Int (Int32)
-import GHC.Read (Read(readPrec))
-import Data.Word (Word32)
-import Data.Word (Word64)
-import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Zero (Zero)
-boolToBool32 :: Bool -> Bool32
-boolToBool32 = bool FALSE TRUE
-
-bool32ToBool :: Bool32 -> Bool
-bool32ToBool = \case
-  FALSE -> False
-  TRUE  -> True
-
-
--- | VkBool32 - Vulkan boolean type
---
--- = Description
---
--- 'TRUE' represents a boolean __True__ (integer 1) value, and 'FALSE' a
--- boolean __False__ (integer 0) value.
---
--- All values returned from a Vulkan implementation in a 'Bool32' will be
--- either 'TRUE' or 'FALSE'.
---
--- Applications /must/ not pass any other values than 'TRUE' or 'FALSE'
--- into a Vulkan implementation where a 'Bool32' is expected.
---
--- = See Also
---
--- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureBuildGeometryInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureCreateGeometryTypeInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryInstancesDataKHR',
--- 'Vulkan.Extensions.VK_EXT_conditional_rendering.CommandBufferInheritanceConditionalRenderingInfoEXT',
--- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',
--- 'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationBufferCreateInfoNV',
--- 'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationImageCreateInfoNV',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.DescriptorSetLayoutSupport',
--- 'Vulkan.Extensions.VK_AMD_display_native_hdr.DisplayNativeHdrSurfaceCapabilitiesAMD',
--- 'Vulkan.Extensions.VK_KHR_display_swapchain.DisplayPresentInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_display.DisplayPropertiesKHR',
--- 'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT',
--- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutTokenNV',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedRequirements',
--- 'Vulkan.Extensions.VK_INTEL_performance_query.PerformanceOverrideInfoINTEL',
--- 'Vulkan.Extensions.VK_INTEL_performance_query.PerformanceValueDataINTEL',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage.PhysicalDevice16BitStorageFeatures',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage.PhysicalDevice8BitStorageFeatures',
--- 'Vulkan.Extensions.VK_EXT_astc_decode_mode.PhysicalDeviceASTCDecodeFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeatures',
--- 'Vulkan.Extensions.VK_EXT_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeaturesEXT',
--- 'Vulkan.Extensions.VK_AMD_device_coherent_memory.PhysicalDeviceCoherentMemoryFeaturesAMD',
--- 'Vulkan.Extensions.VK_NV_compute_shader_derivatives.PhysicalDeviceComputeShaderDerivativesFeaturesNV',
--- 'Vulkan.Extensions.VK_EXT_conditional_rendering.PhysicalDeviceConditionalRenderingFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.PhysicalDeviceConservativeRasterizationPropertiesEXT',
--- 'Vulkan.Extensions.VK_NV_cooperative_matrix.PhysicalDeviceCooperativeMatrixFeaturesNV',
--- 'Vulkan.Extensions.VK_NV_corner_sampled_image.PhysicalDeviceCornerSampledImageFeaturesNV',
--- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PhysicalDeviceCoverageReductionModeFeaturesNV',
--- 'Vulkan.Extensions.VK_EXT_custom_border_color.PhysicalDeviceCustomBorderColorFeaturesEXT',
--- 'Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing.PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV',
--- 'Vulkan.Extensions.VK_EXT_depth_clip_enable.PhysicalDeviceDepthClipEnableFeaturesEXT',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties',
--- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingFeatures',
--- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties',
--- 'Vulkan.Extensions.VK_NV_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsFeaturesNV',
--- 'Vulkan.Extensions.VK_NV_device_diagnostics_config.PhysicalDeviceDiagnosticsConfigFeaturesNV',
--- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PhysicalDeviceExclusiveScissorFeaturesNV',
--- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceFeatures',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls.PhysicalDeviceFloatControlsProperties',
--- 'Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapPropertiesEXT',
--- 'Vulkan.Extensions.VK_NV_fragment_shader_barycentric.PhysicalDeviceFragmentShaderBarycentricFeaturesNV',
--- 'Vulkan.Extensions.VK_EXT_fragment_shader_interlock.PhysicalDeviceFragmentShaderInterlockFeaturesEXT',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.PhysicalDeviceGroupProperties',
--- 'Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset.PhysicalDeviceHostQueryResetFeatures',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.PhysicalDeviceImagelessFramebufferFeatures',
--- 'Vulkan.Extensions.VK_EXT_index_type_uint8.PhysicalDeviceIndexTypeUint8FeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockFeaturesEXT',
--- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits',
--- 'Vulkan.Extensions.VK_EXT_line_rasterization.PhysicalDeviceLineRasterizationFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_memory_priority.PhysicalDeviceMemoryPriorityFeaturesEXT',
--- 'Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderFeaturesNV',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewFeatures',
--- 'Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX',
--- 'Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryFeaturesKHR',
--- 'Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryPropertiesKHR',
--- 'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PhysicalDevicePipelineCreationCacheControlFeaturesEXT',
--- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PhysicalDevicePipelineExecutablePropertiesFeaturesKHR',
--- 'Vulkan.Extensions.VK_EXT_private_data.PhysicalDevicePrivateDataFeaturesEXT',
--- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryFeatures',
--- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryProperties',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing.PhysicalDeviceRayTracingFeaturesKHR',
--- 'Vulkan.Extensions.VK_NV_representative_fragment_test.PhysicalDeviceRepresentativeFragmentTestFeaturesNV',
--- 'Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2FeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_sample_locations.PhysicalDeviceSampleLocationsPropertiesEXT',
--- 'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.PhysicalDeviceSamplerFilterMinmaxProperties',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.PhysicalDeviceSamplerYcbcrConversionFeatures',
--- 'Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout.PhysicalDeviceScalarBlockLayoutFeatures',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.PhysicalDeviceSeparateDepthStencilLayoutsFeatures',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_atomic_int64.PhysicalDeviceShaderAtomicInt64Features',
--- 'Vulkan.Extensions.VK_KHR_shader_clock.PhysicalDeviceShaderClockFeaturesKHR',
--- 'Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation.PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters.PhysicalDeviceShaderDrawParametersFeatures',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8.PhysicalDeviceShaderFloat16Int8Features',
--- 'Vulkan.Extensions.VK_NV_shader_image_footprint.PhysicalDeviceShaderImageFootprintFeaturesNV',
--- 'Vulkan.Extensions.VK_INTEL_shader_integer_functions2.PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL',
--- 'Vulkan.Extensions.VK_NV_shader_sm_builtins.PhysicalDeviceShaderSMBuiltinsFeaturesNV',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types.PhysicalDeviceShaderSubgroupExtendedTypesFeatures',
--- 'Vulkan.Extensions.VK_NV_shading_rate_image.PhysicalDeviceShadingRateImageFeaturesNV',
--- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceSparseProperties',
--- 'Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup.PhysicalDeviceSubgroupProperties',
--- 'Vulkan.Extensions.VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT',
--- 'Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr.PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.PhysicalDeviceTimelineSemaphoreFeatures',
--- 'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout.PhysicalDeviceUniformBufferStandardLayoutFeatures',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers.PhysicalDeviceVariablePointersFeatures',
--- 'Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorFeaturesEXT',
--- 'Vulkan.Core12.PhysicalDeviceVulkan11Features',
--- 'Vulkan.Core12.PhysicalDeviceVulkan11Properties',
--- 'Vulkan.Core12.PhysicalDeviceVulkan12Features',
--- 'Vulkan.Core12.PhysicalDeviceVulkan12Properties',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model.PhysicalDeviceVulkanMemoryModelFeatures',
--- 'Vulkan.Extensions.VK_EXT_ycbcr_image_arrays.PhysicalDeviceYcbcrImageArraysFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PipelineColorBlendAdvancedStateCreateInfoEXT',
--- 'Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState',
--- 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo',
--- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.PipelineCoverageModulationStateCreateInfoNV',
--- 'Vulkan.Extensions.VK_NV_fragment_coverage_to_color.PipelineCoverageToColorStateCreateInfoNV',
--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo',
--- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutableInternalRepresentationKHR',
--- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutableStatisticValueKHR',
--- 'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo',
--- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo',
--- 'Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT',
--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo',
--- 'Vulkan.Extensions.VK_NV_representative_fragment_test.PipelineRepresentativeFragmentTestStateCreateInfoNV',
--- 'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT',
--- 'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV',
--- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV',
--- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.ProtectedSubmitInfo',
--- 'Vulkan.Core10.Sampler.SamplerCreateInfo',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo',
--- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceCapabilitiesFullScreenExclusiveEXT',
--- 'Vulkan.Extensions.VK_KHR_surface_protected_capabilities.SurfaceProtectedCapabilitiesKHR',
--- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',
--- 'Vulkan.Extensions.VK_AMD_display_native_hdr.SwapchainDisplayNativeHdrCreateInfoAMD',
--- 'Vulkan.Extensions.VK_AMD_texture_gather_bias_lod.TextureLODGatherFormatPropertiesAMD',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',
--- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdExecuteGeneratedCommandsNV',
--- 'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceSupportKHR',
--- 'Vulkan.Extensions.VK_AMD_display_native_hdr.setLocalDimmingAMD',
--- 'Vulkan.Core10.Fence.waitForFences'
-newtype Bool32 = Bool32 Int32
-  deriving newtype (Eq, Ord, Storable, Zero)
-
--- No documentation found for Nested "VkBool32" "VK_FALSE"
-pattern FALSE = Bool32 0
--- No documentation found for Nested "VkBool32" "VK_TRUE"
-pattern TRUE = Bool32 1
-{-# complete FALSE,
-             TRUE :: Bool32 #-}
-
-instance Show Bool32 where
-  showsPrec p = \case
-    FALSE -> showString "FALSE"
-    TRUE -> showString "TRUE"
-    Bool32 x -> showParen (p >= 11) (showString "Bool32 " . showsPrec 11 x)
-
-instance Read Bool32 where
-  readPrec = parens (choose [("FALSE", pure FALSE)
-                            , ("TRUE", pure TRUE)]
-                     +++
-                     prec 10 (do
-                       expectP (Ident "Bool32")
-                       v <- step readPrec
-                       pure (Bool32 v)))
-
-
--- | VkSampleMask - Mask of sample coverage information
---
--- = See Also
---
--- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'
-type SampleMask = Word32
-
-
--- | VkFlags - Vulkan bitmasks
---
--- = Description
---
--- Bitmasks are passed to many commands and structures to compactly
--- represent options, but 'Flags' is not used directly in the API. Instead,
--- a @Vk*Flags@ type which is an alias of 'Flags', and whose name matches
--- the corresponding @Vk*FlagBits@ that are valid for that type, is used.
---
--- Any @Vk*Flags@ member or parameter used in the API as an input /must/ be
--- a valid combination of bit flags. A valid combination is either zero or
--- the bitwise OR of valid bit flags. A bit flag is valid if:
---
--- -   The bit flag is defined as part of the @Vk*FlagBits@ type, where the
---     bits type is obtained by taking the flag type and replacing the
---     trailing 'Flags' with @FlagBits@. For example, a flag value of type
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.ColorComponentFlags'
---     /must/ contain only bit flags defined by
---     'Vulkan.Core10.Enums.ColorComponentFlagBits.ColorComponentFlagBits'.
---
--- -   The flag is allowed in the context in which it is being used. For
---     example, in some cases, certain bit flags or combinations of bit
---     flags are mutually exclusive.
---
--- Any @Vk*Flags@ member or parameter returned from a query command or
--- otherwise output from Vulkan to the application /may/ contain bit flags
--- undefined in its corresponding @Vk*FlagBits@ type. An application
--- /cannot/ rely on the state of these unspecified bits.
---
--- Only the low-order 31 bits (bit positions zero through 30) are available
--- for use as flag bits.
---
--- Note
---
--- This restriction is due to poorly defined behavior by C compilers given
--- a C enumerant value of @0x80000000@. In some cases adding this enumerant
--- value may increase the size of the underlying @Vk*FlagBits@ type,
--- breaking the ABI.
---
--- = See Also
---
--- 'Vulkan.Core10.Enums.ColorComponentFlagBits.ColorComponentFlags'
-type Flags = Word32
-
-
--- | VkDeviceSize - Vulkan device memory size and offsets
---
--- = See Also
---
--- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureCreateInfoKHR',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryAabbsDataKHR',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryTrianglesDataKHR',
--- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferPropertiesANDROID',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing.BindAccelerationStructureMemoryInfoKHR',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo',
--- 'Vulkan.Core10.CommandBufferBuilding.BufferCopy',
--- 'Vulkan.Core10.Buffer.BufferCreateInfo',
--- 'Vulkan.Core10.CommandBufferBuilding.BufferImageCopy',
--- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier',
--- 'Vulkan.Core10.BufferView.BufferViewCreateInfo',
--- 'Vulkan.Extensions.VK_EXT_conditional_rendering.ConditionalRenderingBeginInfoEXT',
--- 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo',
--- 'Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsInfoNV',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryAABBNV',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV',
--- 'Vulkan.Core10.DeviceInitialization.ImageFormatProperties',
--- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewAddressPropertiesNVX',
--- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsStreamNV',
--- 'Vulkan.Core10.Memory.MappedMemoryRange',
--- 'Vulkan.Core10.Memory.MemoryAllocateInfo',
--- 'Vulkan.Core10.DeviceInitialization.MemoryHeap',
--- 'Vulkan.Core10.MemoryManagement.MemoryRequirements',
--- 'Vulkan.Extensions.VK_EXT_external_memory_host.PhysicalDeviceExternalMemoryHostPropertiesEXT',
--- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.PhysicalDeviceMaintenance3Properties',
--- 'Vulkan.Extensions.VK_EXT_memory_budget.PhysicalDeviceMemoryBudgetPropertiesEXT',
--- 'Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2PropertiesEXT',
--- 'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT',
--- 'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT',
--- 'Vulkan.Core12.PhysicalDeviceVulkan11Properties',
--- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind',
--- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryRequirements',
--- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseMemoryBind',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing.StridedBufferRegionKHR',
--- 'Vulkan.Core10.Image.SubresourceLayout',
--- 'Vulkan.Core10.MemoryManagement.bindBufferMemory',
--- 'Vulkan.Core10.MemoryManagement.bindImageMemory',
--- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer',
--- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBindTransformFeedbackBuffersEXT',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing.cmdBuildAccelerationStructureIndirectKHR',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCount',
--- 'Vulkan.Extensions.VK_AMD_draw_indirect_count.cmdDrawIndexedIndirectCountAMD',
--- 'Vulkan.Extensions.VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCountKHR',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect',
--- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdDrawIndirectByteCountEXT',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndirectCount',
--- 'Vulkan.Extensions.VK_AMD_draw_indirect_count.cmdDrawIndirectCountAMD',
--- 'Vulkan.Extensions.VK_KHR_draw_indirect_count.cmdDrawIndirectCountKHR',
--- 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectCountNV',
--- 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectNV',
--- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdFillBuffer',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing.cmdTraceRaysIndirectKHR',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdUpdateBuffer',
--- 'Vulkan.Extensions.VK_AMD_buffer_marker.cmdWriteBufferMarkerAMD',
--- 'Vulkan.Core10.Memory.getDeviceMemoryCommitment',
--- 'Vulkan.Core10.Query.getQueryPoolResults',
--- 'Vulkan.Core10.Memory.mapMemory'
-type DeviceSize = Word64
-
-
--- | VkDeviceAddress - Vulkan device address type
---
--- = See Also
---
--- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureCreateInfoKHR',
--- 'Vulkan.Extensions.VK_NV_device_generated_commands.BindIndexBufferIndirectCommandNV',
--- 'Vulkan.Extensions.VK_NV_device_generated_commands.BindVertexBufferIndirectCommandNV',
--- 'Vulkan.Extensions.VK_EXT_buffer_device_address.BufferDeviceAddressCreateInfoEXT',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing.DeviceOrHostAddressConstKHR',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing.DeviceOrHostAddressKHR',
--- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewAddressPropertiesNVX'
-type DeviceAddress = Word64
-
diff --git a/src/Vulkan/Core10/BaseType.hs-boot b/src/Vulkan/Core10/BaseType.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Core10/BaseType.hs-boot
+++ /dev/null
@@ -1,99 +0,0 @@
-{-# language CPP #-}
-module Vulkan.Core10.BaseType  ( Bool32
-                               , DeviceAddress
-                               , DeviceSize
-                               ) where
-
-import Data.Word (Word64)
-
-data Bool32
-
-
--- | VkDeviceAddress - Vulkan device address type
---
--- = See Also
---
--- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureCreateInfoKHR',
--- 'Vulkan.Extensions.VK_NV_device_generated_commands.BindIndexBufferIndirectCommandNV',
--- 'Vulkan.Extensions.VK_NV_device_generated_commands.BindVertexBufferIndirectCommandNV',
--- 'Vulkan.Extensions.VK_EXT_buffer_device_address.BufferDeviceAddressCreateInfoEXT',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing.DeviceOrHostAddressConstKHR',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing.DeviceOrHostAddressKHR',
--- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewAddressPropertiesNVX'
-type DeviceAddress = Word64
-
-
--- | VkDeviceSize - Vulkan device memory size and offsets
---
--- = See Also
---
--- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureCreateInfoKHR',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryAabbsDataKHR',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryTrianglesDataKHR',
--- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferPropertiesANDROID',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing.BindAccelerationStructureMemoryInfoKHR',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo',
--- 'Vulkan.Core10.CommandBufferBuilding.BufferCopy',
--- 'Vulkan.Core10.Buffer.BufferCreateInfo',
--- 'Vulkan.Core10.CommandBufferBuilding.BufferImageCopy',
--- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier',
--- 'Vulkan.Core10.BufferView.BufferViewCreateInfo',
--- 'Vulkan.Extensions.VK_EXT_conditional_rendering.ConditionalRenderingBeginInfoEXT',
--- 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo',
--- 'Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsInfoNV',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryAABBNV',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV',
--- 'Vulkan.Core10.DeviceInitialization.ImageFormatProperties',
--- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewAddressPropertiesNVX',
--- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsStreamNV',
--- 'Vulkan.Core10.Memory.MappedMemoryRange',
--- 'Vulkan.Core10.Memory.MemoryAllocateInfo',
--- 'Vulkan.Core10.DeviceInitialization.MemoryHeap',
--- 'Vulkan.Core10.MemoryManagement.MemoryRequirements',
--- 'Vulkan.Extensions.VK_EXT_external_memory_host.PhysicalDeviceExternalMemoryHostPropertiesEXT',
--- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.PhysicalDeviceMaintenance3Properties',
--- 'Vulkan.Extensions.VK_EXT_memory_budget.PhysicalDeviceMemoryBudgetPropertiesEXT',
--- 'Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2PropertiesEXT',
--- 'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT',
--- 'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT',
--- 'Vulkan.Core12.PhysicalDeviceVulkan11Properties',
--- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind',
--- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryRequirements',
--- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseMemoryBind',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing.StridedBufferRegionKHR',
--- 'Vulkan.Core10.Image.SubresourceLayout',
--- 'Vulkan.Core10.MemoryManagement.bindBufferMemory',
--- 'Vulkan.Core10.MemoryManagement.bindImageMemory',
--- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer',
--- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBindTransformFeedbackBuffersEXT',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing.cmdBuildAccelerationStructureIndirectKHR',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCount',
--- 'Vulkan.Extensions.VK_AMD_draw_indirect_count.cmdDrawIndexedIndirectCountAMD',
--- 'Vulkan.Extensions.VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCountKHR',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect',
--- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdDrawIndirectByteCountEXT',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndirectCount',
--- 'Vulkan.Extensions.VK_AMD_draw_indirect_count.cmdDrawIndirectCountAMD',
--- 'Vulkan.Extensions.VK_KHR_draw_indirect_count.cmdDrawIndirectCountKHR',
--- 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectCountNV',
--- 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectNV',
--- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdFillBuffer',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing.cmdTraceRaysIndirectKHR',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdUpdateBuffer',
--- 'Vulkan.Extensions.VK_AMD_buffer_marker.cmdWriteBufferMarkerAMD',
--- 'Vulkan.Core10.Memory.getDeviceMemoryCommitment',
--- 'Vulkan.Core10.Query.getQueryPoolResults',
--- 'Vulkan.Core10.Memory.mapMemory'
-type DeviceSize = Word64
-
diff --git a/src/Vulkan/Core10/Buffer.hs b/src/Vulkan/Core10/Buffer.hs
--- a/src/Vulkan/Core10/Buffer.hs
+++ b/src/Vulkan/Core10/Buffer.hs
@@ -3,6 +3,12 @@
                              , withBuffer
                              , destroyBuffer
                              , BufferCreateInfo(..)
+                             , Buffer(..)
+                             , SharingMode(..)
+                             , BufferUsageFlagBits(..)
+                             , BufferUsageFlags
+                             , BufferCreateFlagBits(..)
+                             , BufferCreateFlags
                              ) where
 
 import Control.Exception.Base (bracket)
@@ -53,7 +59,7 @@
 import Vulkan.Core10.Handles (Device(..))
 import Vulkan.Dynamic (DeviceCmds(pVkCreateBuffer))
 import Vulkan.Dynamic (DeviceCmds(pVkDestroyBuffer))
-import Vulkan.Core10.BaseType (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
 import Vulkan.Core10.Handles (Device_T)
 import Vulkan.CStruct.Extends (Extends)
 import Vulkan.CStruct.Extends (Extendss)
@@ -76,6 +82,12 @@
 import Vulkan.Zero (Zero(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_CREATE_INFO))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.Handles (Buffer(..))
+import Vulkan.Core10.Enums.BufferCreateFlagBits (BufferCreateFlagBits(..))
+import Vulkan.Core10.Enums.BufferCreateFlagBits (BufferCreateFlags)
+import Vulkan.Core10.Enums.BufferUsageFlagBits (BufferUsageFlagBits(..))
+import Vulkan.Core10.Enums.BufferUsageFlagBits (BufferUsageFlags)
+import Vulkan.Core10.Enums.SharingMode (SharingMode(..))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -309,8 +321,8 @@
 -- -   If the @pNext@ chain includes a
 --     'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationBufferCreateInfoNV'
 --     structure, and the @dedicatedAllocation@ member of the chained
---     structure is 'Vulkan.Core10.BaseType.TRUE', then @flags@ /must/ not
---     include
+--     structure is 'Vulkan.Core10.FundamentalTypes.TRUE', then @flags@
+--     /must/ not include
 --     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_BINDING_BIT',
 --     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT',
 --     or
@@ -367,11 +379,11 @@
 --
 -- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BufferCreateFlags',
 -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlags',
--- 'Vulkan.Core10.BaseType.DeviceSize',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Enums.SharingMode.SharingMode',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'createBuffer'
 data BufferCreateInfo (es :: [Type]) = BufferCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is a bitmask of
     -- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BufferCreateFlagBits'
diff --git a/src/Vulkan/Core10/BufferView.hs b/src/Vulkan/Core10/BufferView.hs
--- a/src/Vulkan/Core10/BufferView.hs
+++ b/src/Vulkan/Core10/BufferView.hs
@@ -3,6 +3,8 @@
                                  , withBufferView
                                  , destroyBufferView
                                  , BufferViewCreateInfo(..)
+                                 , BufferView(..)
+                                 , BufferViewCreateFlags(..)
                                  ) where
 
 import Control.Exception.Base (bracket)
@@ -41,7 +43,7 @@
 import Vulkan.Core10.Handles (Device(..))
 import Vulkan.Dynamic (DeviceCmds(pVkCreateBufferView))
 import Vulkan.Dynamic (DeviceCmds(pVkDestroyBufferView))
-import Vulkan.Core10.BaseType (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
 import Vulkan.Core10.Handles (Device_T)
 import Vulkan.Core10.Enums.Format (Format)
 import Vulkan.CStruct (FromCStruct)
@@ -55,6 +57,8 @@
 import Vulkan.Zero (Zero(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.Handles (BufferView(..))
+import Vulkan.Core10.Enums.BufferViewCreateFlags (BufferViewCreateFlags(..))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -219,17 +223,26 @@
 --     @format@
 --
 -- -   If @range@ is not equal to 'Vulkan.Core10.APIConstants.WHOLE_SIZE',
---     @range@ divided by the texel block size of @format@, multiplied by
---     the number of texels per texel block for that format (as defined in
---     the
+--     the number of texel buffer elements given by (⌊@range@ \/ (texel
+--     block size)⌋ × (texels per block)) where texel block size and texels
+--     per block are as defined in the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility Compatible Formats>
---     table), /must/ be less than or equal to
+--     table for @format@, /must/ be less than or equal to
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxTexelBufferElements@
 --
 -- -   If @range@ is not equal to 'Vulkan.Core10.APIConstants.WHOLE_SIZE',
 --     the sum of @offset@ and @range@ /must/ be less than or equal to the
 --     size of @buffer@
 --
+-- -   If @range@ is equal to 'Vulkan.Core10.APIConstants.WHOLE_SIZE', the
+--     number of texel buffer elements given by (⌊(size - @offset@) \/
+--     (texel block size)⌋ × (texels per block)) where size is the size of
+--     @buffer@, and texel block size and texels per block are as defined
+--     in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility Compatible Formats>
+--     table for @format@, /must/ be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxTexelBufferElements@
+--
 -- -   @buffer@ /must/ have been created with a @usage@ value containing at
 --     least one of
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT'
@@ -273,7 +286,7 @@
 --     'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT'::@storageTexelBufferOffsetAlignmentBytes@
 --     or, if
 --     'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT'::@storageTexelBufferOffsetSingleTexelAlignment@
---     is 'Vulkan.Core10.BaseType.TRUE', the size of a texel of the
+--     is 'Vulkan.Core10.FundamentalTypes.TRUE', the size of a texel of the
 --     requested @format@. If the size of a texel is a multiple of three
 --     bytes, then the size of a single component of @format@ is used
 --     instead
@@ -287,7 +300,7 @@
 --     'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT'::@uniformTexelBufferOffsetAlignmentBytes@
 --     or, if
 --     'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT'::@uniformTexelBufferOffsetSingleTexelAlignment@
---     is 'Vulkan.Core10.BaseType.TRUE', the size of a texel of the
+--     is 'Vulkan.Core10.FundamentalTypes.TRUE', the size of a texel of the
 --     requested @format@. If the size of a texel is a multiple of three
 --     bytes, then the size of a single component of @format@ is used
 --     instead
@@ -309,7 +322,7 @@
 --
 -- 'Vulkan.Core10.Handles.Buffer',
 -- 'Vulkan.Core10.Enums.BufferViewCreateFlags.BufferViewCreateFlags',
--- 'Vulkan.Core10.BaseType.DeviceSize',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Enums.Format.Format',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'createBufferView'
 data BufferViewCreateInfo = BufferViewCreateInfo
diff --git a/src/Vulkan/Core10/CommandBuffer.hs b/src/Vulkan/Core10/CommandBuffer.hs
--- a/src/Vulkan/Core10/CommandBuffer.hs
+++ b/src/Vulkan/Core10/CommandBuffer.hs
@@ -9,6 +9,14 @@
                                     , CommandBufferAllocateInfo(..)
                                     , CommandBufferInheritanceInfo(..)
                                     , CommandBufferBeginInfo(..)
+                                    , CommandBuffer(..)
+                                    , CommandBufferLevel(..)
+                                    , QueryControlFlagBits(..)
+                                    , QueryControlFlags
+                                    , CommandBufferUsageFlagBits(..)
+                                    , CommandBufferUsageFlags
+                                    , CommandBufferResetFlagBits(..)
+                                    , CommandBufferResetFlags
                                     ) where
 
 import Control.Exception.Base (bracket)
@@ -47,13 +55,13 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
 import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.CStruct.Extends (forgetExtensions)
 import Vulkan.CStruct.Extends (peekSomeCStruct)
 import Vulkan.CStruct.Extends (withSomeCStruct)
 import Vulkan.NamedType ((:::))
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct.Extends (Chain)
 import Vulkan.Core10.Handles (CommandBuffer)
 import Vulkan.Core10.Handles (CommandBuffer(..))
@@ -101,6 +109,14 @@
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.Handles (CommandBuffer(..))
+import Vulkan.Core10.Enums.CommandBufferLevel (CommandBufferLevel(..))
+import Vulkan.Core10.Enums.CommandBufferResetFlagBits (CommandBufferResetFlagBits(..))
+import Vulkan.Core10.Enums.CommandBufferResetFlagBits (CommandBufferResetFlags)
+import Vulkan.Core10.Enums.CommandBufferUsageFlagBits (CommandBufferUsageFlagBits(..))
+import Vulkan.Core10.Enums.CommandBufferUsageFlagBits (CommandBufferUsageFlags)
+import Vulkan.Core10.Enums.QueryControlFlagBits (QueryControlFlagBits(..))
+import Vulkan.Core10.Enums.QueryControlFlagBits (QueryControlFlags)
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -293,9 +309,10 @@
 --
 -- -   If @commandBuffer@ is a secondary command buffer and either the
 --     @occlusionQueryEnable@ member of the @pInheritanceInfo@ member of
---     @pBeginInfo@ is 'Vulkan.Core10.BaseType.FALSE', or the precise
---     occlusion queries feature is not enabled, the @queryFlags@ member of
---     the @pInheritanceInfo@ member @pBeginInfo@ /must/ not contain
+--     @pBeginInfo@ is 'Vulkan.Core10.FundamentalTypes.FALSE', or the
+--     precise occlusion queries feature is not enabled, the @queryFlags@
+--     member of the @pInheritanceInfo@ member @pBeginInfo@ /must/ not
+--     contain
 --     'Vulkan.Core10.Enums.QueryControlFlagBits.QUERY_CONTROL_PRECISE_BIT'
 --
 -- -   If @commandBuffer@ is a primary command buffer, then
@@ -613,7 +630,7 @@
 -- -   If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedQueries inherited queries>
 --     feature is not enabled, @occlusionQueryEnable@ /must/ be
---     'Vulkan.Core10.BaseType.FALSE'
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- -   If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedQueries inherited queries>
@@ -657,14 +674,14 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32', 'CommandBufferBeginInfo',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32', 'CommandBufferBeginInfo',
 -- 'Vulkan.Core10.Handles.Framebuffer',
 -- 'Vulkan.Core10.Enums.QueryControlFlagBits.QueryControlFlags',
 -- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QueryPipelineStatisticFlags',
 -- 'Vulkan.Core10.Handles.RenderPass',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data CommandBufferInheritanceInfo (es :: [Type]) = CommandBufferInheritanceInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @renderPass@ is a 'Vulkan.Core10.Handles.RenderPass' object defining
     -- which render passes the 'Vulkan.Core10.Handles.CommandBuffer' will be
@@ -694,11 +711,11 @@
     framebuffer :: Framebuffer
   , -- | @occlusionQueryEnable@ specifies whether the command buffer /can/ be
     -- executed while an occlusion query is active in the primary command
-    -- buffer. If this is 'Vulkan.Core10.BaseType.TRUE', then this command
-    -- buffer /can/ be executed whether the primary command buffer has an
-    -- occlusion query active or not. If this is
-    -- 'Vulkan.Core10.BaseType.FALSE', then the primary command buffer /must/
-    -- not have an occlusion query active.
+    -- buffer. If this is 'Vulkan.Core10.FundamentalTypes.TRUE', then this
+    -- command buffer /can/ be executed whether the primary command buffer has
+    -- an occlusion query active or not. If this is
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE', then the primary command buffer
+    -- /must/ not have an occlusion query active.
     occlusionQueryEnable :: Bool
   , -- | @queryFlags@ specifies the query flags that /can/ be used by an active
     -- occlusion query in the primary command buffer when this secondary
@@ -826,7 +843,7 @@
 -- 'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.CommandBufferUsageFlags',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'beginCommandBuffer'
 data CommandBufferBeginInfo (es :: [Type]) = CommandBufferBeginInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is a bitmask of
     -- 'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.CommandBufferUsageFlagBits'
diff --git a/src/Vulkan/Core10/CommandBufferBuilding.hs b/src/Vulkan/Core10/CommandBufferBuilding.hs
--- a/src/Vulkan/Core10/CommandBufferBuilding.hs
+++ b/src/Vulkan/Core10/CommandBufferBuilding.hs
@@ -46,29 +46,39 @@
                                             , cmdNextSubpass
                                             , cmdEndRenderPass
                                             , cmdExecuteCommands
-                                            , Viewport(..)
-                                            , Rect2D(..)
                                             , ClearRect(..)
+                                            , ImageSubresourceLayers(..)
                                             , BufferCopy(..)
                                             , ImageCopy(..)
                                             , ImageBlit(..)
                                             , BufferImageCopy(..)
                                             , ImageResolve(..)
                                             , RenderPassBeginInfo(..)
+                                            , ClearDepthStencilValue(..)
                                             , ClearAttachment(..)
+                                            , ClearColorValue(..)
+                                            , ClearValue(..)
+                                            , IndexType(..)
+                                            , SubpassContents(..)
+                                            , StencilFaceFlagBits(..)
+                                            , StencilFaceFlags
                                             ) where
 
 import Vulkan.CStruct.Utils (FixedArray)
+import Control.Exception.Base (bracket)
 import Control.Monad (unless)
 import Control.Monad.IO.Class (liftIO)
 import Data.Typeable (eqT)
 import Foreign.Marshal.Alloc (allocaBytesAligned)
+import Foreign.Marshal.Alloc (callocBytes)
+import Foreign.Marshal.Alloc (free)
 import GHC.IO (throwIO)
 import GHC.Ptr (castPtr)
 import GHC.Ptr (nullFunPtr)
 import Foreign.Ptr (plusPtr)
 import Control.Monad.Trans.Class (lift)
 import Control.Monad.Trans.Cont (evalContT)
+import Control.Monad.Trans.Cont (runContT)
 import qualified Data.Vector (imapM_)
 import qualified Data.Vector (length)
 import Foreign.C.Types (CFloat(..))
@@ -100,9 +110,6 @@
 import Vulkan.Core10.Handles (Buffer(..))
 import Vulkan.Core10.OtherTypes (BufferMemoryBarrier)
 import Vulkan.CStruct.Extends (Chain)
-import Vulkan.Core10.SharedTypes (ClearColorValue)
-import Vulkan.Core10.SharedTypes (ClearDepthStencilValue)
-import Vulkan.Core10.SharedTypes (ClearValue)
 import Vulkan.Core10.Handles (CommandBuffer)
 import Vulkan.Core10.Handles (CommandBuffer(..))
 import Vulkan.Core10.Handles (CommandBuffer_T)
@@ -155,14 +162,13 @@
 import Vulkan.Dynamic (DeviceCmds(pVkCmdWaitEvents))
 import Vulkan.Dynamic (DeviceCmds(pVkCmdWriteTimestamp))
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_group (DeviceGroupRenderPassBeginInfo)
-import Vulkan.Core10.BaseType (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
 import Vulkan.Core10.Handles (Event)
 import Vulkan.Core10.Handles (Event(..))
 import Vulkan.CStruct.Extends (Extends)
 import Vulkan.CStruct.Extends (Extendss)
 import Vulkan.CStruct.Extends (Extensible(..))
-import Vulkan.Core10.SharedTypes (Extent2D)
-import Vulkan.Core10.SharedTypes (Extent3D)
+import Vulkan.Core10.FundamentalTypes (Extent3D)
 import Vulkan.Core10.Enums.Filter (Filter)
 import Vulkan.Core10.Enums.Filter (Filter(..))
 import Vulkan.Core10.Handles (Framebuffer)
@@ -174,13 +180,11 @@
 import Vulkan.Core10.Enums.ImageLayout (ImageLayout)
 import Vulkan.Core10.Enums.ImageLayout (ImageLayout(..))
 import Vulkan.Core10.OtherTypes (ImageMemoryBarrier)
-import Vulkan.Core10.SharedTypes (ImageSubresourceLayers)
-import Vulkan.Core10.SharedTypes (ImageSubresourceRange)
+import Vulkan.Core10.ImageView (ImageSubresourceRange)
 import Vulkan.Core10.Enums.IndexType (IndexType)
 import Vulkan.Core10.Enums.IndexType (IndexType(..))
 import Vulkan.Core10.OtherTypes (MemoryBarrier)
-import Vulkan.Core10.SharedTypes (Offset2D)
-import Vulkan.Core10.SharedTypes (Offset3D)
+import Vulkan.Core10.FundamentalTypes (Offset3D)
 import Vulkan.Core10.Handles (Pipeline)
 import Vulkan.Core10.Handles (Pipeline(..))
 import Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint)
@@ -198,6 +202,7 @@
 import Vulkan.Core10.Handles (QueryPool(..))
 import Vulkan.Core10.Enums.QueryResultFlagBits (QueryResultFlagBits(..))
 import Vulkan.Core10.Enums.QueryResultFlagBits (QueryResultFlags)
+import Vulkan.Core10.FundamentalTypes (Rect2D)
 import Vulkan.Core10.Handles (RenderPass)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer (RenderPassAttachmentBeginInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (RenderPassSampleLocationsBeginInfoEXT)
@@ -212,8 +217,13 @@
 import Vulkan.Core10.Enums.SubpassContents (SubpassContents(..))
 import Vulkan.CStruct (ToCStruct)
 import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Core10.Pipeline (Viewport)
 import Vulkan.Zero (Zero(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO))
+import Vulkan.Core10.Enums.IndexType (IndexType(..))
+import Vulkan.Core10.Enums.StencilFaceFlagBits (StencilFaceFlagBits(..))
+import Vulkan.Core10.Enums.StencilFaceFlagBits (StencilFaceFlags)
+import Vulkan.Core10.Enums.SubpassContents (SubpassContents(..))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -272,11 +282,11 @@
 --
 -- -   If
 --     'Vulkan.Extensions.VK_EXT_sample_locations.PhysicalDeviceSampleLocationsPropertiesEXT'::@variableSampleLocations@
---     is 'Vulkan.Core10.BaseType.FALSE', and @pipeline@ is a graphics
---     pipeline created with a
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', and @pipeline@ is a
+--     graphics pipeline created with a
 --     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'
 --     structure having its @sampleLocationsEnable@ member set to
---     'Vulkan.Core10.BaseType.TRUE' but without
+--     'Vulkan.Core10.FundamentalTypes.TRUE' but without
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
 --     enabled then the current render pass instance /must/ have been begun
 --     by specifying a
@@ -406,7 +416,7 @@
 --     'Vulkan.Core10.Handles.CommandBuffer' handle
 --
 -- -   @pViewports@ /must/ be a valid pointer to an array of
---     @viewportCount@ valid 'Viewport' structures
+--     @viewportCount@ valid 'Vulkan.Core10.Pipeline.Viewport' structures
 --
 -- -   @commandBuffer@ /must/ be in the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>
@@ -436,7 +446,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.Handles.CommandBuffer', 'Viewport'
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Pipeline.Viewport'
 cmdSetViewport :: forall io
                 . (MonadIO io)
                => -- | @commandBuffer@ is the command buffer into which the command will be
@@ -445,8 +455,9 @@
                -> -- | @firstViewport@ is the index of the first viewport whose parameters are
                   -- updated by the command.
                   ("firstViewport" ::: Word32)
-               -> -- | @pViewports@ is a pointer to an array of 'Viewport' structures
-                  -- specifying viewport parameters.
+               -> -- | @pViewports@ is a pointer to an array of
+                  -- 'Vulkan.Core10.Pipeline.Viewport' structures specifying viewport
+                  -- parameters.
                   ("viewports" ::: Vector Viewport)
                -> io ()
 cmdSetViewport commandBuffer firstViewport viewports = liftIO . evalContT $ do
@@ -513,7 +524,7 @@
 --     'Vulkan.Core10.Handles.CommandBuffer' handle
 --
 -- -   @pScissors@ /must/ be a valid pointer to an array of @scissorCount@
---     'Rect2D' structures
+--     'Vulkan.Core10.FundamentalTypes.Rect2D' structures
 --
 -- -   @commandBuffer@ /must/ be in the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>
@@ -543,7 +554,8 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.Handles.CommandBuffer', 'Rect2D'
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.Rect2D'
 cmdSetScissor :: forall io
                . (MonadIO io)
               => -- | @commandBuffer@ is the command buffer into which the command will be
@@ -552,8 +564,9 @@
               -> -- | @firstScissor@ is the index of the first scissor whose state is updated
                  -- by the command.
                  ("firstScissor" ::: Word32)
-              -> -- | @pScissors@ is a pointer to an array of 'Rect2D' structures defining
-                 -- scissor rectangles.
+              -> -- | @pScissors@ is a pointer to an array of
+                 -- 'Vulkan.Core10.FundamentalTypes.Rect2D' structures defining scissor
+                 -- rectangles.
                  ("scissors" ::: Vector Rect2D)
               -> io ()
 cmdSetScissor commandBuffer firstScissor scissors = liftIO . evalContT $ do
@@ -642,8 +655,8 @@
 --
 -- = Description
 --
--- If @depthBiasEnable@ is 'Vulkan.Core10.BaseType.FALSE', no depth bias is
--- applied and the fragment’s depth values are unchanged.
+-- If @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.FALSE', no depth
+-- bias is applied and the fragment’s depth values are unchanged.
 --
 -- @depthBiasSlopeFactor@ scales the maximum depth slope of the polygon,
 -- and @depthBiasConstantFactor@ scales an implementation-dependent
@@ -1422,7 +1435,7 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.BaseType.DeviceSize',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Enums.IndexType.IndexType'
 cmdBindIndexBuffer :: forall io
                     . (MonadIO io)
@@ -1513,7 +1526,7 @@
 --     'Vulkan.Core10.Handles.Buffer' handles
 --
 -- -   @pOffsets@ /must/ be a valid pointer to an array of @bindingCount@
---     'Vulkan.Core10.BaseType.DeviceSize' values
+--     'Vulkan.Core10.FundamentalTypes.DeviceSize' values
 --
 -- -   @commandBuffer@ /must/ be in the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>
@@ -1548,7 +1561,7 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.BaseType.DeviceSize'
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
 cmdBindVertexBuffers :: forall io
                       . (MonadIO io)
                      => -- | @commandBuffer@ is the command buffer into which the command is
@@ -1761,9 +1774,9 @@
 --
 -- -   If the bound graphics pipeline was created with
 --     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
---     set to 'Vulkan.Core10.BaseType.TRUE' and the current subpass has a
---     depth\/stencil attachment, then that attachment /must/ have been
---     created with the
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE' and the current subpass
+--     has a depth\/stencil attachment, then that attachment /must/ have
+--     been created with the
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
 --     bit set
 --
@@ -2049,9 +2062,9 @@
 --
 -- -   If the bound graphics pipeline was created with
 --     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
---     set to 'Vulkan.Core10.BaseType.TRUE' and the current subpass has a
---     depth\/stencil attachment, then that attachment /must/ have been
---     created with the
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE' and the current subpass
+--     has a depth\/stencil attachment, then that attachment /must/ have
+--     been created with the
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
 --     bit set
 --
@@ -2331,9 +2344,9 @@
 --
 -- -   If the bound graphics pipeline was created with
 --     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
---     set to 'Vulkan.Core10.BaseType.TRUE' and the current subpass has a
---     depth\/stencil attachment, then that attachment /must/ have been
---     created with the
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE' and the current subpass
+--     has a depth\/stencil attachment, then that attachment /must/ have
+--     been created with the
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
 --     bit set
 --
@@ -2428,7 +2441,7 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.BaseType.DeviceSize'
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
 cmdDrawIndirect :: forall io
                  . (MonadIO io)
                 => -- | @commandBuffer@ is the command buffer into which the command is
@@ -2637,9 +2650,9 @@
 --
 -- -   If the bound graphics pipeline was created with
 --     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
---     set to 'Vulkan.Core10.BaseType.TRUE' and the current subpass has a
---     depth\/stencil attachment, then that attachment /must/ have been
---     created with the
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE' and the current subpass
+--     has a depth\/stencil attachment, then that attachment /must/ have
+--     been created with the
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
 --     bit set
 --
@@ -2739,7 +2752,7 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.BaseType.DeviceSize'
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
 cmdDrawIndexedIndirect :: forall io
                         . (MonadIO io)
                        => -- | @commandBuffer@ is the command buffer into which the command is
@@ -3201,7 +3214,7 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.BaseType.DeviceSize'
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
 cmdDispatchIndirect :: forall io
                      . (MonadIO io)
                     => -- | @commandBuffer@ is the command buffer into which the command will be
@@ -4122,6 +4135,17 @@
 -- -   @dstImage@ /must/ not have been created with @flags@ containing
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
 --
+-- -   If the queue family used to create the
+--     'Vulkan.Core10.Handles.CommandPool' which @commandBuffer@ was
+--     allocated from does not support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', the
+--     @bufferOffset@ member of any element of @pRegions@ /must/ be a
+--     multiple of @4@
+--
+-- -   If @dstImage@ has a depth\/stencil format, the @bufferOffset@ member
+--     of any element of @pRegions@ /must/ be a multiple of @4@
+--
 -- == Valid Usage (Implicit)
 --
 -- -   @commandBuffer@ /must/ be a valid
@@ -4311,6 +4335,17 @@
 -- -   @srcImage@ /must/ not have been created with @flags@ containing
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
 --
+-- -   If the queue family used to create the
+--     'Vulkan.Core10.Handles.CommandPool' which @commandBuffer@ was
+--     allocated from does not support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', the
+--     @bufferOffset@ member of any element of @pRegions@ /must/ be a
+--     multiple of @4@
+--
+-- -   If @srcImage@ has a depth\/stencil format, the @bufferOffset@ member
+--     of any element of @pRegions@ /must/ be a multiple of @4@
+--
 -- == Valid Usage (Implicit)
 --
 -- -   @commandBuffer@ /must/ be a valid
@@ -4506,7 +4541,7 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.BaseType.DeviceSize'
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
 cmdUpdateBuffer :: forall io
                  . (MonadIO io)
                 => -- | @commandBuffer@ is the command buffer into which the command will be
@@ -4621,7 +4656,7 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.BaseType.DeviceSize'
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
 cmdFillBuffer :: forall io
                . (MonadIO io)
               => -- | @commandBuffer@ is the command buffer into which the command will be
@@ -4693,32 +4728,31 @@
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'
 --
--- -   The 'Vulkan.Core10.SharedTypes.ImageSubresourceRange'::@aspectMask@
+-- -   The 'Vulkan.Core10.ImageView.ImageSubresourceRange'::@aspectMask@
 --     members of the elements of the @pRanges@ array /must/ each only
 --     include
 --     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
 --
--- -   The
---     'Vulkan.Core10.SharedTypes.ImageSubresourceRange'::@baseMipLevel@
+-- -   The 'Vulkan.Core10.ImageView.ImageSubresourceRange'::@baseMipLevel@
 --     members of the elements of the @pRanges@ array /must/ each be less
 --     than the @mipLevels@ specified in
 --     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created
 --
--- -   For each 'Vulkan.Core10.SharedTypes.ImageSubresourceRange' element
---     of @pRanges@, if the @levelCount@ member is not
+-- -   For each 'Vulkan.Core10.ImageView.ImageSubresourceRange' element of
+--     @pRanges@, if the @levelCount@ member is not
 --     'Vulkan.Core10.APIConstants.REMAINING_MIP_LEVELS', then
 --     @baseMipLevel@ + @levelCount@ /must/ be less than the @mipLevels@
 --     specified in 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was
 --     created
 --
 -- -   The
---     'Vulkan.Core10.SharedTypes.ImageSubresourceRange'::@baseArrayLayer@
+--     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@baseArrayLayer@
 --     members of the elements of the @pRanges@ array /must/ each be less
 --     than the @arrayLayers@ specified in
 --     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created
 --
--- -   For each 'Vulkan.Core10.SharedTypes.ImageSubresourceRange' element
---     of @pRanges@, if the @layerCount@ member is not
+-- -   For each 'Vulkan.Core10.ImageView.ImageSubresourceRange' element of
+--     @pRanges@, if the @layerCount@ member is not
 --     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', then
 --     @baseArrayLayer@ + @layerCount@ /must/ be less than the
 --     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
@@ -4742,11 +4776,11 @@
 -- -   @imageLayout@ /must/ be a valid
 --     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
 --
--- -   @pColor@ /must/ be a valid pointer to a valid
---     'Vulkan.Core10.SharedTypes.ClearColorValue' union
+-- -   @pColor@ /must/ be a valid pointer to a valid 'ClearColorValue'
+--     union
 --
 -- -   @pRanges@ /must/ be a valid pointer to an array of @rangeCount@
---     valid 'Vulkan.Core10.SharedTypes.ImageSubresourceRange' structures
+--     valid 'Vulkan.Core10.ImageView.ImageSubresourceRange' structures
 --
 -- -   @commandBuffer@ /must/ be in the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>
@@ -4781,10 +4815,10 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.SharedTypes.ClearColorValue',
--- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Image',
+-- 'ClearColorValue', 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.Handles.Image',
 -- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
--- 'Vulkan.Core10.SharedTypes.ImageSubresourceRange'
+-- 'Vulkan.Core10.ImageView.ImageSubresourceRange'
 cmdClearColorImage :: forall io
                     . (MonadIO io)
                    => -- | @commandBuffer@ is the command buffer into which the command will be
@@ -4798,15 +4832,14 @@
                       -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' or
                       -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'.
                       ImageLayout
-                   -> -- | @pColor@ is a pointer to a 'Vulkan.Core10.SharedTypes.ClearColorValue'
-                      -- structure containing the values that the image subresource ranges will
-                      -- be cleared to (see
+                   -> -- | @pColor@ is a pointer to a 'ClearColorValue' structure containing the
+                      -- values that the image subresource ranges will be cleared to (see
                       -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears-values>
                       -- below).
                       ClearColorValue
                    -> -- | @pRanges@ is a pointer to an array of
-                      -- 'Vulkan.Core10.SharedTypes.ImageSubresourceRange' structures describing
-                      -- a range of mipmap levels, array layers, and aspects to be cleared, as
+                      -- 'Vulkan.Core10.ImageView.ImageSubresourceRange' structures describing a
+                      -- range of mipmap levels, array layers, and aspects to be cleared, as
                       -- described in
                       -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views Image Views>.
                       ("ranges" ::: Vector ImageSubresourceRange)
@@ -4876,44 +4909,43 @@
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'
 --     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'
 --
--- -   The 'Vulkan.Core10.SharedTypes.ImageSubresourceRange'::@aspectMask@
+-- -   The 'Vulkan.Core10.ImageView.ImageSubresourceRange'::@aspectMask@
 --     member of each element of the @pRanges@ array /must/ not include
 --     bits other than
 --     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
 --     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
 --
 -- -   If the @image@’s format does not have a stencil component, then the
---     'Vulkan.Core10.SharedTypes.ImageSubresourceRange'::@aspectMask@
---     member of each element of the @pRanges@ array /must/ not include the
+--     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@aspectMask@ member
+--     of each element of the @pRanges@ array /must/ not include the
 --     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
 --     bit
 --
 -- -   If the @image@’s format does not have a depth component, then the
---     'Vulkan.Core10.SharedTypes.ImageSubresourceRange'::@aspectMask@
---     member of each element of the @pRanges@ array /must/ not include the
+--     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@aspectMask@ member
+--     of each element of the @pRanges@ array /must/ not include the
 --     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' bit
 --
--- -   The
---     'Vulkan.Core10.SharedTypes.ImageSubresourceRange'::@baseMipLevel@
+-- -   The 'Vulkan.Core10.ImageView.ImageSubresourceRange'::@baseMipLevel@
 --     members of the elements of the @pRanges@ array /must/ each be less
 --     than the @mipLevels@ specified in
 --     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created
 --
--- -   For each 'Vulkan.Core10.SharedTypes.ImageSubresourceRange' element
---     of @pRanges@, if the @levelCount@ member is not
+-- -   For each 'Vulkan.Core10.ImageView.ImageSubresourceRange' element of
+--     @pRanges@, if the @levelCount@ member is not
 --     'Vulkan.Core10.APIConstants.REMAINING_MIP_LEVELS', then
 --     @baseMipLevel@ + @levelCount@ /must/ be less than the @mipLevels@
 --     specified in 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was
 --     created
 --
 -- -   The
---     'Vulkan.Core10.SharedTypes.ImageSubresourceRange'::@baseArrayLayer@
+--     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@baseArrayLayer@
 --     members of the elements of the @pRanges@ array /must/ each be less
 --     than the @arrayLayers@ specified in
 --     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created
 --
--- -   For each 'Vulkan.Core10.SharedTypes.ImageSubresourceRange' element
---     of @pRanges@, if the @layerCount@ member is not
+-- -   For each 'Vulkan.Core10.ImageView.ImageSubresourceRange' element of
+--     @pRanges@, if the @layerCount@ member is not
 --     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', then
 --     @baseArrayLayer@ + @layerCount@ /must/ be less than the
 --     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
@@ -4938,10 +4970,10 @@
 --     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
 --
 -- -   @pDepthStencil@ /must/ be a valid pointer to a valid
---     'Vulkan.Core10.SharedTypes.ClearDepthStencilValue' structure
+--     'ClearDepthStencilValue' structure
 --
 -- -   @pRanges@ /must/ be a valid pointer to an array of @rangeCount@
---     valid 'Vulkan.Core10.SharedTypes.ImageSubresourceRange' structures
+--     valid 'Vulkan.Core10.ImageView.ImageSubresourceRange' structures
 --
 -- -   @commandBuffer@ /must/ be in the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>
@@ -4976,10 +5008,10 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.SharedTypes.ClearDepthStencilValue',
--- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Image',
+-- 'ClearDepthStencilValue', 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.Handles.Image',
 -- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
--- 'Vulkan.Core10.SharedTypes.ImageSubresourceRange'
+-- 'Vulkan.Core10.ImageView.ImageSubresourceRange'
 cmdClearDepthStencilImage :: forall io
                            . (MonadIO io)
                           => -- | @commandBuffer@ is the command buffer into which the command will be
@@ -4992,16 +5024,15 @@
                              -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' or
                              -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'.
                              ImageLayout
-                          -> -- | @pDepthStencil@ is a pointer to a
-                             -- 'Vulkan.Core10.SharedTypes.ClearDepthStencilValue' structure containing
-                             -- the values that the depth and stencil image subresource ranges will be
-                             -- cleared to (see
+                          -> -- | @pDepthStencil@ is a pointer to a 'ClearDepthStencilValue' structure
+                             -- containing the values that the depth and stencil image subresource
+                             -- ranges will be cleared to (see
                              -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears-values>
                              -- below).
                              ClearDepthStencilValue
                           -> -- | @pRanges@ is a pointer to an array of
-                             -- 'Vulkan.Core10.SharedTypes.ImageSubresourceRange' structures describing
-                             -- a range of mipmap levels, array layers, and aspects to be cleared, as
+                             -- 'Vulkan.Core10.ImageView.ImageSubresourceRange' structures describing a
+                             -- range of mipmap levels, array layers, and aspects to be cleared, as
                              -- described in
                              -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views Image Views>.
                              ("ranges" ::: Vector ImageSubresourceRange)
@@ -5491,7 +5522,8 @@
                Event
             -> -- | @stageMask@ specifies the
                -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages source stage mask>
-               -- used to determine when the @event@ is signaled.
+               -- used to determine the first
+               -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>.
                ("stageMask" ::: PipelineStageFlags)
             -> io ()
 cmdSetEvent commandBuffer event stageMask = liftIO $ do
@@ -5774,6 +5806,52 @@
 --
 -- == Valid Usage
 --
+-- -   The @srcAccessMask@ member of each element of @pMemoryBarriers@
+--     /must/ only include access flags that are supported by one or more
+--     of the pipeline stages in @srcStageMask@, as specified in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
+--
+-- -   The @dstAccessMask@ member of each element of @pMemoryBarriers@
+--     /must/ only include access flags that are supported by one or more
+--     of the pipeline stages in @dstStageMask@, as specified in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
+--
+-- -   For any element of @pBufferMemoryBarriers@, if its
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ members are equal,
+--     or if its @srcQueueFamilyIndex@ is the queue family index that was
+--     used to create the command pool that @commandBuffer@ was allocated
+--     from, then its @srcAccessMask@ member /must/ only contain access
+--     flags that are supported by one or more of the pipeline stages in
+--     @srcStageMask@, as specified in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
+--
+-- -   For any element of @pBufferMemoryBarriers@, if its
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ members are equal,
+--     or if its @dstQueueFamilyIndex@ is the queue family index that was
+--     used to create the command pool that @commandBuffer@ was allocated
+--     from, then its @dstAccessMask@ member /must/ only contain access
+--     flags that are supported by one or more of the pipeline stages in
+--     @dstStageMask@, as specified in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
+--
+-- -   For any element of @pImageMemoryBarriers@, if its
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ members are equal,
+--     or if its @srcQueueFamilyIndex@ is the queue family index that was
+--     used to create the command pool that @commandBuffer@ was allocated
+--     from, then its @srcAccessMask@ member /must/ only contain access
+--     flags that are supported by one or more of the pipeline stages in
+--     @srcStageMask@, as specified in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
+--
+-- -   For any element of @pImageMemoryBarriers@, if its
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ members are equal,
+--     or if its @dstQueueFamilyIndex@ is the queue family index that was
+--     used to create the command pool that @commandBuffer@ was allocated
+--     from, then its @dstAccessMask@ member /must/ only contain access
+--     flags that are supported by one or more of the pipeline stages in
+--     @dstStageMask@, as specified in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
+--
 -- -   @srcStageMask@ /must/ be the bitwise OR of the @stageMask@ parameter
 --     used in previous calls to 'cmdSetEvent' with any of the members of
 --     @pEvents@ and
@@ -5818,18 +5896,6 @@
 --     @commandBuffer@ was allocated from, as specified in the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>
 --
--- -   Each element of @pMemoryBarriers@, @pBufferMemoryBarriers@ or
---     @pImageMemoryBarriers@ /must/ not have any access flag included in
---     its @srcAccessMask@ member if that bit is not supported by any of
---     the pipeline stages in @srcStageMask@, as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
---
--- -   Each element of @pMemoryBarriers@, @pBufferMemoryBarriers@ or
---     @pImageMemoryBarriers@ /must/ not have any access flag included in
---     its @dstAccessMask@ member if that bit is not supported by any of
---     the pipeline stages in @dstStageMask@, as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
---
 -- -   The @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ members of any
 --     element of @pBufferMemoryBarriers@ or @pImageMemoryBarriers@ /must/
 --     be equal
@@ -5857,38 +5923,6 @@
 --     feature is not enabled, @dstStageMask@ /must/ not contain
 --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'
 --
--- -   The @srcAccessMask@ member of each element of @pMemoryBarriers@
---     /must/ only include access flags that are supported by one or more
---     of the pipeline stages in @srcStageMask@, as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
---
--- -   The @dstAccessMask@ member of each element of @pMemoryBarriers@
---     /must/ only include access flags that are supported by one or more
---     of the pipeline stages in @dstStageMask@, as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
---
--- -   The @srcAccessMask@ member of each element of
---     @pBufferMemoryBarriers@ /must/ only include access flags that are
---     supported by one or more of the pipeline stages in @srcStageMask@,
---     as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
---
--- -   The @dstAccessMask@ member of each element of
---     @pBufferMemoryBarriers@ /must/ only include access flags that are
---     supported by one or more of the pipeline stages in @dstStageMask@,
---     as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
---
--- -   The @srcAccessMask@ member of each element of @pImageMemoryBarriers@
---     /must/ only include access flags that are supported by one or more
---     of the pipeline stages in @srcStageMask@, as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
---
--- -   The @dstAccessMask@ member of any element of @pImageMemoryBarriers@
---     /must/ only include access flags that are supported by one or more
---     of the pipeline stages in @dstStageMask@, as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
---
 -- == Valid Usage (Implicit)
 --
 -- -   @commandBuffer@ /must/ be a valid
@@ -6094,6 +6128,36 @@
 --
 -- == Valid Usage
 --
+-- -   If 'cmdPipelineBarrier' is called within a render pass instance, the
+--     render pass /must/ have been created with at least one
+--     'Vulkan.Core10.Pass.SubpassDependency' instance in
+--     'Vulkan.Core10.Pass.RenderPassCreateInfo'::@pDependencies@ that
+--     expresses a dependency from the current subpass to itself, with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scopes>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopes>
+--     that are all supersets of the scopes defined in this command
+--
+-- -   If 'cmdPipelineBarrier' is called within a render pass instance, it
+--     /must/ not include any buffer memory barriers
+--
+-- -   If 'cmdPipelineBarrier' is called within a render pass instance, the
+--     @image@ member of any image memory barrier included in this command
+--     /must/ be an attachment used in the current subpass both as an input
+--     attachment, and as either a color or depth\/stencil attachment
+--
+-- -   If 'cmdPipelineBarrier' is called within a render pass instance, the
+--     @oldLayout@ and @newLayout@ members of any image memory barrier
+--     included in this command /must/ be equal
+--
+-- -   If 'cmdPipelineBarrier' is called within a render pass instance, the
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ members of any image
+--     memory barrier included in this command /must/ be equal
+--
+-- -   If 'cmdPipelineBarrier' is called outside of a render pass instance,
+--     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT'
+--     /must/ not be included in the dependency flags
+--
 -- -   If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
 --     feature is not enabled, @srcStageMask@ /must/ not contain
@@ -6118,58 +6182,6 @@
 --     or
 --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'
 --
--- -   If 'cmdPipelineBarrier' is called within a render pass instance, the
---     render pass /must/ have been created with at least one
---     'Vulkan.Core10.Pass.SubpassDependency' instance in
---     'Vulkan.Core10.Pass.RenderPassCreateInfo'::@pDependencies@ that
---     expresses a dependency from the current subpass to itself, and for
---     which @srcStageMask@ contains a subset of the bit values in
---     'Vulkan.Core10.Pass.SubpassDependency'::@srcStageMask@,
---     @dstStageMask@ contains a subset of the bit values in
---     'Vulkan.Core10.Pass.SubpassDependency'::@dstStageMask@,
---     @dependencyFlags@ is equal to
---     'Vulkan.Core10.Pass.SubpassDependency'::@dependencyFlags@,
---     @srcAccessMask@ member of each element of @pMemoryBarriers@ and
---     @pImageMemoryBarriers@ contains a subset of the bit values in
---     'Vulkan.Core10.Pass.SubpassDependency'::@srcAccessMask@, and
---     @dstAccessMask@ member of each element of @pMemoryBarriers@ and
---     @pImageMemoryBarriers@ contains a subset of the bit values in
---     'Vulkan.Core10.Pass.SubpassDependency'::@dstAccessMask@
---
--- -   If 'cmdPipelineBarrier' is called within a render pass instance,
---     @bufferMemoryBarrierCount@ /must/ be @0@
---
--- -   If 'cmdPipelineBarrier' is called within a render pass instance, the
---     @image@ member of any element of @pImageMemoryBarriers@ /must/ be
---     equal to one of the elements of @pAttachments@ that the current
---     @framebuffer@ was created with, that is also referred to by one of
---     the elements of the @pColorAttachments@, @pResolveAttachments@ or
---     @pDepthStencilAttachment@ members of the
---     'Vulkan.Core10.Pass.SubpassDescription' instance or by the
---     @pDepthStencilResolveAttachment@ member of the
---     'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.SubpassDescriptionDepthStencilResolve'
---     structure that the current subpass was created with
---
--- -   If 'cmdPipelineBarrier' is called within a render pass instance, the
---     @oldLayout@ and @newLayout@ members of any element of
---     @pImageMemoryBarriers@ /must/ be equal to the @layout@ member of an
---     element of the @pColorAttachments@, @pResolveAttachments@ or
---     @pDepthStencilAttachment@ members of the
---     'Vulkan.Core10.Pass.SubpassDescription' instance or by the
---     @pDepthStencilResolveAttachment@ member of the
---     'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.SubpassDescriptionDepthStencilResolve'
---     structure that the current subpass was created with, that refers to
---     the same @image@
---
--- -   If 'cmdPipelineBarrier' is called within a render pass instance, the
---     @oldLayout@ and @newLayout@ members of an element of
---     @pImageMemoryBarriers@ /must/ be equal
---
--- -   If 'cmdPipelineBarrier' is called within a render pass instance, the
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ members of any
---     element of @pImageMemoryBarriers@ /must/ be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED'
---
 -- -   Any pipeline stage included in @srcStageMask@ or @dstStageMask@
 --     /must/ be supported by the capabilities of the queue family
 --     specified by the @queueFamilyIndex@ member of the
@@ -6178,10 +6190,6 @@
 --     @commandBuffer@ was allocated from, as specified in the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>
 --
--- -   If 'cmdPipelineBarrier' is called outside of a render pass instance,
---     @dependencyFlags@ /must/ not include
---     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT'
---
 -- -   If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
 --     feature is not enabled, @srcStageMask@ /must/ not contain
@@ -6803,19 +6811,6 @@
 -- at any specific stage of the pipeline, it /may/ instead do so at any
 -- logically later stage.
 --
--- 'cmdCopyQueryPoolResults' /can/ then be called to copy the timestamp
--- value from the query pool into buffer memory, with ordering and
--- synchronization behavior equivalent to how other queries operate.
--- Timestamp values /can/ also be retrieved from the query pool using
--- 'Vulkan.Core10.Query.getQueryPoolResults'. As with other queries, the
--- query /must/ be reset using 'cmdResetQueryPool' or
--- 'Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset.resetQueryPool'
--- before requesting the timestamp value be written to it.
---
--- While 'cmdWriteTimestamp' /can/ be called inside or outside of a render
--- pass instance, 'cmdCopyQueryPoolResults' /must/ only be called outside
--- of a render pass instance.
---
 -- Timestamps /may/ only be meaningfully compared if they are written by
 -- commands submitted to the same queue.
 --
@@ -6848,6 +6843,50 @@
 --
 -- == Valid Usage
 --
+-- -   @pipelineStage@ /must/ be a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported valid stage>
+--     for the queue family that was used to create the command pool that
+--     @commandBuffer@ was allocated from
+--
+-- -   If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
+--     feature is not enabled, @pipelineStage@ /must/ not be
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'
+--
+-- -   If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
+--     feature is not enabled, @pipelineStage@ /must/ not be
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'
+--     or
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'
+--
+-- -   If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
+--     feature is not enabled, @pipelineStage@ /must/ not be
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'
+--
+-- -   If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
+--     feature is not enabled, @pipelineStage@ /must/ not be
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
+--
+-- -   If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
+--     feature is not enabled, @pipelineStage@ /must/ not be
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
+--
+-- -   If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
+--     feature is not enabled, @pipelineStage@ /must/ not be
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'
+--     or
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'
+--
+-- -   If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
+--     feature is not enabled, @pipelineStage@ /must/ not be
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
+--
 -- -   @queryPool@ /must/ have been created with a @queryType@ of
 --     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIMESTAMP'
 --
@@ -7045,7 +7084,7 @@
 -- -   If the @queryType@ used to create @queryPool@ was
 --     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',
 --     'Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryPropertiesKHR'::@allowCommandBufferQueryCopies@
---     /must/ be 'Vulkan.Core10.BaseType.TRUE'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
 --
 -- -   If the @queryType@ used to create @queryPool@ was
 --     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',
@@ -7110,7 +7149,8 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.BaseType.DeviceSize', 'Vulkan.Core10.Handles.QueryPool',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Handles.QueryPool',
 -- 'Vulkan.Core10.Enums.QueryResultFlagBits.QueryResultFlags'
 cmdCopyQueryPoolResults :: forall io
                          . (MonadIO io)
@@ -7768,7 +7808,7 @@
 --     then each element of @pCommandBuffers@ /must/ have been recorded
 --     with
 --     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@occlusionQueryEnable@
---     set to 'Vulkan.Core10.BaseType.TRUE'
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE'
 --
 -- -   If @commandBuffer@ has a
 --     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION' query
@@ -7869,218 +7909,6 @@
   pure $ ()
 
 
--- | VkViewport - Structure specifying a viewport
---
--- = Description
---
--- The framebuffer depth coordinate @z@f /may/ be represented using either
--- a fixed-point or floating-point representation. However, a
--- floating-point representation /must/ be used if the depth\/stencil
--- attachment has a floating-point depth component. If an m-bit fixed-point
--- representation is used, we assume that it represents each value
--- \(\frac{k}{2^m - 1}\), where k ∈ { 0, 1, …​, 2m-1 }, as k (e.g. 1.0 is
--- represented in binary as a string of all ones).
---
--- The viewport parameters shown in the above equations are found from
--- these values as
---
--- -   ox = @x@ + @width@ \/ 2
---
--- -   oy = @y@ + @height@ \/ 2
---
--- -   oz = @minDepth@
---
--- -   px = @width@
---
--- -   py = @height@
---
--- -   pz = @maxDepth@ - @minDepth@.
---
--- If a render pass transform is enabled, the values (px,py) and (ox, oy)
--- defining the viewport are transformed as described in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>
--- before participating in the viewport transform.
---
--- The application /can/ specify a negative term for @height@, which has
--- the effect of negating the y coordinate in clip space before performing
--- the transform. When using a negative @height@, the application /should/
--- also adjust the @y@ value to point to the lower left corner of the
--- viewport instead of the upper left corner. Using the negative @height@
--- allows the application to avoid having to negate the y component of the
--- @Position@ output from the last vertex processing stage in shaders that
--- also target other graphics APIs.
---
--- The width and height of the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxViewportDimensions implementation-dependent maximum viewport dimensions>
--- /must/ be greater than or equal to the width and height of the largest
--- image which /can/ be created and attached to a framebuffer.
---
--- The floating-point viewport bounds are represented with an
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-viewportSubPixelBits implementation-dependent precision>.
---
--- == Valid Usage
---
--- -   @width@ /must/ be greater than @0.0@
---
--- -   @width@ /must/ be less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewportDimensions@[0]
---
--- -   The absolute value of @height@ /must/ be less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewportDimensions@[1]
---
--- -   @x@ /must/ be greater than or equal to @viewportBoundsRange@[0]
---
--- -   (@x@ + @width@) /must/ be less than or equal to
---     @viewportBoundsRange@[1]
---
--- -   @y@ /must/ be greater than or equal to @viewportBoundsRange@[0]
---
--- -   @y@ /must/ be less than or equal to @viewportBoundsRange@[1]
---
--- -   (@y@ + @height@) /must/ be greater than or equal to
---     @viewportBoundsRange@[0]
---
--- -   (@y@ + @height@) /must/ be less than or equal to
---     @viewportBoundsRange@[1]
---
--- -   Unless @VK_EXT_depth_range_unrestricted@ extension is enabled
---     @minDepth@ /must/ be between @0.0@ and @1.0@, inclusive
---
--- -   Unless @VK_EXT_depth_range_unrestricted@ extension is enabled
---     @maxDepth@ /must/ be between @0.0@ and @1.0@, inclusive
---
--- = See Also
---
--- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo',
--- 'cmdSetViewport'
-data Viewport = Viewport
-  { -- | @x@ and @y@ are the viewport’s upper left corner (x,y).
-    x :: Float
-  , -- No documentation found for Nested "VkViewport" "y"
-    y :: Float
-  , -- | @width@ and @height@ are the viewport’s width and height, respectively.
-    width :: Float
-  , -- No documentation found for Nested "VkViewport" "height"
-    height :: Float
-  , -- | @minDepth@ and @maxDepth@ are the depth range for the viewport. It is
-    -- valid for @minDepth@ to be greater than or equal to @maxDepth@.
-    minDepth :: Float
-  , -- No documentation found for Nested "VkViewport" "maxDepth"
-    maxDepth :: Float
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (Viewport)
-#endif
-deriving instance Show Viewport
-
-instance ToCStruct Viewport where
-  withCStruct x f = allocaBytesAligned 24 4 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p Viewport{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (x))
-    poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (y))
-    poke ((p `plusPtr` 8 :: Ptr CFloat)) (CFloat (width))
-    poke ((p `plusPtr` 12 :: Ptr CFloat)) (CFloat (height))
-    poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (minDepth))
-    poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (maxDepth))
-    f
-  cStructSize = 24
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (zero))
-    poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (zero))
-    poke ((p `plusPtr` 8 :: Ptr CFloat)) (CFloat (zero))
-    poke ((p `plusPtr` 12 :: Ptr CFloat)) (CFloat (zero))
-    poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (zero))
-    poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (zero))
-    f
-
-instance FromCStruct Viewport where
-  peekCStruct p = do
-    x <- peek @CFloat ((p `plusPtr` 0 :: Ptr CFloat))
-    y <- peek @CFloat ((p `plusPtr` 4 :: Ptr CFloat))
-    width <- peek @CFloat ((p `plusPtr` 8 :: Ptr CFloat))
-    height <- peek @CFloat ((p `plusPtr` 12 :: Ptr CFloat))
-    minDepth <- peek @CFloat ((p `plusPtr` 16 :: Ptr CFloat))
-    maxDepth <- peek @CFloat ((p `plusPtr` 20 :: Ptr CFloat))
-    pure $ Viewport
-             ((\(CFloat a) -> a) x) ((\(CFloat a) -> a) y) ((\(CFloat a) -> a) width) ((\(CFloat a) -> a) height) ((\(CFloat a) -> a) minDepth) ((\(CFloat a) -> a) maxDepth)
-
-instance Storable Viewport where
-  sizeOf ~_ = 24
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero Viewport where
-  zero = Viewport
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkRect2D - Structure specifying a two-dimensional subregion
---
--- = See Also
---
--- 'Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindImageMemoryDeviceGroupInfo',
--- 'ClearRect',
--- 'Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo',
--- 'Vulkan.Extensions.VK_KHR_display_swapchain.DisplayPresentInfoKHR',
--- 'Vulkan.Core10.SharedTypes.Extent2D',
--- 'Vulkan.Core10.SharedTypes.Offset2D',
--- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT',
--- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV',
--- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo',
--- 'RenderPassBeginInfo',
--- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT',
--- 'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV',
--- 'cmdSetScissor',
--- 'Vulkan.Extensions.VK_KHR_swapchain.getPhysicalDevicePresentRectanglesKHR'
-data Rect2D = Rect2D
-  { -- | @offset@ is a 'Vulkan.Core10.SharedTypes.Offset2D' specifying the
-    -- rectangle offset.
-    offset :: Offset2D
-  , -- | @extent@ is a 'Vulkan.Core10.SharedTypes.Extent2D' specifying the
-    -- rectangle extent.
-    extent :: Extent2D
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (Rect2D)
-#endif
-deriving instance Show Rect2D
-
-instance ToCStruct Rect2D where
-  withCStruct x f = allocaBytesAligned 16 4 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p Rect2D{..} f = evalContT $ do
-    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr Offset2D)) (offset) . ($ ())
-    ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr Extent2D)) (extent) . ($ ())
-    lift $ f
-  cStructSize = 16
-  cStructAlignment = 4
-  pokeZeroCStruct p f = evalContT $ do
-    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr Offset2D)) (zero) . ($ ())
-    ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr Extent2D)) (zero) . ($ ())
-    lift $ f
-
-instance FromCStruct Rect2D where
-  peekCStruct p = do
-    offset <- peekCStruct @Offset2D ((p `plusPtr` 0 :: Ptr Offset2D))
-    extent <- peekCStruct @Extent2D ((p `plusPtr` 8 :: Ptr Extent2D))
-    pure $ Rect2D
-             offset extent
-
-instance Zero Rect2D where
-  zero = Rect2D
-           zero
-           zero
-
-
 -- | VkClearRect - Structure specifying a clear rectangle
 --
 -- = Description
@@ -8090,7 +7918,7 @@
 --
 -- = See Also
 --
--- 'Rect2D', 'cmdClearAttachments'
+-- 'Vulkan.Core10.FundamentalTypes.Rect2D', 'cmdClearAttachments'
 data ClearRect = ClearRect
   { -- | @rect@ is the two-dimensional region to be cleared.
     rect :: Rect2D
@@ -8135,6 +7963,96 @@
            zero
 
 
+-- | VkImageSubresourceLayers - Structure specifying an image subresource
+-- layers
+--
+-- == Valid Usage
+--
+-- -   If @aspectMask@ contains
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT', it
+--     /must/ not contain either of
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--
+-- -   @aspectMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_METADATA_BIT'
+--
+-- -   @aspectMask@ /must/ not include
+--     @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@ for any index @i@
+--
+-- -   @layerCount@ /must/ be greater than 0
+--
+-- == Valid Usage (Implicit)
+--
+-- -   @aspectMask@ /must/ be a valid combination of
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits' values
+--
+-- -   @aspectMask@ /must/ not be @0@
+--
+-- = See Also
+--
+-- 'BufferImageCopy',
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags', 'ImageBlit',
+-- 'ImageCopy', 'ImageResolve'
+data ImageSubresourceLayers = ImageSubresourceLayers
+  { -- | @aspectMask@ is a combination of
+    -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits', selecting
+    -- the color, depth and\/or stencil aspects to be copied.
+    aspectMask :: ImageAspectFlags
+  , -- | @mipLevel@ is the mipmap level to copy from.
+    mipLevel :: Word32
+  , -- | @baseArrayLayer@ and @layerCount@ are the starting layer and number of
+    -- layers to copy.
+    baseArrayLayer :: Word32
+  , -- No documentation found for Nested "VkImageSubresourceLayers" "layerCount"
+    layerCount :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ImageSubresourceLayers)
+#endif
+deriving instance Show ImageSubresourceLayers
+
+instance ToCStruct ImageSubresourceLayers where
+  withCStruct x f = allocaBytesAligned 16 4 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ImageSubresourceLayers{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr ImageAspectFlags)) (aspectMask)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (mipLevel)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (baseArrayLayer)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (layerCount)
+    f
+  cStructSize = 16
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr ImageAspectFlags)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct ImageSubresourceLayers where
+  peekCStruct p = do
+    aspectMask <- peek @ImageAspectFlags ((p `plusPtr` 0 :: Ptr ImageAspectFlags))
+    mipLevel <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    baseArrayLayer <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
+    layerCount <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
+    pure $ ImageSubresourceLayers
+             aspectMask mipLevel baseArrayLayer layerCount
+
+instance Storable ImageSubresourceLayers where
+  sizeOf ~_ = 16
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ImageSubresourceLayers where
+  zero = ImageSubresourceLayers
+           zero
+           zero
+           zero
+           zero
+
+
 -- | VkBufferCopy - Structure specifying a buffer copy operation
 --
 -- == Valid Usage
@@ -8143,7 +8061,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.DeviceSize', 'cmdCopyBuffer'
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize', 'cmdCopyBuffer'
 data BufferCopy = BufferCopy
   { -- | @srcOffset@ is the starting offset in bytes from the start of
     -- @srcBuffer@.
@@ -8397,22 +8315,20 @@
 --
 -- == Valid Usage (Implicit)
 --
--- -   @srcSubresource@ /must/ be a valid
---     'Vulkan.Core10.SharedTypes.ImageSubresourceLayers' structure
+-- -   @srcSubresource@ /must/ be a valid 'ImageSubresourceLayers'
+--     structure
 --
--- -   @dstSubresource@ /must/ be a valid
---     'Vulkan.Core10.SharedTypes.ImageSubresourceLayers' structure
+-- -   @dstSubresource@ /must/ be a valid 'ImageSubresourceLayers'
+--     structure
 --
 -- = See Also
 --
--- 'Vulkan.Core10.SharedTypes.Extent3D',
--- 'Vulkan.Core10.SharedTypes.ImageSubresourceLayers',
--- 'Vulkan.Core10.SharedTypes.Offset3D', 'cmdCopyImage'
+-- 'Vulkan.Core10.FundamentalTypes.Extent3D', 'ImageSubresourceLayers',
+-- 'Vulkan.Core10.FundamentalTypes.Offset3D', 'cmdCopyImage'
 data ImageCopy = ImageCopy
-  { -- | @srcSubresource@ and @dstSubresource@ are
-    -- 'Vulkan.Core10.SharedTypes.ImageSubresourceLayers' structures specifying
-    -- the image subresources of the images used for the source and destination
-    -- image data, respectively.
+  { -- | @srcSubresource@ and @dstSubresource@ are 'ImageSubresourceLayers'
+    -- structures specifying the image subresources of the images used for the
+    -- source and destination image data, respectively.
     srcSubresource :: ImageSubresourceLayers
   , -- | @srcOffset@ and @dstOffset@ select the initial @x@, @y@, and @z@ offsets
     -- in texels of the sub-regions of the source and destination image data.
@@ -8540,28 +8456,28 @@
 --
 -- == Valid Usage (Implicit)
 --
--- -   @srcSubresource@ /must/ be a valid
---     'Vulkan.Core10.SharedTypes.ImageSubresourceLayers' structure
+-- -   @srcSubresource@ /must/ be a valid 'ImageSubresourceLayers'
+--     structure
 --
--- -   @dstSubresource@ /must/ be a valid
---     'Vulkan.Core10.SharedTypes.ImageSubresourceLayers' structure
+-- -   @dstSubresource@ /must/ be a valid 'ImageSubresourceLayers'
+--     structure
 --
 -- = See Also
 --
--- 'Vulkan.Core10.SharedTypes.ImageSubresourceLayers',
--- 'Vulkan.Core10.SharedTypes.Offset3D', 'cmdBlitImage'
+-- 'ImageSubresourceLayers', 'Vulkan.Core10.FundamentalTypes.Offset3D',
+-- 'cmdBlitImage'
 data ImageBlit = ImageBlit
   { -- | @srcSubresource@ is the subresource to blit from.
     srcSubresource :: ImageSubresourceLayers
   , -- | @srcOffsets@ is a pointer to an array of two
-    -- 'Vulkan.Core10.SharedTypes.Offset3D' structures specifying the bounds of
-    -- the source region within @srcSubresource@.
+    -- 'Vulkan.Core10.FundamentalTypes.Offset3D' structures specifying the
+    -- bounds of the source region within @srcSubresource@.
     srcOffsets :: (Offset3D, Offset3D)
   , -- | @dstSubresource@ is the subresource to blit into.
     dstSubresource :: ImageSubresourceLayers
   , -- | @dstOffsets@ is a pointer to an array of two
-    -- 'Vulkan.Core10.SharedTypes.Offset3D' structures specifying the bounds of
-    -- the destination region within @dstSubresource@.
+    -- 'Vulkan.Core10.FundamentalTypes.Offset3D' structures specifying the
+    -- bounds of the destination region within @dstSubresource@.
     dstOffsets :: (Offset3D, Offset3D)
   }
   deriving (Typeable)
@@ -8690,8 +8606,6 @@
 --     @imageSubresource@ as defined in
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes>
 --
--- -   @bufferOffset@ /must/ be a multiple of @4@
---
 -- -   @bufferRowLength@ /must/ be @0@, or greater than or equal to the
 --     @width@ member of @imageExtent@
 --
@@ -8790,15 +8704,14 @@
 --
 -- == Valid Usage (Implicit)
 --
--- -   @imageSubresource@ /must/ be a valid
---     'Vulkan.Core10.SharedTypes.ImageSubresourceLayers' structure
+-- -   @imageSubresource@ /must/ be a valid 'ImageSubresourceLayers'
+--     structure
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.DeviceSize',
--- 'Vulkan.Core10.SharedTypes.Extent3D',
--- 'Vulkan.Core10.SharedTypes.ImageSubresourceLayers',
--- 'Vulkan.Core10.SharedTypes.Offset3D', 'cmdCopyBufferToImage',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.FundamentalTypes.Extent3D', 'ImageSubresourceLayers',
+-- 'Vulkan.Core10.FundamentalTypes.Offset3D', 'cmdCopyBufferToImage',
 -- 'cmdCopyImageToBuffer'
 data BufferImageCopy = BufferImageCopy
   { -- | @bufferOffset@ is the offset in bytes from the start of the buffer
@@ -8812,8 +8725,7 @@
     bufferRowLength :: Word32
   , -- No documentation found for Nested "VkBufferImageCopy" "bufferImageHeight"
     bufferImageHeight :: Word32
-  , -- | @imageSubresource@ is a
-    -- 'Vulkan.Core10.SharedTypes.ImageSubresourceLayers' used to specify the
+  , -- | @imageSubresource@ is a 'ImageSubresourceLayers' used to specify the
     -- specific image subresources of the image used for the source or
     -- destination image data.
     imageSubresource :: ImageSubresourceLayers
@@ -8933,23 +8845,21 @@
 --
 -- == Valid Usage (Implicit)
 --
--- -   @srcSubresource@ /must/ be a valid
---     'Vulkan.Core10.SharedTypes.ImageSubresourceLayers' structure
+-- -   @srcSubresource@ /must/ be a valid 'ImageSubresourceLayers'
+--     structure
 --
--- -   @dstSubresource@ /must/ be a valid
---     'Vulkan.Core10.SharedTypes.ImageSubresourceLayers' structure
+-- -   @dstSubresource@ /must/ be a valid 'ImageSubresourceLayers'
+--     structure
 --
 -- = See Also
 --
--- 'Vulkan.Core10.SharedTypes.Extent3D',
--- 'Vulkan.Core10.SharedTypes.ImageSubresourceLayers',
--- 'Vulkan.Core10.SharedTypes.Offset3D', 'cmdResolveImage'
+-- 'Vulkan.Core10.FundamentalTypes.Extent3D', 'ImageSubresourceLayers',
+-- 'Vulkan.Core10.FundamentalTypes.Offset3D', 'cmdResolveImage'
 data ImageResolve = ImageResolve
-  { -- | @srcSubresource@ and @dstSubresource@ are
-    -- 'Vulkan.Core10.SharedTypes.ImageSubresourceLayers' structures specifying
-    -- the image subresources of the images used for the source and destination
-    -- image data, respectively. Resolve of depth\/stencil images is not
-    -- supported.
+  { -- | @srcSubresource@ and @dstSubresource@ are 'ImageSubresourceLayers'
+    -- structures specifying the image subresources of the images used for the
+    -- source and destination image data, respectively. Resolve of
+    -- depth\/stencil images is not supported.
     srcSubresource :: ImageSubresourceLayers
   , -- | @srcOffset@ and @dstOffset@ select the initial @x@, @y@, and @z@ offsets
     -- in texels of the sub-regions of the source and destination image data.
@@ -9280,22 +9190,21 @@
 --     handle
 --
 -- -   If @clearValueCount@ is not @0@, @pClearValues@ /must/ be a valid
---     pointer to an array of @clearValueCount@
---     'Vulkan.Core10.SharedTypes.ClearValue' unions
+--     pointer to an array of @clearValueCount@ 'ClearValue' unions
 --
 -- -   Both of @framebuffer@, and @renderPass@ /must/ have been created,
 --     allocated, or retrieved from the same 'Vulkan.Core10.Handles.Device'
 --
 -- = See Also
 --
--- 'Vulkan.Core10.SharedTypes.ClearValue',
--- 'Vulkan.Core10.Handles.Framebuffer', 'Rect2D',
+-- 'ClearValue', 'Vulkan.Core10.Handles.Framebuffer',
+-- 'Vulkan.Core10.FundamentalTypes.Rect2D',
 -- 'Vulkan.Core10.Handles.RenderPass',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'cmdBeginRenderPass',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.cmdBeginRenderPass2',
 -- 'Vulkan.Extensions.VK_KHR_create_renderpass2.cmdBeginRenderPass2KHR'
 data RenderPassBeginInfo (es :: [Type]) = RenderPassBeginInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @renderPass@ is the render pass to begin an instance of.
     renderPass :: RenderPass
@@ -9306,8 +9215,8 @@
     -- instance, and is described in more detail below.
     renderArea :: Rect2D
   , -- | @pClearValues@ is a pointer to an array of @clearValueCount@
-    -- 'Vulkan.Core10.SharedTypes.ClearValue' structures that contains clear
-    -- values for each attachment, if the attachment uses a @loadOp@ value of
+    -- 'ClearValue' structures that contains clear values for each attachment,
+    -- if the attachment uses a @loadOp@ value of
     -- 'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR' or if
     -- the attachment has a depth\/stencil format and uses a @stencilLoadOp@
     -- value of
@@ -9372,6 +9281,66 @@
            mempty
 
 
+-- | VkClearDepthStencilValue - Structure specifying a clear depth stencil
+-- value
+--
+-- == Valid Usage
+--
+-- -   Unless the @VK_EXT_depth_range_unrestricted@ extension is enabled
+--     @depth@ /must/ be between @0.0@ and @1.0@, inclusive
+--
+-- = See Also
+--
+-- 'ClearValue', 'cmdClearDepthStencilImage'
+data ClearDepthStencilValue = ClearDepthStencilValue
+  { -- | @depth@ is the clear value for the depth aspect of the depth\/stencil
+    -- attachment. It is a floating-point value which is automatically
+    -- converted to the attachment’s format.
+    depth :: Float
+  , -- | @stencil@ is the clear value for the stencil aspect of the
+    -- depth\/stencil attachment. It is a 32-bit integer value which is
+    -- converted to the attachment’s format by taking the appropriate number of
+    -- LSBs.
+    stencil :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ClearDepthStencilValue)
+#endif
+deriving instance Show ClearDepthStencilValue
+
+instance ToCStruct ClearDepthStencilValue where
+  withCStruct x f = allocaBytesAligned 8 4 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ClearDepthStencilValue{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (depth))
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (stencil)
+    f
+  cStructSize = 8
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (zero))
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct ClearDepthStencilValue where
+  peekCStruct p = do
+    depth <- peek @CFloat ((p `plusPtr` 0 :: Ptr CFloat))
+    stencil <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    pure $ ClearDepthStencilValue
+             ((\(CFloat a) -> a) depth) stencil
+
+instance Storable ClearDepthStencilValue where
+  sizeOf ~_ = 8
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ClearDepthStencilValue where
+  zero = ClearDepthStencilValue
+           zero
+           zero
+
+
 -- | VkClearAttachment - Structure specifying a clear attachment
 --
 -- = Description
@@ -9403,8 +9372,7 @@
 -- -   @aspectMask@ /must/ not include
 --     @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@ for any index @i@
 --
--- -   @clearValue@ /must/ be a valid
---     'Vulkan.Core10.SharedTypes.ClearValue' union
+-- -   @clearValue@ /must/ be a valid 'ClearValue' union
 --
 -- == Valid Usage (Implicit)
 --
@@ -9415,7 +9383,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.SharedTypes.ClearValue',
+-- 'ClearValue',
 -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags',
 -- 'cmdClearAttachments'
 data ClearAttachment = ClearAttachment
@@ -9460,4 +9428,67 @@
            zero
            zero
            zero
+
+
+data ClearColorValue
+  = Float32 ((Float, Float, Float, Float))
+  | Int32 ((Int32, Int32, Int32, Int32))
+  | Uint32 ((Word32, Word32, Word32, Word32))
+  deriving (Show)
+
+instance ToCStruct ClearColorValue where
+  withCStruct x f = allocaBytesAligned 16 4 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct :: Ptr ClearColorValue -> ClearColorValue -> IO a -> IO a
+  pokeCStruct p = (. const) . runContT .  \case
+    Float32 v -> lift $ do
+      let pFloat32 = lowerArrayPtr (castPtr @_ @(FixedArray 4 CFloat) p)
+      case (v) of
+        (e0, e1, e2, e3) -> do
+          poke (pFloat32 :: Ptr CFloat) (CFloat (e0))
+          poke (pFloat32 `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))
+          poke (pFloat32 `plusPtr` 8 :: Ptr CFloat) (CFloat (e2))
+          poke (pFloat32 `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))
+    Int32 v -> lift $ do
+      let pInt32 = lowerArrayPtr (castPtr @_ @(FixedArray 4 Int32) p)
+      case (v) of
+        (e0, e1, e2, e3) -> do
+          poke (pInt32 :: Ptr Int32) (e0)
+          poke (pInt32 `plusPtr` 4 :: Ptr Int32) (e1)
+          poke (pInt32 `plusPtr` 8 :: Ptr Int32) (e2)
+          poke (pInt32 `plusPtr` 12 :: Ptr Int32) (e3)
+    Uint32 v -> lift $ do
+      let pUint32 = lowerArrayPtr (castPtr @_ @(FixedArray 4 Word32) p)
+      case (v) of
+        (e0, e1, e2, e3) -> do
+          poke (pUint32 :: Ptr Word32) (e0)
+          poke (pUint32 `plusPtr` 4 :: Ptr Word32) (e1)
+          poke (pUint32 `plusPtr` 8 :: Ptr Word32) (e2)
+          poke (pUint32 `plusPtr` 12 :: Ptr Word32) (e3)
+  pokeZeroCStruct :: Ptr ClearColorValue -> IO b -> IO b
+  pokeZeroCStruct _ f = f
+  cStructSize = 16
+  cStructAlignment = 4
+
+instance Zero ClearColorValue where
+  zero = Float32 (zero, zero, zero, zero)
+
+
+data ClearValue
+  = Color ClearColorValue
+  | DepthStencil ClearDepthStencilValue
+  deriving (Show)
+
+instance ToCStruct ClearValue where
+  withCStruct x f = allocaBytesAligned 16 4 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct :: Ptr ClearValue -> ClearValue -> IO a -> IO a
+  pokeCStruct p = (. const) . runContT .  \case
+    Color v -> ContT $ pokeCStruct (castPtr @_ @ClearColorValue p) (v) . ($ ())
+    DepthStencil v -> ContT $ pokeCStruct (castPtr @_ @ClearDepthStencilValue p) (v) . ($ ())
+  pokeZeroCStruct :: Ptr ClearValue -> IO b -> IO b
+  pokeZeroCStruct _ f = f
+  cStructSize = 16
+  cStructAlignment = 4
+
+instance Zero ClearValue where
+  zero = Color zero
 
diff --git a/src/Vulkan/Core10/CommandBufferBuilding.hs-boot b/src/Vulkan/Core10/CommandBufferBuilding.hs-boot
--- a/src/Vulkan/Core10/CommandBufferBuilding.hs-boot
+++ b/src/Vulkan/Core10/CommandBufferBuilding.hs-boot
@@ -2,13 +2,14 @@
 module Vulkan.Core10.CommandBufferBuilding  ( BufferCopy
                                             , BufferImageCopy
                                             , ClearAttachment
+                                            , ClearDepthStencilValue
                                             , ClearRect
                                             , ImageBlit
                                             , ImageCopy
                                             , ImageResolve
-                                            , Rect2D
+                                            , ImageSubresourceLayers
                                             , RenderPassBeginInfo
-                                            , Viewport
+                                            , ClearColorValue
                                             ) where
 
 import Data.Kind (Type)
@@ -39,6 +40,14 @@
 instance Show ClearAttachment
 
 
+data ClearDepthStencilValue
+
+instance ToCStruct ClearDepthStencilValue
+instance Show ClearDepthStencilValue
+
+instance FromCStruct ClearDepthStencilValue
+
+
 data ClearRect
 
 instance ToCStruct ClearRect
@@ -71,12 +80,12 @@
 instance FromCStruct ImageResolve
 
 
-data Rect2D
+data ImageSubresourceLayers
 
-instance ToCStruct Rect2D
-instance Show Rect2D
+instance ToCStruct ImageSubresourceLayers
+instance Show ImageSubresourceLayers
 
-instance FromCStruct Rect2D
+instance FromCStruct ImageSubresourceLayers
 
 
 type role RenderPassBeginInfo nominal
@@ -86,10 +95,5 @@
 instance Show (Chain es) => Show (RenderPassBeginInfo es)
 
 
-data Viewport
-
-instance ToCStruct Viewport
-instance Show Viewport
-
-instance FromCStruct Viewport
+data ClearColorValue
 
diff --git a/src/Vulkan/Core10/CommandPool.hs b/src/Vulkan/Core10/CommandPool.hs
--- a/src/Vulkan/Core10/CommandPool.hs
+++ b/src/Vulkan/Core10/CommandPool.hs
@@ -4,6 +4,11 @@
                                   , destroyCommandPool
                                   , resetCommandPool
                                   , CommandPoolCreateInfo(..)
+                                  , CommandPool(..)
+                                  , CommandPoolCreateFlagBits(..)
+                                  , CommandPoolCreateFlags
+                                  , CommandPoolResetFlagBits(..)
+                                  , CommandPoolResetFlags
                                   ) where
 
 import Control.Exception.Base (bracket)
@@ -57,6 +62,11 @@
 import Vulkan.Zero (Zero(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.Handles (CommandPool(..))
+import Vulkan.Core10.Enums.CommandPoolCreateFlagBits (CommandPoolCreateFlagBits(..))
+import Vulkan.Core10.Enums.CommandPoolCreateFlagBits (CommandPoolCreateFlags)
+import Vulkan.Core10.Enums.CommandPoolResetFlagBits (CommandPoolResetFlagBits(..))
+import Vulkan.Core10.Enums.CommandPoolResetFlagBits (CommandPoolResetFlags)
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
diff --git a/src/Vulkan/Core10/DescriptorSet.hs b/src/Vulkan/Core10/DescriptorSet.hs
--- a/src/Vulkan/Core10/DescriptorSet.hs
+++ b/src/Vulkan/Core10/DescriptorSet.hs
@@ -19,6 +19,15 @@
                                     , DescriptorPoolSize(..)
                                     , DescriptorPoolCreateInfo(..)
                                     , DescriptorSetAllocateInfo(..)
+                                    , DescriptorSet(..)
+                                    , DescriptorSetLayout(..)
+                                    , DescriptorPool(..)
+                                    , DescriptorPoolResetFlags(..)
+                                    , DescriptorType(..)
+                                    , DescriptorPoolCreateFlagBits(..)
+                                    , DescriptorPoolCreateFlags
+                                    , DescriptorSetLayoutCreateFlagBits(..)
+                                    , DescriptorSetLayoutCreateFlags
                                     ) where
 
 import Control.Exception.Base (bracket)
@@ -88,7 +97,7 @@
 import Vulkan.Dynamic (DeviceCmds(pVkFreeDescriptorSets))
 import Vulkan.Dynamic (DeviceCmds(pVkResetDescriptorPool))
 import Vulkan.Dynamic (DeviceCmds(pVkUpdateDescriptorSets))
-import Vulkan.Core10.BaseType (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
 import Vulkan.Core10.Handles (Device_T)
 import Vulkan.CStruct.Extends (Extends)
 import Vulkan.CStruct.Extends (Extendss)
@@ -119,6 +128,15 @@
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.Handles (DescriptorPool(..))
+import Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits (DescriptorPoolCreateFlagBits(..))
+import Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits (DescriptorPoolCreateFlags)
+import Vulkan.Core10.Enums.DescriptorPoolResetFlags (DescriptorPoolResetFlags(..))
+import Vulkan.Core10.Handles (DescriptorSet(..))
+import Vulkan.Core10.Handles (DescriptorSetLayout(..))
+import Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits (DescriptorSetLayoutCreateFlagBits(..))
+import Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits (DescriptorSetLayoutCreateFlags)
+import Vulkan.Core10.Enums.DescriptorType (DescriptorType(..))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -873,8 +891,8 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.BaseType.DeviceSize',
--- 'WriteDescriptorSet'
+-- 'Vulkan.Core10.Handles.Buffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize', 'WriteDescriptorSet'
 data DescriptorBufferInfo = DescriptorBufferInfo
   { -- | @buffer@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or the buffer
     -- resource.
@@ -1404,7 +1422,7 @@
 -- 'Vulkan.Extensions.VK_KHR_push_descriptor.cmdPushDescriptorSetKHR',
 -- 'updateDescriptorSets'
 data WriteDescriptorSet (es :: [Type]) = WriteDescriptorSet
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @dstSet@ is the destination descriptor set to update.
     dstSet :: DescriptorSet
@@ -1996,7 +2014,7 @@
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.getDescriptorSetLayoutSupport',
 -- 'Vulkan.Extensions.VK_KHR_maintenance3.getDescriptorSetLayoutSupportKHR'
 data DescriptorSetLayoutCreateInfo (es :: [Type]) = DescriptorSetLayoutCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is a bitmask of
     -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DescriptorSetLayoutCreateFlagBits'
@@ -2210,7 +2228,7 @@
 -- 'DescriptorPoolSize', 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'createDescriptorPool'
 data DescriptorPoolCreateInfo (es :: [Type]) = DescriptorPoolCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is a bitmask of
     -- 'Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DescriptorPoolCreateFlagBits'
@@ -2330,7 +2348,7 @@
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'allocateDescriptorSets'
 data DescriptorSetAllocateInfo (es :: [Type]) = DescriptorSetAllocateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @descriptorPool@ is the pool which the sets will be allocated from.
     descriptorPool :: DescriptorPool
diff --git a/src/Vulkan/Core10/Device.hs b/src/Vulkan/Core10/Device.hs
--- a/src/Vulkan/Core10/Device.hs
+++ b/src/Vulkan/Core10/Device.hs
@@ -4,6 +4,10 @@
                              , destroyDevice
                              , DeviceQueueCreateInfo(..)
                              , DeviceCreateInfo(..)
+                             , Device(..)
+                             , DeviceCreateFlags(..)
+                             , DeviceQueueCreateFlagBits(..)
+                             , DeviceQueueCreateFlags
                              ) where
 
 import Control.Exception.Base (bracket)
@@ -61,6 +65,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_diagnostics_config (DeviceDiagnosticsConfigCreateInfoNV)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation (DeviceGroupDeviceCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_memory_overallocation_behavior (DeviceMemoryOverallocationCreateInfoAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_private_data (DevicePrivateDataCreateInfoEXT)
 import Vulkan.Core10.Enums.DeviceQueueCreateFlagBits (DeviceQueueCreateFlags)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_global_priority (DeviceQueueGlobalPriorityCreateInfoEXT)
 import Vulkan.Core10.Handles (Device_T)
@@ -152,6 +157,10 @@
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_CREATE_INFO))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Core10.Enums.DeviceCreateFlags (DeviceCreateFlags(..))
+import Vulkan.Core10.Enums.DeviceQueueCreateFlagBits (DeviceQueueCreateFlagBits(..))
+import Vulkan.Core10.Enums.DeviceQueueCreateFlagBits (DeviceQueueCreateFlags)
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -412,7 +421,7 @@
 -- 'Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DeviceQueueCreateFlags',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data DeviceQueueCreateInfo (es :: [Type]) = DeviceQueueCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is a bitmask indicating behavior of the queue.
     flags :: DeviceQueueCreateFlags
@@ -546,26 +555,26 @@
 --     and the @pNext@ chain includes a
 --     'Vulkan.Core12.PhysicalDeviceVulkan12Features' structure, then
 --     'Vulkan.Core12.PhysicalDeviceVulkan12Features'::@drawIndirectCount@
---     /must/ be 'Vulkan.Core10.BaseType.TRUE'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
 --
 -- -   If @ppEnabledExtensions@ contains
 --     @\"VK_KHR_sampler_mirror_clamp_to_edge\"@ and the @pNext@ chain
 --     includes a 'Vulkan.Core12.PhysicalDeviceVulkan12Features' structure,
 --     then
 --     'Vulkan.Core12.PhysicalDeviceVulkan12Features'::@samplerMirrorClampToEdge@
---     /must/ be 'Vulkan.Core10.BaseType.TRUE'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
 --
 -- -   If @ppEnabledExtensions@ contains @\"VK_EXT_descriptor_indexing\"@
 --     and the @pNext@ chain includes a
 --     'Vulkan.Core12.PhysicalDeviceVulkan12Features' structure, then
 --     'Vulkan.Core12.PhysicalDeviceVulkan12Features'::@descriptorIndexing@
---     /must/ be 'Vulkan.Core10.BaseType.TRUE'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
 --
 -- -   If @ppEnabledExtensions@ contains @\"VK_EXT_sampler_filter_minmax\"@
 --     and the @pNext@ chain includes a
 --     'Vulkan.Core12.PhysicalDeviceVulkan12Features' structure, then
 --     'Vulkan.Core12.PhysicalDeviceVulkan12Features'::@samplerFilterMinmax@
---     /must/ be 'Vulkan.Core10.BaseType.TRUE'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
 --
 -- -   If @ppEnabledExtensions@ contains
 --     @\"VK_EXT_shader_viewport_index_layer\"@ and the @pNext@ chain
@@ -574,7 +583,7 @@
 --     'Vulkan.Core12.PhysicalDeviceVulkan12Features'::@shaderOutputViewportIndex@
 --     and
 --     'Vulkan.Core12.PhysicalDeviceVulkan12Features'::@shaderOutputLayer@
---     /must/ both be 'Vulkan.Core10.BaseType.TRUE'
+--     /must/ both be 'Vulkan.Core10.FundamentalTypes.TRUE'
 --
 -- == Valid Usage (Implicit)
 --
@@ -587,6 +596,7 @@
 --     'Vulkan.Extensions.VK_NV_device_diagnostics_config.DeviceDiagnosticsConfigCreateInfoNV',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.DeviceGroupDeviceCreateInfo',
 --     'Vulkan.Extensions.VK_AMD_memory_overallocation_behavior.DeviceMemoryOverallocationCreateInfoAMD',
+--     'Vulkan.Extensions.VK_EXT_private_data.DevicePrivateDataCreateInfoEXT',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage.PhysicalDevice16BitStorageFeatures',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage.PhysicalDevice8BitStorageFeatures',
 --     'Vulkan.Extensions.VK_EXT_astc_decode_mode.PhysicalDeviceASTCDecodeFeaturesEXT',
@@ -653,7 +663,8 @@
 --     'Vulkan.Extensions.VK_EXT_ycbcr_image_arrays.PhysicalDeviceYcbcrImageArraysFeaturesEXT'
 --
 -- -   The @sType@ value of each struct in the @pNext@ chain /must/ be
---     unique
+--     unique, with the exception of structures of type
+--     'Vulkan.Extensions.VK_EXT_private_data.DevicePrivateDataCreateInfoEXT'
 --
 -- -   @flags@ /must/ be @0@
 --
@@ -682,7 +693,7 @@
 -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceFeatures',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'createDevice'
 data DeviceCreateInfo (es :: [Type]) = DeviceCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is reserved for future use.
     flags :: DeviceCreateFlags
@@ -786,6 +797,7 @@
     | Just Refl <- eqT @e @PhysicalDeviceMultiviewFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceVariablePointersFeatures = Just f
     | Just Refl <- eqT @e @(PhysicalDeviceFeatures2 '[]) = Just f
+    | Just Refl <- eqT @e @DevicePrivateDataCreateInfoEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDeviceGeneratedCommandsFeaturesNV = Just f
     | otherwise = Nothing
 
diff --git a/src/Vulkan/Core10/DeviceInitialization.hs b/src/Vulkan/Core10/DeviceInitialization.hs
--- a/src/Vulkan/Core10/DeviceInitialization.hs
+++ b/src/Vulkan/Core10/DeviceInitialization.hs
@@ -23,6 +23,43 @@
                                            , PhysicalDeviceFeatures(..)
                                            , PhysicalDeviceSparseProperties(..)
                                            , PhysicalDeviceLimits(..)
+                                           , Instance(..)
+                                           , PhysicalDevice(..)
+                                           , AllocationCallbacks(..)
+                                           , InstanceCreateFlags(..)
+                                           , ImageType(..)
+                                           , ImageTiling(..)
+                                           , InternalAllocationType(..)
+                                           , SystemAllocationScope(..)
+                                           , PhysicalDeviceType(..)
+                                           , Format(..)
+                                           , StructureType(..)
+                                           , QueueFlagBits(..)
+                                           , QueueFlags
+                                           , MemoryPropertyFlagBits(..)
+                                           , MemoryPropertyFlags
+                                           , MemoryHeapFlagBits(..)
+                                           , MemoryHeapFlags
+                                           , ImageUsageFlagBits(..)
+                                           , ImageUsageFlags
+                                           , ImageCreateFlagBits(..)
+                                           , ImageCreateFlags
+                                           , FormatFeatureFlagBits(..)
+                                           , FormatFeatureFlags
+                                           , SampleCountFlagBits(..)
+                                           , SampleCountFlags
+                                           , FN_vkInternalAllocationNotification
+                                           , PFN_vkInternalAllocationNotification
+                                           , FN_vkInternalFreeNotification
+                                           , PFN_vkInternalFreeNotification
+                                           , FN_vkReallocationFunction
+                                           , PFN_vkReallocationFunction
+                                           , FN_vkAllocationFunction
+                                           , PFN_vkAllocationFunction
+                                           , FN_vkFreeFunction
+                                           , PFN_vkFreeFunction
+                                           , FN_vkVoidFunction
+                                           , PFN_vkVoidFunction
                                            ) where
 
 import Vulkan.CStruct.Utils (FixedArray)
@@ -76,8 +113,8 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
 import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.CStruct.Extends (forgetExtensions)
 import Vulkan.Dynamic (getInstanceProcAddr')
 import Vulkan.Dynamic (initInstanceCmds)
@@ -87,19 +124,19 @@
 import Vulkan.CStruct.Utils (pokeFixedLengthNullTerminatedByteString)
 import Vulkan.NamedType ((:::))
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct.Extends (Chain)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_report (DebugReportCallbackCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsMessengerCreateInfoEXT)
 import Vulkan.Core10.Handles (Device)
 import Vulkan.Core10.Handles (Device(..))
 import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceProcAddr))
-import Vulkan.Core10.BaseType (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
 import Vulkan.Core10.Handles (Device_T)
 import Vulkan.CStruct.Extends (Extends)
 import Vulkan.CStruct.Extends (Extendss)
 import Vulkan.CStruct.Extends (Extensible(..))
-import Vulkan.Core10.SharedTypes (Extent3D)
+import Vulkan.Core10.FundamentalTypes (Extent3D)
 import Vulkan.Core10.Enums.Format (Format)
 import Vulkan.Core10.Enums.Format (Format(..))
 import Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlags)
@@ -160,6 +197,43 @@
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_APPLICATION_INFO))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INSTANCE_CREATE_INFO))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks(..))
+import Vulkan.Core10.FuncPointers (FN_vkAllocationFunction)
+import Vulkan.Core10.FuncPointers (FN_vkFreeFunction)
+import Vulkan.Core10.FuncPointers (FN_vkInternalAllocationNotification)
+import Vulkan.Core10.FuncPointers (FN_vkInternalFreeNotification)
+import Vulkan.Core10.FuncPointers (FN_vkReallocationFunction)
+import Vulkan.Core10.FuncPointers (FN_vkVoidFunction)
+import Vulkan.Core10.Enums.Format (Format(..))
+import Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlagBits(..))
+import Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlags)
+import Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlagBits(..))
+import Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)
+import Vulkan.Core10.Enums.ImageTiling (ImageTiling(..))
+import Vulkan.Core10.Enums.ImageType (ImageType(..))
+import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlagBits(..))
+import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)
+import Vulkan.Core10.Handles (Instance(..))
+import Vulkan.Core10.Enums.InstanceCreateFlags (InstanceCreateFlags(..))
+import Vulkan.Core10.Enums.InternalAllocationType (InternalAllocationType(..))
+import Vulkan.Core10.Enums.MemoryHeapFlagBits (MemoryHeapFlagBits(..))
+import Vulkan.Core10.Enums.MemoryHeapFlagBits (MemoryHeapFlags)
+import Vulkan.Core10.Enums.MemoryPropertyFlagBits (MemoryPropertyFlagBits(..))
+import Vulkan.Core10.Enums.MemoryPropertyFlagBits (MemoryPropertyFlags)
+import Vulkan.Core10.FuncPointers (PFN_vkAllocationFunction)
+import Vulkan.Core10.FuncPointers (PFN_vkFreeFunction)
+import Vulkan.Core10.FuncPointers (PFN_vkInternalAllocationNotification)
+import Vulkan.Core10.FuncPointers (PFN_vkInternalFreeNotification)
+import Vulkan.Core10.FuncPointers (PFN_vkReallocationFunction)
+import Vulkan.Core10.FuncPointers (PFN_vkVoidFunction)
+import Vulkan.Core10.Handles (PhysicalDevice(..))
+import Vulkan.Core10.Enums.PhysicalDeviceType (PhysicalDeviceType(..))
+import Vulkan.Core10.Enums.QueueFlagBits (QueueFlagBits(..))
+import Vulkan.Core10.Enums.QueueFlagBits (QueueFlags)
+import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits(..))
+import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlags)
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+import Vulkan.Core10.Enums.SystemAllocationScope (SystemAllocationScope(..))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -522,6 +596,8 @@
 -- | invalid non-@NULL@   | *1                                                                      | undefined             |
 -- | instance             |                                                                         |                       |
 -- +----------------------+-------------------------------------------------------------------------+-----------------------+
+-- | @NULL@               | 'getInstanceProcAddr'                                                   | fp4                   |
+-- +----------------------+-------------------------------------------------------------------------+-----------------------+
 -- | @NULL@               | 'Vulkan.Core11.DeviceInitialization.enumerateInstanceVersion'           | fp                    |
 -- +----------------------+-------------------------------------------------------------------------+-----------------------+
 -- | @NULL@               | 'Vulkan.Core10.ExtensionDiscovery.enumerateInstanceExtensionProperties' | fp                    |
@@ -558,6 +634,10 @@
 --     An “available device extension” is a device extension supported by
 --     any physical device enumerated by @instance@.
 --
+-- [4]
+--     Starting with Vulkan 1.2, 'getInstanceProcAddr' can resolve itself
+--     with a @NULL@ instance pointer.
+--
 -- == Valid Usage (Implicit)
 --
 -- -   If @instance@ is not @NULL@, @instance@ /must/ be a valid
@@ -1281,7 +1361,7 @@
 -- 'Vulkan.Core10.Enums.InstanceCreateFlags.InstanceCreateFlags',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'createInstance'
 data InstanceCreateInfo (es :: [Type]) = InstanceCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is reserved for future use.
     flags :: InstanceCreateFlags
@@ -1406,33 +1486,33 @@
 --     and extent parameters of image transfer operations:
 --
 --     -   The @x@, @y@, and @z@ members of a
---         'Vulkan.Core10.SharedTypes.Offset3D' parameter /must/ always be
---         zero.
+--         'Vulkan.Core10.FundamentalTypes.Offset3D' parameter /must/
+--         always be zero.
 --
 --     -   The @width@, @height@, and @depth@ members of a
---         'Vulkan.Core10.SharedTypes.Extent3D' parameter /must/ always
---         match the width, height, and depth of the image subresource
---         corresponding to the parameter, respectively.
+--         'Vulkan.Core10.FundamentalTypes.Extent3D' parameter /must/
+--         always match the width, height, and depth of the image
+--         subresource corresponding to the parameter, respectively.
 --
 -- -   (Ax, Ay, Az) where Ax, Ay, and Az are all integer powers of two. In
 --     this case the following restrictions apply to all image transfer
 --     operations:
 --
---     -   @x@, @y@, and @z@ of a 'Vulkan.Core10.SharedTypes.Offset3D'
+--     -   @x@, @y@, and @z@ of a 'Vulkan.Core10.FundamentalTypes.Offset3D'
 --         parameter /must/ be integer multiples of Ax, Ay, and Az,
 --         respectively.
 --
---     -   @width@ of a 'Vulkan.Core10.SharedTypes.Extent3D' parameter
+--     -   @width@ of a 'Vulkan.Core10.FundamentalTypes.Extent3D' parameter
 --         /must/ be an integer multiple of Ax, or else @x@ + @width@
 --         /must/ equal the width of the image subresource corresponding to
 --         the parameter.
 --
---     -   @height@ of a 'Vulkan.Core10.SharedTypes.Extent3D' parameter
---         /must/ be an integer multiple of Ay, or else @y@ + @height@
---         /must/ equal the height of the image subresource corresponding
---         to the parameter.
+--     -   @height@ of a 'Vulkan.Core10.FundamentalTypes.Extent3D'
+--         parameter /must/ be an integer multiple of Ay, or else @y@ +
+--         @height@ /must/ equal the height of the image subresource
+--         corresponding to the parameter.
 --
---     -   @depth@ of a 'Vulkan.Core10.SharedTypes.Extent3D' parameter
+--     -   @depth@ of a 'Vulkan.Core10.FundamentalTypes.Extent3D' parameter
 --         /must/ be an integer multiple of Az, or else @z@ + @depth@
 --         /must/ equal the depth of the image subresource corresponding to
 --         the parameter.
@@ -1460,7 +1540,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.SharedTypes.Extent3D',
+-- 'Vulkan.Core10.FundamentalTypes.Extent3D',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2',
 -- 'Vulkan.Core10.Enums.QueueFlagBits.QueueFlags',
 -- 'getPhysicalDeviceQueueFamilyProperties'
@@ -1906,7 +1986,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.DeviceSize',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Enums.MemoryHeapFlagBits.MemoryHeapFlags',
 -- 'PhysicalDeviceMemoryProperties'
 data MemoryHeap = MemoryHeap
@@ -2123,8 +2203,8 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.DeviceSize',
--- 'Vulkan.Core10.SharedTypes.Extent3D',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.FundamentalTypes.Extent3D',
 -- 'Vulkan.Extensions.VK_NV_external_memory_capabilities.ExternalImageFormatPropertiesNV',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2',
 -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlags',
@@ -2194,7 +2274,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Device.DeviceCreateInfo',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
 -- 'getPhysicalDeviceFeatures'
@@ -2425,7 +2505,7 @@
     -- and multisample interpolation are supported. If this feature is not
     -- enabled, the @sampleShadingEnable@ member of the
     -- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo' structure
-    -- /must/ be set to 'Vulkan.Core10.BaseType.FALSE' and the
+    -- /must/ be set to 'Vulkan.Core10.FundamentalTypes.FALSE' and the
     -- @minSampleShading@ member is ignored. This also specifies whether shader
     -- modules /can/ declare the @SampleRateShading@ capability.
     sampleRateShading :: Bool
@@ -2441,8 +2521,8 @@
   , -- | @logicOp@ specifies whether logic operations are supported. If this
     -- feature is not enabled, the @logicOpEnable@ member of the
     -- 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo' structure
-    -- /must/ be set to 'Vulkan.Core10.BaseType.FALSE', and the @logicOp@
-    -- member is ignored.
+    -- /must/ be set to 'Vulkan.Core10.FundamentalTypes.FALSE', and the
+    -- @logicOp@ member is ignored.
     logicOp :: Bool
   , -- | @multiDrawIndirect@ specifies whether multiple draw indirect is
     -- supported. If this feature is not enabled, the @drawCount@ parameter to
@@ -2466,9 +2546,9 @@
   , -- | @depthClamp@ specifies whether depth clamping is supported. If this
     -- feature is not enabled, the @depthClampEnable@ member of the
     -- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo' structure
-    -- /must/ be set to 'Vulkan.Core10.BaseType.FALSE'. Otherwise, setting
-    -- @depthClampEnable@ to 'Vulkan.Core10.BaseType.TRUE' will enable depth
-    -- clamping.
+    -- /must/ be set to 'Vulkan.Core10.FundamentalTypes.FALSE'. Otherwise,
+    -- setting @depthClampEnable@ to 'Vulkan.Core10.FundamentalTypes.TRUE' will
+    -- enable depth clamping.
     depthClamp :: Bool
   , -- | @depthBiasClamp@ specifies whether depth bias clamping is supported. If
     -- this feature is not enabled, the @depthBiasClamp@ member of the
@@ -2488,9 +2568,10 @@
   , -- | @depthBounds@ specifies whether depth bounds tests are supported. If
     -- this feature is not enabled, the @depthBoundsTestEnable@ member of the
     -- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' structure
-    -- /must/ be set to 'Vulkan.Core10.BaseType.FALSE'. When
-    -- @depthBoundsTestEnable@ is set to 'Vulkan.Core10.BaseType.FALSE', the
-    -- @minDepthBounds@ and @maxDepthBounds@ members of the
+    -- /must/ be set to 'Vulkan.Core10.FundamentalTypes.FALSE'. When
+    -- @depthBoundsTestEnable@ is set to
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE', the @minDepthBounds@ and
+    -- @maxDepthBounds@ members of the
     -- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' structure
     -- are ignored.
     depthBounds :: Bool
@@ -2519,9 +2600,9 @@
     -- floating-point colors. If this feature is not enabled, then the
     -- @alphaToOneEnable@ member of the
     -- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo' structure
-    -- /must/ be set to 'Vulkan.Core10.BaseType.FALSE'. Otherwise setting
-    -- @alphaToOneEnable@ to 'Vulkan.Core10.BaseType.TRUE' will enable
-    -- alpha-to-one behavior.
+    -- /must/ be set to 'Vulkan.Core10.FundamentalTypes.FALSE'. Otherwise
+    -- setting @alphaToOneEnable@ to 'Vulkan.Core10.FundamentalTypes.TRUE' will
+    -- enable alpha-to-one behavior.
     alphaToOne :: Bool
   , -- | @multiViewport@ specifies whether more than one viewport is supported.
     -- If this feature is not enabled:
@@ -2550,7 +2631,7 @@
   , -- | @samplerAnisotropy@ specifies whether anisotropic filtering is
     -- supported. If this feature is not enabled, the @anisotropyEnable@ member
     -- of the 'Vulkan.Core10.Sampler.SamplerCreateInfo' structure /must/ be
-    -- 'Vulkan.Core10.BaseType.FALSE'.
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE'.
     samplerAnisotropy :: Bool
   , -- | @textureCompressionETC2@ specifies whether all of the ETC2 and EAC
     -- compressed texture formats are supported. If this feature is enabled,
@@ -3045,11 +3126,11 @@
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments subpass which uses no attachments>
     -- /must/ have the same value for
     -- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@.
-    -- If set to 'Vulkan.Core10.BaseType.TRUE', the implementation supports
-    -- variable multisample rates in a subpass which uses no attachments. If
-    -- set to 'Vulkan.Core10.BaseType.FALSE', then all pipelines bound in such
-    -- a subpass /must/ have the same multisample rate. This has no effect in
-    -- situations where a subpass uses any attachments.
+    -- If set to 'Vulkan.Core10.FundamentalTypes.TRUE', the implementation
+    -- supports variable multisample rates in a subpass which uses no
+    -- attachments. If set to 'Vulkan.Core10.FundamentalTypes.FALSE', then all
+    -- pipelines bound in such a subpass /must/ have the same multisample rate.
+    -- This has no effect in situations where a subpass uses any attachments.
     variableMultisampleRate :: Bool
   , -- | @inheritedQueries@ specifies whether a secondary command buffer /may/ be
     -- executed while a query is active.
@@ -3310,11 +3391,11 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32', 'PhysicalDeviceProperties'
+-- 'Vulkan.Core10.FundamentalTypes.Bool32', 'PhysicalDeviceProperties'
 data PhysicalDeviceSparseProperties = PhysicalDeviceSparseProperties
-  { -- | @residencyStandard2DBlockShape@ is 'Vulkan.Core10.BaseType.TRUE' if the
-    -- physical device will access all single-sample 2D sparse resources using
-    -- the standard sparse image block shapes (based on image format), as
+  { -- | @residencyStandard2DBlockShape@ is 'Vulkan.Core10.FundamentalTypes.TRUE'
+    -- if the physical device will access all single-sample 2D sparse resources
+    -- using the standard sparse image block shapes (based on image format), as
     -- described in the
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-sparseblockshapessingle Standard Sparse Image Block Shapes (Single Sample)>
     -- table. If this property is not supported the value returned in the
@@ -3324,9 +3405,9 @@
     -- standard sparse image block dimensions listed in the table.
     residencyStandard2DBlockShape :: Bool
   , -- | @residencyStandard2DMultisampleBlockShape@ is
-    -- 'Vulkan.Core10.BaseType.TRUE' if the physical device will access all
-    -- multisample 2D sparse resources using the standard sparse image block
-    -- shapes (based on image format), as described in the
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the physical device will access
+    -- all multisample 2D sparse resources using the standard sparse image
+    -- block shapes (based on image format), as described in the
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-sparseblockshapesmsaa Standard Sparse Image Block Shapes (MSAA)>
     -- table. If this property is not supported, the value returned in the
     -- @imageGranularity@ member of the
@@ -3334,9 +3415,10 @@
     -- structure for multisample 2D images is not /required/ to match the
     -- standard sparse image block dimensions listed in the table.
     residencyStandard2DMultisampleBlockShape :: Bool
-  , -- | @residencyStandard3DBlockShape@ is 'Vulkan.Core10.BaseType.TRUE' if the
-    -- physical device will access all 3D sparse resources using the standard
-    -- sparse image block shapes (based on image format), as described in the
+  , -- | @residencyStandard3DBlockShape@ is 'Vulkan.Core10.FundamentalTypes.TRUE'
+    -- if the physical device will access all 3D sparse resources using the
+    -- standard sparse image block shapes (based on image format), as described
+    -- in the
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-sparseblockshapessingle Standard Sparse Image Block Shapes (Single Sample)>
     -- table. If this property is not supported, the value returned in the
     -- @imageGranularity@ member of the
@@ -3344,8 +3426,8 @@
     -- structure for 3D images is not /required/ to match the standard sparse
     -- image block dimensions listed in the table.
     residencyStandard3DBlockShape :: Bool
-  , -- | @residencyAlignedMipSize@ is 'Vulkan.Core10.BaseType.TRUE' if images
-    -- with mip level dimensions that are not integer multiples of the
+  , -- | @residencyAlignedMipSize@ is 'Vulkan.Core10.FundamentalTypes.TRUE' if
+    -- images with mip level dimensions that are not integer multiples of the
     -- corresponding dimensions of the sparse image block /may/ be placed in
     -- the mip tail. If this property is not reported, only mip levels with
     -- dimensions smaller than the @imageGranularity@ member of the
@@ -3361,8 +3443,8 @@
     residencyAlignedMipSize :: Bool
   , -- | @residencyNonResidentStrict@ specifies whether the physical device /can/
     -- consistently access non-resident regions of a resource. If this property
-    -- is 'Vulkan.Core10.BaseType.TRUE', access to non-resident regions of
-    -- resources will be guaranteed to return values as if the resource were
+    -- is 'Vulkan.Core10.FundamentalTypes.TRUE', access to non-resident regions
+    -- of resources will be guaranteed to return values as if the resource were
     -- populated with 0; writes to non-resident regions will be discarded.
     residencyNonResidentStrict :: Bool
   }
@@ -3438,8 +3520,8 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32', 'Vulkan.Core10.BaseType.DeviceSize',
--- 'PhysicalDeviceProperties',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize', 'PhysicalDeviceProperties',
 -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlags'
 data PhysicalDeviceLimits = PhysicalDeviceLimits
   { -- | @maxImageDimension1D@ is the maximum dimension (@width@) supported for
@@ -4108,12 +4190,12 @@
     -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT'.
     storageImageSampleCounts :: SampleCountFlags
   , -- | @maxSampleMaskWords@ is the maximum number of array elements of a
-    -- variable decorated with the 'Vulkan.Core10.BaseType.SampleMask' built-in
-    -- decoration.
+    -- variable decorated with the 'Vulkan.Core10.FundamentalTypes.SampleMask'
+    -- built-in decoration.
     maxSampleMaskWords :: Word32
   , -- | @timestampComputeAndGraphics@ specifies support for timestamps on all
     -- graphics and compute queues. If this limit is set to
-    -- 'Vulkan.Core10.BaseType.TRUE', all queues that advertise the
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE', all queues that advertise the
     -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or
     -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' in the
     -- 'QueueFamilyProperties'::@queueFlags@ support
@@ -4170,17 +4252,18 @@
     lineWidthGranularity :: Float
   , -- | @strictLines@ specifies whether lines are rasterized according to the
     -- preferred method of rasterization. If set to
-    -- 'Vulkan.Core10.BaseType.FALSE', lines /may/ be rasterized under a
-    -- relaxed set of rules. If set to 'Vulkan.Core10.BaseType.TRUE', lines are
-    -- rasterized as per the strict definition. See
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE', lines /may/ be rasterized under
+    -- a relaxed set of rules. If set to 'Vulkan.Core10.FundamentalTypes.TRUE',
+    -- lines are rasterized as per the strict definition. See
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-basic Basic Line Segment Rasterization>.
     strictLines :: Bool
   , -- | @standardSampleLocations@ specifies whether rasterization uses the
     -- standard sample locations as documented in
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling Multisampling>.
-    -- If set to 'Vulkan.Core10.BaseType.TRUE', the implementation uses the
-    -- documented sample locations. If set to 'Vulkan.Core10.BaseType.FALSE',
-    -- the implementation /may/ use different sample locations.
+    -- If set to 'Vulkan.Core10.FundamentalTypes.TRUE', the implementation uses
+    -- the documented sample locations. If set to
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE', the implementation /may/ use
+    -- different sample locations.
     standardSampleLocations :: Bool
   , -- | @optimalBufferCopyOffsetAlignment@ is the optimal buffer offset
     -- alignment in bytes for
diff --git a/src/Vulkan/Core10/Enums/AccessFlagBits.hs b/src/Vulkan/Core10/Enums/AccessFlagBits.hs
--- a/src/Vulkan/Core10/Enums/AccessFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/AccessFlagBits.hs
@@ -45,7 +45,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkAccessFlagBits - Bitmask specifying memory access types that will
 -- participate in a memory dependency
@@ -151,32 +151,6 @@
 -- +----------------------------------------------------+-------------------------------------------------------------------------------------------------+
 --
 -- Supported access types
---
--- If a memory object does not have the
--- 'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'
--- property, then 'Vulkan.Core10.Memory.flushMappedMemoryRanges' /must/ be
--- called in order to guarantee that writes to the memory object from the
--- host are made available to the host domain, where they /can/ be further
--- made available to the device domain via a domain operation. Similarly,
--- 'Vulkan.Core10.Memory.invalidateMappedMemoryRanges' /must/ be called to
--- guarantee that writes which are available to the host domain are made
--- visible to host operations.
---
--- If the memory object does have the
--- 'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'
--- property flag, writes to the memory object from the host are
--- automatically made available to the host domain. Similarly, writes made
--- available to the host domain are automatically made visible to the host.
---
--- Note
---
--- The 'Vulkan.Core10.Queue.queueSubmit' command
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-host-writes automatically performs a domain operation from host to device>
--- for all writes performed before the command executes, so in most cases
--- an explicit memory barrier is not needed for this case. In the few
--- circumstances where a submit does not occur between the host write and
--- the device read access, writes /can/ be made available by using an
--- explicit memory barrier.
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Core10/Enums/AttachmentDescriptionFlagBits.hs b/src/Vulkan/Core10/Enums/AttachmentDescriptionFlagBits.hs
--- a/src/Vulkan/Core10/Enums/AttachmentDescriptionFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/AttachmentDescriptionFlagBits.hs
@@ -18,7 +18,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkAttachmentDescriptionFlagBits - Bitmask specifying additional
 -- properties of an attachment
diff --git a/src/Vulkan/Core10/Enums/BufferCreateFlagBits.hs b/src/Vulkan/Core10/Enums/BufferCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/BufferCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/BufferCreateFlagBits.hs
@@ -22,7 +22,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkBufferCreateFlagBits - Bitmask specifying additional parameters of a
 -- buffer
diff --git a/src/Vulkan/Core10/Enums/BufferUsageFlagBits.hs b/src/Vulkan/Core10/Enums/BufferUsageFlagBits.hs
--- a/src/Vulkan/Core10/Enums/BufferUsageFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/BufferUsageFlagBits.hs
@@ -31,7 +31,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkBufferUsageFlagBits - Bitmask specifying allowed usage of a buffer
 --
diff --git a/src/Vulkan/Core10/Enums/BufferViewCreateFlags.hs b/src/Vulkan/Core10/Enums/BufferViewCreateFlags.hs
--- a/src/Vulkan/Core10/Enums/BufferViewCreateFlags.hs
+++ b/src/Vulkan/Core10/Enums/BufferViewCreateFlags.hs
@@ -14,7 +14,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkBufferViewCreateFlags - Reserved for future use
 --
diff --git a/src/Vulkan/Core10/Enums/ColorComponentFlagBits.hs b/src/Vulkan/Core10/Enums/ColorComponentFlagBits.hs
--- a/src/Vulkan/Core10/Enums/ColorComponentFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/ColorComponentFlagBits.hs
@@ -21,7 +21,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkColorComponentFlagBits - Bitmask controlling which components are
 -- written to the framebuffer
diff --git a/src/Vulkan/Core10/Enums/CommandBufferResetFlagBits.hs b/src/Vulkan/Core10/Enums/CommandBufferResetFlagBits.hs
--- a/src/Vulkan/Core10/Enums/CommandBufferResetFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/CommandBufferResetFlagBits.hs
@@ -18,7 +18,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkCommandBufferResetFlagBits - Bitmask controlling behavior of a command
 -- buffer reset
diff --git a/src/Vulkan/Core10/Enums/CommandBufferUsageFlagBits.hs b/src/Vulkan/Core10/Enums/CommandBufferUsageFlagBits.hs
--- a/src/Vulkan/Core10/Enums/CommandBufferUsageFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/CommandBufferUsageFlagBits.hs
@@ -20,7 +20,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkCommandBufferUsageFlagBits - Bitmask specifying usage behavior for
 -- command buffer
diff --git a/src/Vulkan/Core10/Enums/CommandPoolCreateFlagBits.hs b/src/Vulkan/Core10/Enums/CommandPoolCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/CommandPoolCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/CommandPoolCreateFlagBits.hs
@@ -20,7 +20,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkCommandPoolCreateFlagBits - Bitmask specifying usage behavior for a
 -- command pool
diff --git a/src/Vulkan/Core10/Enums/CommandPoolResetFlagBits.hs b/src/Vulkan/Core10/Enums/CommandPoolResetFlagBits.hs
--- a/src/Vulkan/Core10/Enums/CommandPoolResetFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/CommandPoolResetFlagBits.hs
@@ -18,7 +18,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkCommandPoolResetFlagBits - Bitmask controlling behavior of a command
 -- pool reset
diff --git a/src/Vulkan/Core10/Enums/CullModeFlagBits.hs b/src/Vulkan/Core10/Enums/CullModeFlagBits.hs
--- a/src/Vulkan/Core10/Enums/CullModeFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/CullModeFlagBits.hs
@@ -21,7 +21,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkCullModeFlagBits - Bitmask controlling triangle culling
 --
diff --git a/src/Vulkan/Core10/Enums/DependencyFlagBits.hs b/src/Vulkan/Core10/Enums/DependencyFlagBits.hs
--- a/src/Vulkan/Core10/Enums/DependencyFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/DependencyFlagBits.hs
@@ -20,7 +20,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkDependencyFlagBits - Bitmask specifying how execution and memory
 -- dependencies are formed
diff --git a/src/Vulkan/Core10/Enums/DescriptorPoolCreateFlagBits.hs b/src/Vulkan/Core10/Enums/DescriptorPoolCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/DescriptorPoolCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/DescriptorPoolCreateFlagBits.hs
@@ -19,7 +19,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkDescriptorPoolCreateFlagBits - Bitmask specifying certain supported
 -- operations on a descriptor pool
diff --git a/src/Vulkan/Core10/Enums/DescriptorPoolResetFlags.hs b/src/Vulkan/Core10/Enums/DescriptorPoolResetFlags.hs
--- a/src/Vulkan/Core10/Enums/DescriptorPoolResetFlags.hs
+++ b/src/Vulkan/Core10/Enums/DescriptorPoolResetFlags.hs
@@ -14,7 +14,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkDescriptorPoolResetFlags - Reserved for future use
 --
diff --git a/src/Vulkan/Core10/Enums/DescriptorSetLayoutCreateFlagBits.hs b/src/Vulkan/Core10/Enums/DescriptorSetLayoutCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/DescriptorSetLayoutCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/DescriptorSetLayoutCreateFlagBits.hs
@@ -19,7 +19,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkDescriptorSetLayoutCreateFlagBits - Bitmask specifying descriptor set
 -- layout properties
diff --git a/src/Vulkan/Core10/Enums/DeviceCreateFlags.hs b/src/Vulkan/Core10/Enums/DeviceCreateFlags.hs
--- a/src/Vulkan/Core10/Enums/DeviceCreateFlags.hs
+++ b/src/Vulkan/Core10/Enums/DeviceCreateFlags.hs
@@ -14,7 +14,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkDeviceCreateFlags - Reserved for future use
 --
diff --git a/src/Vulkan/Core10/Enums/DeviceQueueCreateFlagBits.hs b/src/Vulkan/Core10/Enums/DeviceQueueCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/DeviceQueueCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/DeviceQueueCreateFlagBits.hs
@@ -18,7 +18,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkDeviceQueueCreateFlagBits - Bitmask specifying behavior of the queue
 --
diff --git a/src/Vulkan/Core10/Enums/DynamicState.hs b/src/Vulkan/Core10/Enums/DynamicState.hs
--- a/src/Vulkan/Core10/Enums/DynamicState.hs
+++ b/src/Vulkan/Core10/Enums/DynamicState.hs
@@ -70,7 +70,7 @@
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBias' before any draws
 -- are performed with @depthBiasEnable@ in
 -- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo' set to
--- 'Vulkan.Core10.BaseType.TRUE'.
+-- 'Vulkan.Core10.FundamentalTypes.TRUE'.
 pattern DYNAMIC_STATE_DEPTH_BIAS = DynamicState 3
 -- | 'DYNAMIC_STATE_BLEND_CONSTANTS' specifies that the @blendConstants@
 -- state in 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo' will
@@ -78,8 +78,8 @@
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants' before any
 -- draws are performed with a pipeline state with
 -- 'Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState' member
--- @blendEnable@ set to 'Vulkan.Core10.BaseType.TRUE' and any of the blend
--- functions using a constant blend color.
+-- @blendEnable@ set to 'Vulkan.Core10.FundamentalTypes.TRUE' and any of
+-- the blend functions using a constant blend color.
 pattern DYNAMIC_STATE_BLEND_CONSTANTS = DynamicState 4
 -- | 'DYNAMIC_STATE_DEPTH_BOUNDS' specifies that the @minDepthBounds@ and
 -- @maxDepthBounds@ states of
@@ -88,7 +88,7 @@
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' before any draws
 -- are performed with a pipeline state with
 -- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' member
--- @depthBoundsTestEnable@ set to 'Vulkan.Core10.BaseType.TRUE'.
+-- @depthBoundsTestEnable@ set to 'Vulkan.Core10.FundamentalTypes.TRUE'.
 pattern DYNAMIC_STATE_DEPTH_BOUNDS = DynamicState 5
 -- | 'DYNAMIC_STATE_STENCIL_COMPARE_MASK' specifies that the @compareMask@
 -- state in 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'
@@ -97,7 +97,7 @@
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask' before
 -- any draws are performed with a pipeline state with
 -- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' member
--- @stencilTestEnable@ set to 'Vulkan.Core10.BaseType.TRUE'
+-- @stencilTestEnable@ set to 'Vulkan.Core10.FundamentalTypes.TRUE'
 pattern DYNAMIC_STATE_STENCIL_COMPARE_MASK = DynamicState 6
 -- | 'DYNAMIC_STATE_STENCIL_WRITE_MASK' specifies that the @writeMask@ state
 -- in 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' for both
@@ -105,7 +105,7 @@
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask' before any
 -- draws are performed with a pipeline state with
 -- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' member
--- @stencilTestEnable@ set to 'Vulkan.Core10.BaseType.TRUE'
+-- @stencilTestEnable@ set to 'Vulkan.Core10.FundamentalTypes.TRUE'
 pattern DYNAMIC_STATE_STENCIL_WRITE_MASK = DynamicState 7
 -- | 'DYNAMIC_STATE_STENCIL_REFERENCE' specifies that the @reference@ state
 -- in 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' for both
@@ -113,7 +113,7 @@
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference' before any
 -- draws are performed with a pipeline state with
 -- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' member
--- @stencilTestEnable@ set to 'Vulkan.Core10.BaseType.TRUE'
+-- @stencilTestEnable@ set to 'Vulkan.Core10.FundamentalTypes.TRUE'
 pattern DYNAMIC_STATE_STENCIL_REFERENCE = DynamicState 8
 -- | 'DYNAMIC_STATE_LINE_STIPPLE_EXT' specifies that the @lineStippleFactor@
 -- and @lineStipplePattern@ state in
@@ -122,7 +122,8 @@
 -- 'Vulkan.Extensions.VK_EXT_line_rasterization.cmdSetLineStippleEXT'
 -- before any draws are performed with a pipeline state with
 -- 'Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT'
--- member @stippledLineEnable@ set to 'Vulkan.Core10.BaseType.TRUE'.
+-- member @stippledLineEnable@ set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE'.
 pattern DYNAMIC_STATE_LINE_STIPPLE_EXT = DynamicState 1000259000
 -- | 'DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV' specifies that the
 -- @pExclusiveScissors@ state in
@@ -175,7 +176,8 @@
 -- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
 -- before any draws are performed with a pipeline state with
 -- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'
--- member @viewportScalingEnable@ set to 'Vulkan.Core10.BaseType.TRUE'
+-- member @viewportScalingEnable@ set to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE'
 pattern DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = DynamicState 1000087000
 {-# complete DYNAMIC_STATE_VIEWPORT,
              DYNAMIC_STATE_SCISSOR,
diff --git a/src/Vulkan/Core10/Enums/EventCreateFlags.hs b/src/Vulkan/Core10/Enums/EventCreateFlags.hs
--- a/src/Vulkan/Core10/Enums/EventCreateFlags.hs
+++ b/src/Vulkan/Core10/Enums/EventCreateFlags.hs
@@ -14,7 +14,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkEventCreateFlags - Reserved for future use
 --
diff --git a/src/Vulkan/Core10/Enums/FenceCreateFlagBits.hs b/src/Vulkan/Core10/Enums/FenceCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/FenceCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/FenceCreateFlagBits.hs
@@ -18,7 +18,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkFenceCreateFlagBits - Bitmask specifying initial state and behavior of
 -- a fence
diff --git a/src/Vulkan/Core10/Enums/FormatFeatureFlagBits.hs b/src/Vulkan/Core10/Enums/FormatFeatureFlagBits.hs
--- a/src/Vulkan/Core10/Enums/FormatFeatureFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/FormatFeatureFlagBits.hs
@@ -43,7 +43,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkFormatFeatureFlagBits - Bitmask specifying features supported by a
 -- buffer
@@ -192,8 +192,8 @@
 --     specifies that reconstruction /can/ be forcibly made explicit by
 --     setting
 --     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'::@forceExplicitReconstruction@
---     to 'Vulkan.Core10.BaseType.TRUE'. If the format being queried
---     supports
+--     to 'Vulkan.Core10.FundamentalTypes.TRUE'. If the format being
+--     queried supports
 --     'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT'
 --     it /must/ also support
 --     'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT'.
@@ -349,7 +349,8 @@
 -- | 'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT'
 -- specifies that reconstruction /can/ be forcibly made explicit by setting
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'::@forceExplicitReconstruction@
--- to 'Vulkan.Core10.BaseType.TRUE'. If the format being queried supports
+-- to 'Vulkan.Core10.FundamentalTypes.TRUE'. If the format being queried
+-- supports
 -- 'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT'
 -- it /must/ also support
 -- 'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT'.
diff --git a/src/Vulkan/Core10/Enums/FramebufferCreateFlagBits.hs b/src/Vulkan/Core10/Enums/FramebufferCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/FramebufferCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/FramebufferCreateFlagBits.hs
@@ -18,7 +18,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkFramebufferCreateFlagBits - Bitmask specifying framebuffer properties
 --
diff --git a/src/Vulkan/Core10/Enums/ImageAspectFlagBits.hs b/src/Vulkan/Core10/Enums/ImageAspectFlagBits.hs
--- a/src/Vulkan/Core10/Enums/ImageAspectFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/ImageAspectFlagBits.hs
@@ -28,7 +28,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkImageAspectFlagBits - Bitmask specifying which aspects of an image are
 -- included in a view
diff --git a/src/Vulkan/Core10/Enums/ImageCreateFlagBits.hs b/src/Vulkan/Core10/Enums/ImageCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/ImageCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/ImageCreateFlagBits.hs
@@ -32,7 +32,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkImageCreateFlagBits - Bitmask specifying additional parameters of an
 -- image
diff --git a/src/Vulkan/Core10/Enums/ImageUsageFlagBits.hs b/src/Vulkan/Core10/Enums/ImageUsageFlagBits.hs
--- a/src/Vulkan/Core10/Enums/ImageUsageFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/ImageUsageFlagBits.hs
@@ -27,7 +27,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkImageUsageFlagBits - Bitmask specifying intended usage of an image
 --
diff --git a/src/Vulkan/Core10/Enums/ImageViewCreateFlagBits.hs b/src/Vulkan/Core10/Enums/ImageViewCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/ImageViewCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/ImageViewCreateFlagBits.hs
@@ -18,7 +18,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkImageViewCreateFlagBits - Bitmask specifying additional parameters of
 -- an image view
diff --git a/src/Vulkan/Core10/Enums/InstanceCreateFlags.hs b/src/Vulkan/Core10/Enums/InstanceCreateFlags.hs
--- a/src/Vulkan/Core10/Enums/InstanceCreateFlags.hs
+++ b/src/Vulkan/Core10/Enums/InstanceCreateFlags.hs
@@ -14,7 +14,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkInstanceCreateFlags - Reserved for future use
 --
diff --git a/src/Vulkan/Core10/Enums/MemoryHeapFlagBits.hs b/src/Vulkan/Core10/Enums/MemoryHeapFlagBits.hs
--- a/src/Vulkan/Core10/Enums/MemoryHeapFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/MemoryHeapFlagBits.hs
@@ -19,7 +19,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkMemoryHeapFlagBits - Bitmask specifying attribute flags for a heap
 --
diff --git a/src/Vulkan/Core10/Enums/MemoryMapFlags.hs b/src/Vulkan/Core10/Enums/MemoryMapFlags.hs
--- a/src/Vulkan/Core10/Enums/MemoryMapFlags.hs
+++ b/src/Vulkan/Core10/Enums/MemoryMapFlags.hs
@@ -14,7 +14,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkMemoryMapFlags - Reserved for future use
 --
diff --git a/src/Vulkan/Core10/Enums/MemoryPropertyFlagBits.hs b/src/Vulkan/Core10/Enums/MemoryPropertyFlagBits.hs
--- a/src/Vulkan/Core10/Enums/MemoryPropertyFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/MemoryPropertyFlagBits.hs
@@ -25,7 +25,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkMemoryPropertyFlagBits - Bitmask specifying properties for a memory
 -- type
diff --git a/src/Vulkan/Core10/Enums/PipelineCacheCreateFlagBits.hs b/src/Vulkan/Core10/Enums/PipelineCacheCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/PipelineCacheCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/PipelineCacheCreateFlagBits.hs
@@ -18,7 +18,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkPipelineCacheCreateFlagBits - Bitmask specifying the behavior of the
 -- pipeline cache
diff --git a/src/Vulkan/Core10/Enums/PipelineColorBlendStateCreateFlags.hs b/src/Vulkan/Core10/Enums/PipelineColorBlendStateCreateFlags.hs
--- a/src/Vulkan/Core10/Enums/PipelineColorBlendStateCreateFlags.hs
+++ b/src/Vulkan/Core10/Enums/PipelineColorBlendStateCreateFlags.hs
@@ -14,7 +14,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkPipelineColorBlendStateCreateFlags - Reserved for future use
 --
diff --git a/src/Vulkan/Core10/Enums/PipelineCreateFlagBits.hs b/src/Vulkan/Core10/Enums/PipelineCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/PipelineCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/PipelineCreateFlagBits.hs
@@ -35,7 +35,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkPipelineCreateFlagBits - Bitmask controlling how a pipeline is created
 --
diff --git a/src/Vulkan/Core10/Enums/PipelineDepthStencilStateCreateFlags.hs b/src/Vulkan/Core10/Enums/PipelineDepthStencilStateCreateFlags.hs
--- a/src/Vulkan/Core10/Enums/PipelineDepthStencilStateCreateFlags.hs
+++ b/src/Vulkan/Core10/Enums/PipelineDepthStencilStateCreateFlags.hs
@@ -14,7 +14,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkPipelineDepthStencilStateCreateFlags - Reserved for future use
 --
diff --git a/src/Vulkan/Core10/Enums/PipelineDynamicStateCreateFlags.hs b/src/Vulkan/Core10/Enums/PipelineDynamicStateCreateFlags.hs
--- a/src/Vulkan/Core10/Enums/PipelineDynamicStateCreateFlags.hs
+++ b/src/Vulkan/Core10/Enums/PipelineDynamicStateCreateFlags.hs
@@ -14,7 +14,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkPipelineDynamicStateCreateFlags - Reserved for future use
 --
diff --git a/src/Vulkan/Core10/Enums/PipelineInputAssemblyStateCreateFlags.hs b/src/Vulkan/Core10/Enums/PipelineInputAssemblyStateCreateFlags.hs
--- a/src/Vulkan/Core10/Enums/PipelineInputAssemblyStateCreateFlags.hs
+++ b/src/Vulkan/Core10/Enums/PipelineInputAssemblyStateCreateFlags.hs
@@ -14,7 +14,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkPipelineInputAssemblyStateCreateFlags - Reserved for future use
 --
diff --git a/src/Vulkan/Core10/Enums/PipelineLayoutCreateFlags.hs b/src/Vulkan/Core10/Enums/PipelineLayoutCreateFlags.hs
--- a/src/Vulkan/Core10/Enums/PipelineLayoutCreateFlags.hs
+++ b/src/Vulkan/Core10/Enums/PipelineLayoutCreateFlags.hs
@@ -14,7 +14,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkPipelineLayoutCreateFlags - Reserved for future use
 --
diff --git a/src/Vulkan/Core10/Enums/PipelineMultisampleStateCreateFlags.hs b/src/Vulkan/Core10/Enums/PipelineMultisampleStateCreateFlags.hs
--- a/src/Vulkan/Core10/Enums/PipelineMultisampleStateCreateFlags.hs
+++ b/src/Vulkan/Core10/Enums/PipelineMultisampleStateCreateFlags.hs
@@ -14,7 +14,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkPipelineMultisampleStateCreateFlags - Reserved for future use
 --
diff --git a/src/Vulkan/Core10/Enums/PipelineRasterizationStateCreateFlags.hs b/src/Vulkan/Core10/Enums/PipelineRasterizationStateCreateFlags.hs
--- a/src/Vulkan/Core10/Enums/PipelineRasterizationStateCreateFlags.hs
+++ b/src/Vulkan/Core10/Enums/PipelineRasterizationStateCreateFlags.hs
@@ -14,7 +14,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkPipelineRasterizationStateCreateFlags - Reserved for future use
 --
diff --git a/src/Vulkan/Core10/Enums/PipelineShaderStageCreateFlagBits.hs b/src/Vulkan/Core10/Enums/PipelineShaderStageCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/PipelineShaderStageCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/PipelineShaderStageCreateFlagBits.hs
@@ -19,7 +19,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkPipelineShaderStageCreateFlagBits - Bitmask controlling how a pipeline
 -- shader stage is created
diff --git a/src/Vulkan/Core10/Enums/PipelineStageFlagBits.hs b/src/Vulkan/Core10/Enums/PipelineStageFlagBits.hs
--- a/src/Vulkan/Core10/Enums/PipelineStageFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/PipelineStageFlagBits.hs
@@ -43,32 +43,10 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkPipelineStageFlagBits - Bitmask specifying pipeline stages
 --
--- = Description
---
--- Note
---
--- An execution dependency with only 'PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT' in
--- the destination stage mask will only prevent that stage from executing
--- in subsequently submitted commands. As this stage does not perform any
--- actual execution, this is not observable - in effect, it does not delay
--- processing of subsequent commands. Similarly an execution dependency
--- with only 'PIPELINE_STAGE_TOP_OF_PIPE_BIT' in the source stage mask will
--- effectively not wait for any prior commands to complete.
---
--- When defining a memory dependency, using only
--- 'PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT' or 'PIPELINE_STAGE_TOP_OF_PIPE_BIT'
--- would never make any accesses available and\/or visible because these
--- stages do not access memory.
---
--- 'PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT' and 'PIPELINE_STAGE_TOP_OF_PIPE_BIT'
--- are useful for accomplishing layout transitions and queue ownership
--- operations when the required execution dependency is satisfied by other
--- means - for example, semaphore operations between queues.
---
 -- = See Also
 --
 -- 'Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.CheckpointDataNV',
@@ -78,8 +56,11 @@
 newtype PipelineStageFlagBits = PipelineStageFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits)
 
--- | 'PIPELINE_STAGE_TOP_OF_PIPE_BIT' specifies the stage of the pipeline
--- where any commands are initially received by the queue.
+-- | 'PIPELINE_STAGE_TOP_OF_PIPE_BIT' is equivalent to
+-- 'PIPELINE_STAGE_ALL_COMMANDS_BIT' with
+-- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlags' set to @0@ when
+-- specified in the second synchronization scope, but specifies no stages
+-- in the first scope.
 pattern PIPELINE_STAGE_TOP_OF_PIPE_BIT = PipelineStageFlagBits 0x00000001
 -- | 'PIPELINE_STAGE_DRAW_INDIRECT_BIT' specifies the stage of the pipeline
 -- where Draw\/DispatchIndirect data structures are consumed. This stage
@@ -141,8 +122,11 @@
 --     with the exception of
 --     'Vulkan.Core10.CommandBufferBuilding.cmdClearAttachments'
 pattern PIPELINE_STAGE_TRANSFER_BIT = PipelineStageFlagBits 0x00001000
--- | 'PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT' specifies the final stage in the
--- pipeline where operations generated by all commands complete execution.
+-- | 'PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT' is equivalent to
+-- 'PIPELINE_STAGE_ALL_COMMANDS_BIT' with
+-- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlags' set to @0@ when
+-- specified in the first synchronization scope, but specifies no stages in
+-- the second scope.
 pattern PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = PipelineStageFlagBits 0x00002000
 -- | 'PIPELINE_STAGE_HOST_BIT' specifies a pseudo-stage indicating execution
 -- on the host of reads\/writes of device memory. This stage is not invoked
@@ -151,8 +135,6 @@
 -- | 'PIPELINE_STAGE_ALL_GRAPHICS_BIT' specifies the execution of all
 -- graphics pipeline stages, and is equivalent to the logical OR of:
 --
--- -   'PIPELINE_STAGE_TOP_OF_PIPE_BIT'
---
 -- -   'PIPELINE_STAGE_DRAW_INDIRECT_BIT'
 --
 -- -   'PIPELINE_STAGE_TASK_SHADER_BIT_NV'
@@ -177,8 +159,6 @@
 --
 -- -   'PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'
 --
--- -   'PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT'
---
 -- -   'PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'
 --
 -- -   'PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
@@ -187,9 +167,8 @@
 --
 -- -   'PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
 pattern PIPELINE_STAGE_ALL_GRAPHICS_BIT = PipelineStageFlagBits 0x00008000
--- | 'PIPELINE_STAGE_ALL_COMMANDS_BIT' is equivalent to the logical OR of
--- every other pipeline stage flag that is supported on the queue it is
--- used with.
+-- | 'PIPELINE_STAGE_ALL_COMMANDS_BIT' specifies all commands supported on
+-- the queue it is used with.
 pattern PIPELINE_STAGE_ALL_COMMANDS_BIT = PipelineStageFlagBits 0x00010000
 -- | 'PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV' specifies the stage of the
 -- pipeline where device-side preprocessing for generated commands via
@@ -212,10 +191,7 @@
 pattern PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = PipelineStageFlagBits 0x00400000
 -- | 'PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR' specifies the
 -- execution of
--- 'Vulkan.Extensions.VK_KHR_ray_tracing.cmdBuildAccelerationStructureKHR',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing.cmdCopyAccelerationStructureKHR',
--- and
--- 'Vulkan.Extensions.VK_KHR_ray_tracing.cmdWriteAccelerationStructuresPropertiesKHR'.
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure acceleration structure commands>.
 pattern PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = PipelineStageFlagBits 0x02000000
 -- | 'PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR' specifies the execution of
 -- the ray tracing shader stages.
diff --git a/src/Vulkan/Core10/Enums/PipelineTessellationStateCreateFlags.hs b/src/Vulkan/Core10/Enums/PipelineTessellationStateCreateFlags.hs
--- a/src/Vulkan/Core10/Enums/PipelineTessellationStateCreateFlags.hs
+++ b/src/Vulkan/Core10/Enums/PipelineTessellationStateCreateFlags.hs
@@ -14,7 +14,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkPipelineTessellationStateCreateFlags - Reserved for future use
 --
diff --git a/src/Vulkan/Core10/Enums/PipelineVertexInputStateCreateFlags.hs b/src/Vulkan/Core10/Enums/PipelineVertexInputStateCreateFlags.hs
--- a/src/Vulkan/Core10/Enums/PipelineVertexInputStateCreateFlags.hs
+++ b/src/Vulkan/Core10/Enums/PipelineVertexInputStateCreateFlags.hs
@@ -14,7 +14,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkPipelineVertexInputStateCreateFlags - Reserved for future use
 --
diff --git a/src/Vulkan/Core10/Enums/PipelineViewportStateCreateFlags.hs b/src/Vulkan/Core10/Enums/PipelineViewportStateCreateFlags.hs
--- a/src/Vulkan/Core10/Enums/PipelineViewportStateCreateFlags.hs
+++ b/src/Vulkan/Core10/Enums/PipelineViewportStateCreateFlags.hs
@@ -14,7 +14,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkPipelineViewportStateCreateFlags - Reserved for future use
 --
diff --git a/src/Vulkan/Core10/Enums/QueryControlFlagBits.hs b/src/Vulkan/Core10/Enums/QueryControlFlagBits.hs
--- a/src/Vulkan/Core10/Enums/QueryControlFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/QueryControlFlagBits.hs
@@ -18,7 +18,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkQueryControlFlagBits - Bitmask specifying constraints on a query
 --
diff --git a/src/Vulkan/Core10/Enums/QueryPipelineStatisticFlagBits.hs b/src/Vulkan/Core10/Enums/QueryPipelineStatisticFlagBits.hs
--- a/src/Vulkan/Core10/Enums/QueryPipelineStatisticFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/QueryPipelineStatisticFlagBits.hs
@@ -28,7 +28,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkQueryPipelineStatisticFlagBits - Bitmask specifying queried pipeline
 -- statistics
diff --git a/src/Vulkan/Core10/Enums/QueryPoolCreateFlags.hs b/src/Vulkan/Core10/Enums/QueryPoolCreateFlags.hs
--- a/src/Vulkan/Core10/Enums/QueryPoolCreateFlags.hs
+++ b/src/Vulkan/Core10/Enums/QueryPoolCreateFlags.hs
@@ -14,7 +14,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkQueryPoolCreateFlags - Reserved for future use
 --
diff --git a/src/Vulkan/Core10/Enums/QueryResultFlagBits.hs b/src/Vulkan/Core10/Enums/QueryResultFlagBits.hs
--- a/src/Vulkan/Core10/Enums/QueryResultFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/QueryResultFlagBits.hs
@@ -21,7 +21,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkQueryResultFlagBits - Bitmask specifying how and when query results
 -- are returned
diff --git a/src/Vulkan/Core10/Enums/QueueFlagBits.hs b/src/Vulkan/Core10/Enums/QueueFlagBits.hs
--- a/src/Vulkan/Core10/Enums/QueueFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/QueueFlagBits.hs
@@ -22,7 +22,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkQueueFlagBits - Bitmask specifying capabilities of queues in a queue
 -- family
diff --git a/src/Vulkan/Core10/Enums/RenderPassCreateFlagBits.hs b/src/Vulkan/Core10/Enums/RenderPassCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/RenderPassCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/RenderPassCreateFlagBits.hs
@@ -18,7 +18,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkRenderPassCreateFlagBits - Bitmask specifying additional properties of
 -- a renderpass
diff --git a/src/Vulkan/Core10/Enums/Result.hs b/src/Vulkan/Core10/Enums/Result.hs
--- a/src/Vulkan/Core10/Enums/Result.hs
+++ b/src/Vulkan/Core10/Enums/Result.hs
@@ -59,7 +59,7 @@
 --
 -- = Description
 --
--- If a command returns a run time error, unless otherwise specified any
+-- If a command returns a runtime error, unless otherwise specified any
 -- output parameters will have undefined contents, except that if the
 -- output parameter is a structure with @sType@ and @pNext@ fields, those
 -- fields will be unmodified. Any structures chained from @pNext@ will also
@@ -85,9 +85,9 @@
 -- issue, and the implementor should be contacted for support.
 --
 -- Performance-critical commands generally do not have return codes. If a
--- run time error occurs in such commands, the implementation will defer
+-- runtime error occurs in such commands, the implementation will defer
 -- reporting the error until a specified point. For commands that record
--- into command buffers (@vkCmd*@) run time errors are reported by
+-- into command buffers (@vkCmd*@) runtime errors are reported by
 -- 'Vulkan.Core10.CommandBuffer.endCommandBuffer'.
 --
 -- = See Also
diff --git a/src/Vulkan/Core10/Enums/SampleCountFlagBits.hs b/src/Vulkan/Core10/Enums/SampleCountFlagBits.hs
--- a/src/Vulkan/Core10/Enums/SampleCountFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/SampleCountFlagBits.hs
@@ -24,7 +24,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkSampleCountFlagBits - Bitmask specifying sample counts supported for
 -- an image used for storage operations
diff --git a/src/Vulkan/Core10/Enums/SamplerCreateFlagBits.hs b/src/Vulkan/Core10/Enums/SamplerCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/SamplerCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/SamplerCreateFlagBits.hs
@@ -19,7 +19,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkSamplerCreateFlagBits - Bitmask specifying additional parameters of
 -- sampler
diff --git a/src/Vulkan/Core10/Enums/SemaphoreCreateFlags.hs b/src/Vulkan/Core10/Enums/SemaphoreCreateFlags.hs
--- a/src/Vulkan/Core10/Enums/SemaphoreCreateFlags.hs
+++ b/src/Vulkan/Core10/Enums/SemaphoreCreateFlags.hs
@@ -14,7 +14,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkSemaphoreCreateFlags - Reserved for future use
 --
diff --git a/src/Vulkan/Core10/Enums/ShaderModuleCreateFlagBits.hs b/src/Vulkan/Core10/Enums/ShaderModuleCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/ShaderModuleCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/ShaderModuleCreateFlagBits.hs
@@ -16,7 +16,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- No documentation found for TopLevel "VkShaderModuleCreateFlagBits"
 newtype ShaderModuleCreateFlagBits = ShaderModuleCreateFlagBits Flags
diff --git a/src/Vulkan/Core10/Enums/ShaderStageFlagBits.hs b/src/Vulkan/Core10/Enums/ShaderStageFlagBits.hs
--- a/src/Vulkan/Core10/Enums/ShaderStageFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/ShaderStageFlagBits.hs
@@ -33,7 +33,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkShaderStageFlagBits - Bitmask specifying a pipeline stage
 --
diff --git a/src/Vulkan/Core10/Enums/SparseImageFormatFlagBits.hs b/src/Vulkan/Core10/Enums/SparseImageFormatFlagBits.hs
--- a/src/Vulkan/Core10/Enums/SparseImageFormatFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/SparseImageFormatFlagBits.hs
@@ -20,7 +20,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkSparseImageFormatFlagBits - Bitmask specifying additional information
 -- about a sparse image resource
diff --git a/src/Vulkan/Core10/Enums/SparseMemoryBindFlagBits.hs b/src/Vulkan/Core10/Enums/SparseMemoryBindFlagBits.hs
--- a/src/Vulkan/Core10/Enums/SparseMemoryBindFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/SparseMemoryBindFlagBits.hs
@@ -18,7 +18,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkSparseMemoryBindFlagBits - Bitmask specifying usage of a sparse memory
 -- binding operation
diff --git a/src/Vulkan/Core10/Enums/StencilFaceFlagBits.hs b/src/Vulkan/Core10/Enums/StencilFaceFlagBits.hs
--- a/src/Vulkan/Core10/Enums/StencilFaceFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/StencilFaceFlagBits.hs
@@ -20,7 +20,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkStencilFaceFlagBits - Bitmask specifying sets of stencil state for
 -- which to update the compare mask
diff --git a/src/Vulkan/Core10/Enums/SubpassDescriptionFlagBits.hs b/src/Vulkan/Core10/Enums/SubpassDescriptionFlagBits.hs
--- a/src/Vulkan/Core10/Enums/SubpassDescriptionFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/SubpassDescriptionFlagBits.hs
@@ -21,7 +21,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkSubpassDescriptionFlagBits - Bitmask specifying usage of a subpass
 --
diff --git a/src/Vulkan/Core10/Event.hs b/src/Vulkan/Core10/Event.hs
--- a/src/Vulkan/Core10/Event.hs
+++ b/src/Vulkan/Core10/Event.hs
@@ -6,6 +6,8 @@
                             , setEvent
                             , resetEvent
                             , EventCreateInfo(..)
+                            , Event(..)
+                            , EventCreateFlags(..)
                             ) where
 
 import Control.Exception.Base (bracket)
@@ -58,6 +60,8 @@
 import Vulkan.Zero (Zero(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EVENT_CREATE_INFO))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.Handles (Event(..))
+import Vulkan.Core10.Enums.EventCreateFlags (EventCreateFlags(..))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
diff --git a/src/Vulkan/Core10/Fence.hs b/src/Vulkan/Core10/Fence.hs
--- a/src/Vulkan/Core10/Fence.hs
+++ b/src/Vulkan/Core10/Fence.hs
@@ -7,6 +7,9 @@
                             , waitForFences
                             , waitForFencesSafe
                             , FenceCreateInfo(..)
+                            , Fence(..)
+                            , FenceCreateFlagBits(..)
+                            , FenceCreateFlags
                             ) where
 
 import Control.Exception.Base (bracket)
@@ -41,12 +44,12 @@
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.CStruct.Extends (forgetExtensions)
 import Vulkan.NamedType ((:::))
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.BaseType (Bool32)
-import Vulkan.Core10.BaseType (Bool32(..))
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32(..))
 import Vulkan.CStruct.Extends (Chain)
 import Vulkan.Core10.Handles (Device)
 import Vulkan.Core10.Handles (Device(..))
@@ -80,6 +83,9 @@
 import Vulkan.Zero (Zero(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_FENCE_CREATE_INFO))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.Handles (Fence(..))
+import Vulkan.Core10.Enums.FenceCreateFlagBits (FenceCreateFlagBits(..))
+import Vulkan.Core10.Enums.FenceCreateFlagBits (FenceCreateFlags)
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -410,9 +416,10 @@
                           -> -- | @pFences@ is a pointer to an array of @fenceCount@ fence handles.
                              ("fences" ::: Vector Fence)
                           -> -- | @waitAll@ is the condition that /must/ be satisfied to successfully
-                             -- unblock the wait. If @waitAll@ is 'Vulkan.Core10.BaseType.TRUE', then
-                             -- the condition is that all fences in @pFences@ are signaled. Otherwise,
-                             -- the condition is that at least one fence in @pFences@ is signaled.
+                             -- unblock the wait. If @waitAll@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+                             -- then the condition is that all fences in @pFences@ are signaled.
+                             -- Otherwise, the condition is that at least one fence in @pFences@ is
+                             -- signaled.
                              ("waitAll" ::: Bool)
                           -> -- | @timeout@ is the timeout period in units of nanoseconds. @timeout@ is
                              -- adjusted to the closest value allowed by the implementation-dependent
@@ -496,7 +503,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32', 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32', 'Vulkan.Core10.Handles.Device',
 -- 'Vulkan.Core10.Handles.Fence'
 waitForFences :: forall io
                . (MonadIO io)
@@ -505,9 +512,10 @@
               -> -- | @pFences@ is a pointer to an array of @fenceCount@ fence handles.
                  ("fences" ::: Vector Fence)
               -> -- | @waitAll@ is the condition that /must/ be satisfied to successfully
-                 -- unblock the wait. If @waitAll@ is 'Vulkan.Core10.BaseType.TRUE', then
-                 -- the condition is that all fences in @pFences@ are signaled. Otherwise,
-                 -- the condition is that at least one fence in @pFences@ is signaled.
+                 -- unblock the wait. If @waitAll@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+                 -- then the condition is that all fences in @pFences@ are signaled.
+                 -- Otherwise, the condition is that at least one fence in @pFences@ is
+                 -- signaled.
                  ("waitAll" ::: Bool)
               -> -- | @timeout@ is the timeout period in units of nanoseconds. @timeout@ is
                  -- adjusted to the closest value allowed by the implementation-dependent
@@ -525,9 +533,10 @@
                   -> -- | @pFences@ is a pointer to an array of @fenceCount@ fence handles.
                      ("fences" ::: Vector Fence)
                   -> -- | @waitAll@ is the condition that /must/ be satisfied to successfully
-                     -- unblock the wait. If @waitAll@ is 'Vulkan.Core10.BaseType.TRUE', then
-                     -- the condition is that all fences in @pFences@ are signaled. Otherwise,
-                     -- the condition is that at least one fence in @pFences@ is signaled.
+                     -- unblock the wait. If @waitAll@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+                     -- then the condition is that all fences in @pFences@ are signaled.
+                     -- Otherwise, the condition is that at least one fence in @pFences@ is
+                     -- signaled.
                      ("waitAll" ::: Bool)
                   -> -- | @timeout@ is the timeout period in units of nanoseconds. @timeout@ is
                      -- adjusted to the closest value allowed by the implementation-dependent
@@ -564,7 +573,7 @@
 -- 'Vulkan.Core10.Enums.FenceCreateFlagBits.FenceCreateFlags',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'createFence'
 data FenceCreateInfo (es :: [Type]) = FenceCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is a bitmask of
     -- 'Vulkan.Core10.Enums.FenceCreateFlagBits.FenceCreateFlagBits' specifying
diff --git a/src/Vulkan/Core10/FuncPointers.hs b/src/Vulkan/Core10/FuncPointers.hs
--- a/src/Vulkan/Core10/FuncPointers.hs
+++ b/src/Vulkan/Core10/FuncPointers.hs
@@ -108,7 +108,7 @@
 --
 -- If @pfnAllocation@ returns @NULL@, and if the implementation is unable
 -- to continue correct processing of the current command without the
--- requested allocation, it /must/ treat this as a run-time error, and
+-- requested allocation, it /must/ treat this as a runtime error, and
 -- generate 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' at the
 -- appropriate time for the command in which the condition was detected, as
 -- described in
diff --git a/src/Vulkan/Core10/FundamentalTypes.hs b/src/Vulkan/Core10/FundamentalTypes.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core10/FundamentalTypes.hs
@@ -0,0 +1,666 @@
+{-# language CPP #-}
+module Vulkan.Core10.FundamentalTypes  ( boolToBool32
+                                       , bool32ToBool
+                                       , Offset2D(..)
+                                       , Offset3D(..)
+                                       , Extent2D(..)
+                                       , Extent3D(..)
+                                       , Rect2D(..)
+                                       , Bool32( FALSE
+                                               , TRUE
+                                               , ..
+                                               )
+                                       , SampleMask
+                                       , Flags
+                                       , DeviceSize
+                                       , DeviceAddress
+                                       , StructureType(..)
+                                       , Result(..)
+                                       ) where
+
+import Data.Bool (bool)
+import Foreign.Marshal.Alloc (allocaBytesAligned)
+import Foreign.Ptr (plusPtr)
+import GHC.Read (choose)
+import GHC.Read (expectP)
+import GHC.Read (parens)
+import GHC.Show (showParen)
+import GHC.Show (showString)
+import GHC.Show (showsPrec)
+import Text.ParserCombinators.ReadPrec ((+++))
+import Text.ParserCombinators.ReadPrec (prec)
+import Text.ParserCombinators.ReadPrec (step)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import Data.Int (Int32)
+import Foreign.Ptr (Ptr)
+import GHC.Read (Read(readPrec))
+import Data.Word (Word32)
+import Data.Word (Word64)
+import Text.Read.Lex (Lexeme(Ident))
+import Data.Kind (Type)
+import Control.Monad.Trans.Cont (ContT(..))
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero)
+import Vulkan.Zero (Zero(..))
+import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+boolToBool32 :: Bool -> Bool32
+boolToBool32 = bool FALSE TRUE
+
+bool32ToBool :: Bool32 -> Bool
+bool32ToBool = \case
+  FALSE -> False
+  TRUE  -> True
+
+
+-- | VkOffset2D - Structure specifying a two-dimensional offset
+--
+-- = See Also
+--
+-- 'Vulkan.Extensions.VK_KHR_display.DisplayPlaneCapabilitiesKHR',
+-- 'Rect2D', 'Vulkan.Extensions.VK_KHR_incremental_present.RectLayerKHR'
+data Offset2D = Offset2D
+  { -- | @x@ is the x offset.
+    x :: Int32
+  , -- | @y@ is the y offset.
+    y :: Int32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (Offset2D)
+#endif
+deriving instance Show Offset2D
+
+instance ToCStruct Offset2D where
+  withCStruct x f = allocaBytesAligned 8 4 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p Offset2D{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Int32)) (x)
+    poke ((p `plusPtr` 4 :: Ptr Int32)) (y)
+    f
+  cStructSize = 8
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Int32)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr Int32)) (zero)
+    f
+
+instance FromCStruct Offset2D where
+  peekCStruct p = do
+    x <- peek @Int32 ((p `plusPtr` 0 :: Ptr Int32))
+    y <- peek @Int32 ((p `plusPtr` 4 :: Ptr Int32))
+    pure $ Offset2D
+             x y
+
+instance Storable Offset2D where
+  sizeOf ~_ = 8
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero Offset2D where
+  zero = Offset2D
+           zero
+           zero
+
+
+-- | VkOffset3D - Structure specifying a three-dimensional offset
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.CommandBufferBuilding.BufferImageCopy',
+-- 'Vulkan.Core10.CommandBufferBuilding.ImageBlit',
+-- 'Vulkan.Core10.CommandBufferBuilding.ImageCopy',
+-- 'Vulkan.Core10.CommandBufferBuilding.ImageResolve',
+-- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind'
+data Offset3D = Offset3D
+  { -- | @x@ is the x offset.
+    x :: Int32
+  , -- | @y@ is the y offset.
+    y :: Int32
+  , -- | @z@ is the z offset.
+    z :: Int32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (Offset3D)
+#endif
+deriving instance Show Offset3D
+
+instance ToCStruct Offset3D where
+  withCStruct x f = allocaBytesAligned 12 4 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p Offset3D{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Int32)) (x)
+    poke ((p `plusPtr` 4 :: Ptr Int32)) (y)
+    poke ((p `plusPtr` 8 :: Ptr Int32)) (z)
+    f
+  cStructSize = 12
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Int32)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr Int32)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr Int32)) (zero)
+    f
+
+instance FromCStruct Offset3D where
+  peekCStruct p = do
+    x <- peek @Int32 ((p `plusPtr` 0 :: Ptr Int32))
+    y <- peek @Int32 ((p `plusPtr` 4 :: Ptr Int32))
+    z <- peek @Int32 ((p `plusPtr` 8 :: Ptr Int32))
+    pure $ Offset3D
+             x y z
+
+instance Storable Offset3D where
+  sizeOf ~_ = 12
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero Offset3D where
+  zero = Offset3D
+           zero
+           zero
+           zero
+
+
+-- | VkExtent2D - Structure specifying a two-dimensional extent
+--
+-- = See Also
+--
+-- 'Vulkan.Extensions.VK_KHR_display.DisplayModeParametersKHR',
+-- 'Vulkan.Extensions.VK_KHR_display.DisplayPlaneCapabilitiesKHR',
+-- 'Vulkan.Extensions.VK_KHR_display.DisplayPropertiesKHR',
+-- 'Vulkan.Extensions.VK_KHR_display.DisplaySurfaceCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_sample_locations.PhysicalDeviceSampleLocationsPropertiesEXT',
+-- 'Vulkan.Extensions.VK_NV_shading_rate_image.PhysicalDeviceShadingRateImagePropertiesNV',
+-- 'Rect2D', 'Vulkan.Extensions.VK_KHR_incremental_present.RectLayerKHR',
+-- 'Vulkan.Extensions.VK_EXT_sample_locations.SampleLocationsInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_display_surface_counter.SurfaceCapabilities2EXT',
+-- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR',
+-- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',
+-- 'Vulkan.Core10.Pass.getRenderAreaGranularity'
+data Extent2D = Extent2D
+  { -- | @width@ is the width of the extent.
+    width :: Word32
+  , -- | @height@ is the height of the extent.
+    height :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (Extent2D)
+#endif
+deriving instance Show Extent2D
+
+instance ToCStruct Extent2D where
+  withCStruct x f = allocaBytesAligned 8 4 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p Extent2D{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (width)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (height)
+    f
+  cStructSize = 8
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct Extent2D where
+  peekCStruct p = do
+    width <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    height <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    pure $ Extent2D
+             width height
+
+instance Storable Extent2D where
+  sizeOf ~_ = 8
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero Extent2D where
+  zero = Extent2D
+           zero
+           zero
+
+
+-- | VkExtent3D - Structure specifying a three-dimensional extent
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.CommandBufferBuilding.BufferImageCopy',
+-- 'Vulkan.Core10.CommandBufferBuilding.ImageCopy',
+-- 'Vulkan.Core10.Image.ImageCreateInfo',
+-- 'Vulkan.Core10.DeviceInitialization.ImageFormatProperties',
+-- 'Vulkan.Core10.CommandBufferBuilding.ImageResolve',
+-- 'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties',
+-- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageFormatProperties',
+-- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind'
+data Extent3D = Extent3D
+  { -- | @width@ is the width of the extent.
+    width :: Word32
+  , -- | @height@ is the height of the extent.
+    height :: Word32
+  , -- | @depth@ is the depth of the extent.
+    depth :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (Extent3D)
+#endif
+deriving instance Show Extent3D
+
+instance ToCStruct Extent3D where
+  withCStruct x f = allocaBytesAligned 12 4 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p Extent3D{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (width)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (height)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (depth)
+    f
+  cStructSize = 12
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct Extent3D where
+  peekCStruct p = do
+    width <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
+    height <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    depth <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
+    pure $ Extent3D
+             width height depth
+
+instance Storable Extent3D where
+  sizeOf ~_ = 12
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero Extent3D where
+  zero = Extent3D
+           zero
+           zero
+           zero
+
+
+-- | VkRect2D - Structure specifying a two-dimensional subregion
+--
+-- = See Also
+--
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindImageMemoryDeviceGroupInfo',
+-- 'Vulkan.Core10.CommandBufferBuilding.ClearRect',
+-- 'Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo',
+-- 'Vulkan.Extensions.VK_KHR_display_swapchain.DisplayPresentInfoKHR',
+-- 'Extent2D', 'Offset2D',
+-- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV',
+-- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo',
+-- 'Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo',
+-- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT',
+-- 'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV',
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor',
+-- 'Vulkan.Extensions.VK_KHR_swapchain.getPhysicalDevicePresentRectanglesKHR'
+data Rect2D = Rect2D
+  { -- | @offset@ is a 'Offset2D' specifying the rectangle offset.
+    offset :: Offset2D
+  , -- | @extent@ is a 'Extent2D' specifying the rectangle extent.
+    extent :: Extent2D
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (Rect2D)
+#endif
+deriving instance Show Rect2D
+
+instance ToCStruct Rect2D where
+  withCStruct x f = allocaBytesAligned 16 4 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p Rect2D{..} f = evalContT $ do
+    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr Offset2D)) (offset) . ($ ())
+    ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr Extent2D)) (extent) . ($ ())
+    lift $ f
+  cStructSize = 16
+  cStructAlignment = 4
+  pokeZeroCStruct p f = evalContT $ do
+    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr Offset2D)) (zero) . ($ ())
+    ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr Extent2D)) (zero) . ($ ())
+    lift $ f
+
+instance FromCStruct Rect2D where
+  peekCStruct p = do
+    offset <- peekCStruct @Offset2D ((p `plusPtr` 0 :: Ptr Offset2D))
+    extent <- peekCStruct @Extent2D ((p `plusPtr` 8 :: Ptr Extent2D))
+    pure $ Rect2D
+             offset extent
+
+instance Zero Rect2D where
+  zero = Rect2D
+           zero
+           zero
+
+
+-- | VkBool32 - Vulkan boolean type
+--
+-- = Description
+--
+-- 'TRUE' represents a boolean __True__ (integer 1) value, and 'FALSE' a
+-- boolean __False__ (integer 0) value.
+--
+-- All values returned from a Vulkan implementation in a 'Bool32' will be
+-- either 'TRUE' or 'FALSE'.
+--
+-- Applications /must/ not pass any other values than 'TRUE' or 'FALSE'
+-- into a Vulkan implementation where a 'Bool32' is expected.
+--
+-- = See Also
+--
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureBuildGeometryInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureCreateGeometryTypeInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryInstancesDataKHR',
+-- 'Vulkan.Extensions.VK_EXT_conditional_rendering.CommandBufferInheritanceConditionalRenderingInfoEXT',
+-- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',
+-- 'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationBufferCreateInfoNV',
+-- 'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationImageCreateInfoNV',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.DescriptorSetLayoutSupport',
+-- 'Vulkan.Extensions.VK_AMD_display_native_hdr.DisplayNativeHdrSurfaceCapabilitiesAMD',
+-- 'Vulkan.Extensions.VK_KHR_display_swapchain.DisplayPresentInfoKHR',
+-- 'Vulkan.Extensions.VK_KHR_display.DisplayPropertiesKHR',
+-- 'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT',
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutTokenNV',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedRequirements',
+-- 'Vulkan.Extensions.VK_INTEL_performance_query.PerformanceOverrideInfoINTEL',
+-- 'Vulkan.Extensions.VK_INTEL_performance_query.PerformanceValueDataINTEL',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage.PhysicalDevice16BitStorageFeatures',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage.PhysicalDevice8BitStorageFeatures',
+-- 'Vulkan.Extensions.VK_EXT_astc_decode_mode.PhysicalDeviceASTCDecodeFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeatures',
+-- 'Vulkan.Extensions.VK_EXT_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeaturesEXT',
+-- 'Vulkan.Extensions.VK_AMD_device_coherent_memory.PhysicalDeviceCoherentMemoryFeaturesAMD',
+-- 'Vulkan.Extensions.VK_NV_compute_shader_derivatives.PhysicalDeviceComputeShaderDerivativesFeaturesNV',
+-- 'Vulkan.Extensions.VK_EXT_conditional_rendering.PhysicalDeviceConditionalRenderingFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.PhysicalDeviceConservativeRasterizationPropertiesEXT',
+-- 'Vulkan.Extensions.VK_NV_cooperative_matrix.PhysicalDeviceCooperativeMatrixFeaturesNV',
+-- 'Vulkan.Extensions.VK_NV_corner_sampled_image.PhysicalDeviceCornerSampledImageFeaturesNV',
+-- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PhysicalDeviceCoverageReductionModeFeaturesNV',
+-- 'Vulkan.Extensions.VK_EXT_custom_border_color.PhysicalDeviceCustomBorderColorFeaturesEXT',
+-- 'Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing.PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV',
+-- 'Vulkan.Extensions.VK_EXT_depth_clip_enable.PhysicalDeviceDepthClipEnableFeaturesEXT',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties',
+-- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingFeatures',
+-- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties',
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsFeaturesNV',
+-- 'Vulkan.Extensions.VK_NV_device_diagnostics_config.PhysicalDeviceDiagnosticsConfigFeaturesNV',
+-- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PhysicalDeviceExclusiveScissorFeaturesNV',
+-- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceFeatures',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls.PhysicalDeviceFloatControlsProperties',
+-- 'Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapPropertiesEXT',
+-- 'Vulkan.Extensions.VK_NV_fragment_shader_barycentric.PhysicalDeviceFragmentShaderBarycentricFeaturesNV',
+-- 'Vulkan.Extensions.VK_EXT_fragment_shader_interlock.PhysicalDeviceFragmentShaderInterlockFeaturesEXT',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.PhysicalDeviceGroupProperties',
+-- 'Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset.PhysicalDeviceHostQueryResetFeatures',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.PhysicalDeviceImagelessFramebufferFeatures',
+-- 'Vulkan.Extensions.VK_EXT_index_type_uint8.PhysicalDeviceIndexTypeUint8FeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockFeaturesEXT',
+-- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits',
+-- 'Vulkan.Extensions.VK_EXT_line_rasterization.PhysicalDeviceLineRasterizationFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_memory_priority.PhysicalDeviceMemoryPriorityFeaturesEXT',
+-- 'Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderFeaturesNV',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewFeatures',
+-- 'Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX',
+-- 'Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryFeaturesKHR',
+-- 'Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryPropertiesKHR',
+-- 'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PhysicalDevicePipelineCreationCacheControlFeaturesEXT',
+-- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PhysicalDevicePipelineExecutablePropertiesFeaturesKHR',
+-- 'Vulkan.Extensions.VK_EXT_private_data.PhysicalDevicePrivateDataFeaturesEXT',
+-- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryFeatures',
+-- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryProperties',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing.PhysicalDeviceRayTracingFeaturesKHR',
+-- 'Vulkan.Extensions.VK_NV_representative_fragment_test.PhysicalDeviceRepresentativeFragmentTestFeaturesNV',
+-- 'Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2FeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_sample_locations.PhysicalDeviceSampleLocationsPropertiesEXT',
+-- 'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.PhysicalDeviceSamplerFilterMinmaxProperties',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.PhysicalDeviceSamplerYcbcrConversionFeatures',
+-- 'Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout.PhysicalDeviceScalarBlockLayoutFeatures',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.PhysicalDeviceSeparateDepthStencilLayoutsFeatures',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_atomic_int64.PhysicalDeviceShaderAtomicInt64Features',
+-- 'Vulkan.Extensions.VK_KHR_shader_clock.PhysicalDeviceShaderClockFeaturesKHR',
+-- 'Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation.PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters.PhysicalDeviceShaderDrawParametersFeatures',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8.PhysicalDeviceShaderFloat16Int8Features',
+-- 'Vulkan.Extensions.VK_NV_shader_image_footprint.PhysicalDeviceShaderImageFootprintFeaturesNV',
+-- 'Vulkan.Extensions.VK_INTEL_shader_integer_functions2.PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL',
+-- 'Vulkan.Extensions.VK_NV_shader_sm_builtins.PhysicalDeviceShaderSMBuiltinsFeaturesNV',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types.PhysicalDeviceShaderSubgroupExtendedTypesFeatures',
+-- 'Vulkan.Extensions.VK_NV_shading_rate_image.PhysicalDeviceShadingRateImageFeaturesNV',
+-- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceSparseProperties',
+-- 'Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup.PhysicalDeviceSubgroupProperties',
+-- 'Vulkan.Extensions.VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr.PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.PhysicalDeviceTimelineSemaphoreFeatures',
+-- 'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout.PhysicalDeviceUniformBufferStandardLayoutFeatures',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers.PhysicalDeviceVariablePointersFeatures',
+-- 'Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorFeaturesEXT',
+-- 'Vulkan.Core12.PhysicalDeviceVulkan11Features',
+-- 'Vulkan.Core12.PhysicalDeviceVulkan11Properties',
+-- 'Vulkan.Core12.PhysicalDeviceVulkan12Features',
+-- 'Vulkan.Core12.PhysicalDeviceVulkan12Properties',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model.PhysicalDeviceVulkanMemoryModelFeatures',
+-- 'Vulkan.Extensions.VK_EXT_ycbcr_image_arrays.PhysicalDeviceYcbcrImageArraysFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PipelineColorBlendAdvancedStateCreateInfoEXT',
+-- 'Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState',
+-- 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo',
+-- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.PipelineCoverageModulationStateCreateInfoNV',
+-- 'Vulkan.Extensions.VK_NV_fragment_coverage_to_color.PipelineCoverageToColorStateCreateInfoNV',
+-- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo',
+-- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutableInternalRepresentationKHR',
+-- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutableStatisticValueKHR',
+-- 'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo',
+-- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo',
+-- 'Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT',
+-- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo',
+-- 'Vulkan.Extensions.VK_NV_representative_fragment_test.PipelineRepresentativeFragmentTestStateCreateInfoNV',
+-- 'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV',
+-- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV',
+-- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.ProtectedSubmitInfo',
+-- 'Vulkan.Core10.Sampler.SamplerCreateInfo',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo',
+-- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceCapabilitiesFullScreenExclusiveEXT',
+-- 'Vulkan.Extensions.VK_KHR_surface_protected_capabilities.SurfaceProtectedCapabilitiesKHR',
+-- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_AMD_display_native_hdr.SwapchainDisplayNativeHdrCreateInfoAMD',
+-- 'Vulkan.Extensions.VK_AMD_texture_gather_bias_lod.TextureLODGatherFormatPropertiesAMD',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdExecuteGeneratedCommandsNV',
+-- 'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceSupportKHR',
+-- 'Vulkan.Extensions.VK_AMD_display_native_hdr.setLocalDimmingAMD',
+-- 'Vulkan.Core10.Fence.waitForFences'
+newtype Bool32 = Bool32 Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- No documentation found for Nested "VkBool32" "VK_FALSE"
+pattern FALSE = Bool32 0
+-- No documentation found for Nested "VkBool32" "VK_TRUE"
+pattern TRUE = Bool32 1
+{-# complete FALSE,
+             TRUE :: Bool32 #-}
+
+instance Show Bool32 where
+  showsPrec p = \case
+    FALSE -> showString "FALSE"
+    TRUE -> showString "TRUE"
+    Bool32 x -> showParen (p >= 11) (showString "Bool32 " . showsPrec 11 x)
+
+instance Read Bool32 where
+  readPrec = parens (choose [("FALSE", pure FALSE)
+                            , ("TRUE", pure TRUE)]
+                     +++
+                     prec 10 (do
+                       expectP (Ident "Bool32")
+                       v <- step readPrec
+                       pure (Bool32 v)))
+
+
+-- | VkSampleMask - Mask of sample coverage information
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'
+type SampleMask = Word32
+
+
+-- | VkFlags - Vulkan bitmasks
+--
+-- = Description
+--
+-- Bitmasks are passed to many commands and structures to compactly
+-- represent options, but 'Flags' is not used directly in the API. Instead,
+-- a @Vk*Flags@ type which is an alias of 'Flags', and whose name matches
+-- the corresponding @Vk*FlagBits@ that are valid for that type, is used.
+--
+-- Any @Vk*Flags@ member or parameter used in the API as an input /must/ be
+-- a valid combination of bit flags. A valid combination is either zero or
+-- the bitwise OR of valid bit flags. A bit flag is valid if:
+--
+-- -   The bit flag is defined as part of the @Vk*FlagBits@ type, where the
+--     bits type is obtained by taking the flag type and replacing the
+--     trailing 'Flags' with @FlagBits@. For example, a flag value of type
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.ColorComponentFlags'
+--     /must/ contain only bit flags defined by
+--     'Vulkan.Core10.Enums.ColorComponentFlagBits.ColorComponentFlagBits'.
+--
+-- -   The flag is allowed in the context in which it is being used. For
+--     example, in some cases, certain bit flags or combinations of bit
+--     flags are mutually exclusive.
+--
+-- Any @Vk*Flags@ member or parameter returned from a query command or
+-- otherwise output from Vulkan to the application /may/ contain bit flags
+-- undefined in its corresponding @Vk*FlagBits@ type. An application
+-- /cannot/ rely on the state of these unspecified bits.
+--
+-- Only the low-order 31 bits (bit positions zero through 30) are available
+-- for use as flag bits.
+--
+-- Note
+--
+-- This restriction is due to poorly defined behavior by C compilers given
+-- a C enumerant value of @0x80000000@. In some cases adding this enumerant
+-- value may increase the size of the underlying @Vk*FlagBits@ type,
+-- breaking the ABI.
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.Enums.ColorComponentFlagBits.ColorComponentFlags'
+type Flags = Word32
+
+
+-- | VkDeviceSize - Vulkan device memory size and offsets
+--
+-- = See Also
+--
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryAabbsDataKHR',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryTrianglesDataKHR',
+-- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferPropertiesANDROID',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing.BindAccelerationStructureMemoryInfoKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo',
+-- 'Vulkan.Core10.CommandBufferBuilding.BufferCopy',
+-- 'Vulkan.Core10.Buffer.BufferCreateInfo',
+-- 'Vulkan.Core10.CommandBufferBuilding.BufferImageCopy',
+-- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier',
+-- 'Vulkan.Core10.BufferView.BufferViewCreateInfo',
+-- 'Vulkan.Extensions.VK_EXT_conditional_rendering.ConditionalRenderingBeginInfoEXT',
+-- 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo',
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsInfoNV',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryAABBNV',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV',
+-- 'Vulkan.Core10.DeviceInitialization.ImageFormatProperties',
+-- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewAddressPropertiesNVX',
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsStreamNV',
+-- 'Vulkan.Core10.Memory.MappedMemoryRange',
+-- 'Vulkan.Core10.Memory.MemoryAllocateInfo',
+-- 'Vulkan.Core10.DeviceInitialization.MemoryHeap',
+-- 'Vulkan.Core10.MemoryManagement.MemoryRequirements',
+-- 'Vulkan.Extensions.VK_EXT_external_memory_host.PhysicalDeviceExternalMemoryHostPropertiesEXT',
+-- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.PhysicalDeviceMaintenance3Properties',
+-- 'Vulkan.Extensions.VK_EXT_memory_budget.PhysicalDeviceMemoryBudgetPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2PropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT',
+-- 'Vulkan.Core12.PhysicalDeviceVulkan11Properties',
+-- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind',
+-- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryRequirements',
+-- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseMemoryBind',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing.StridedBufferRegionKHR',
+-- 'Vulkan.Core10.Image.SubresourceLayout',
+-- 'Vulkan.Core10.MemoryManagement.bindBufferMemory',
+-- 'Vulkan.Core10.MemoryManagement.bindImageMemory',
+-- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT',
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer',
+-- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBindTransformFeedbackBuffersEXT',
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing.cmdBuildAccelerationStructureIndirectKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults',
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect',
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCount',
+-- 'Vulkan.Extensions.VK_AMD_draw_indirect_count.cmdDrawIndexedIndirectCountAMD',
+-- 'Vulkan.Extensions.VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCountKHR',
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect',
+-- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdDrawIndirectByteCountEXT',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndirectCount',
+-- 'Vulkan.Extensions.VK_AMD_draw_indirect_count.cmdDrawIndirectCountAMD',
+-- 'Vulkan.Extensions.VK_KHR_draw_indirect_count.cmdDrawIndirectCountKHR',
+-- 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectCountNV',
+-- 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectNV',
+-- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT',
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdFillBuffer',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing.cmdTraceRaysIndirectKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV',
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdUpdateBuffer',
+-- 'Vulkan.Extensions.VK_AMD_buffer_marker.cmdWriteBufferMarkerAMD',
+-- 'Vulkan.Core10.Memory.getDeviceMemoryCommitment',
+-- 'Vulkan.Core10.Query.getQueryPoolResults',
+-- 'Vulkan.Core10.Memory.mapMemory'
+type DeviceSize = Word64
+
+
+-- | VkDeviceAddress - Vulkan device address type
+--
+-- = See Also
+--
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.BindIndexBufferIndirectCommandNV',
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.BindVertexBufferIndirectCommandNV',
+-- 'Vulkan.Extensions.VK_EXT_buffer_device_address.BufferDeviceAddressCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing.DeviceOrHostAddressConstKHR',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing.DeviceOrHostAddressKHR',
+-- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewAddressPropertiesNVX'
+type DeviceAddress = Word64
+
diff --git a/src/Vulkan/Core10/FundamentalTypes.hs-boot b/src/Vulkan/Core10/FundamentalTypes.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core10/FundamentalTypes.hs-boot
@@ -0,0 +1,146 @@
+{-# language CPP #-}
+module Vulkan.Core10.FundamentalTypes  ( Extent2D
+                                       , Extent3D
+                                       , Offset2D
+                                       , Offset3D
+                                       , Rect2D
+                                       , Bool32
+                                       , DeviceAddress
+                                       , DeviceSize
+                                       ) where
+
+import Data.Word (Word64)
+import Data.Kind (Type)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+data Extent2D
+
+instance ToCStruct Extent2D
+instance Show Extent2D
+
+instance FromCStruct Extent2D
+
+
+data Extent3D
+
+instance ToCStruct Extent3D
+instance Show Extent3D
+
+instance FromCStruct Extent3D
+
+
+data Offset2D
+
+instance ToCStruct Offset2D
+instance Show Offset2D
+
+instance FromCStruct Offset2D
+
+
+data Offset3D
+
+instance ToCStruct Offset3D
+instance Show Offset3D
+
+instance FromCStruct Offset3D
+
+
+data Rect2D
+
+instance ToCStruct Rect2D
+instance Show Rect2D
+
+instance FromCStruct Rect2D
+
+
+data Bool32
+
+
+-- | VkDeviceAddress - Vulkan device address type
+--
+-- = See Also
+--
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.BindIndexBufferIndirectCommandNV',
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.BindVertexBufferIndirectCommandNV',
+-- 'Vulkan.Extensions.VK_EXT_buffer_device_address.BufferDeviceAddressCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing.DeviceOrHostAddressConstKHR',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing.DeviceOrHostAddressKHR',
+-- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewAddressPropertiesNVX'
+type DeviceAddress = Word64
+
+
+-- | VkDeviceSize - Vulkan device memory size and offsets
+--
+-- = See Also
+--
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryAabbsDataKHR',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryTrianglesDataKHR',
+-- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferPropertiesANDROID',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing.BindAccelerationStructureMemoryInfoKHR',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo',
+-- 'Vulkan.Core10.CommandBufferBuilding.BufferCopy',
+-- 'Vulkan.Core10.Buffer.BufferCreateInfo',
+-- 'Vulkan.Core10.CommandBufferBuilding.BufferImageCopy',
+-- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier',
+-- 'Vulkan.Core10.BufferView.BufferViewCreateInfo',
+-- 'Vulkan.Extensions.VK_EXT_conditional_rendering.ConditionalRenderingBeginInfoEXT',
+-- 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo',
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsInfoNV',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryAABBNV',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV',
+-- 'Vulkan.Core10.DeviceInitialization.ImageFormatProperties',
+-- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewAddressPropertiesNVX',
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsStreamNV',
+-- 'Vulkan.Core10.Memory.MappedMemoryRange',
+-- 'Vulkan.Core10.Memory.MemoryAllocateInfo',
+-- 'Vulkan.Core10.DeviceInitialization.MemoryHeap',
+-- 'Vulkan.Core10.MemoryManagement.MemoryRequirements',
+-- 'Vulkan.Extensions.VK_EXT_external_memory_host.PhysicalDeviceExternalMemoryHostPropertiesEXT',
+-- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.PhysicalDeviceMaintenance3Properties',
+-- 'Vulkan.Extensions.VK_EXT_memory_budget.PhysicalDeviceMemoryBudgetPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2PropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT',
+-- 'Vulkan.Core12.PhysicalDeviceVulkan11Properties',
+-- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind',
+-- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryRequirements',
+-- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseMemoryBind',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing.StridedBufferRegionKHR',
+-- 'Vulkan.Core10.Image.SubresourceLayout',
+-- 'Vulkan.Core10.MemoryManagement.bindBufferMemory',
+-- 'Vulkan.Core10.MemoryManagement.bindImageMemory',
+-- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT',
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer',
+-- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBindTransformFeedbackBuffersEXT',
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing.cmdBuildAccelerationStructureIndirectKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults',
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect',
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCount',
+-- 'Vulkan.Extensions.VK_AMD_draw_indirect_count.cmdDrawIndexedIndirectCountAMD',
+-- 'Vulkan.Extensions.VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCountKHR',
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect',
+-- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdDrawIndirectByteCountEXT',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndirectCount',
+-- 'Vulkan.Extensions.VK_AMD_draw_indirect_count.cmdDrawIndirectCountAMD',
+-- 'Vulkan.Extensions.VK_KHR_draw_indirect_count.cmdDrawIndirectCountKHR',
+-- 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectCountNV',
+-- 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectNV',
+-- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT',
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdFillBuffer',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing.cmdTraceRaysIndirectKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV',
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdUpdateBuffer',
+-- 'Vulkan.Extensions.VK_AMD_buffer_marker.cmdWriteBufferMarkerAMD',
+-- 'Vulkan.Core10.Memory.getDeviceMemoryCommitment',
+-- 'Vulkan.Core10.Query.getQueryPoolResults',
+-- 'Vulkan.Core10.Memory.mapMemory'
+type DeviceSize = Word64
+
diff --git a/src/Vulkan/Core10/Image.hs b/src/Vulkan/Core10/Image.hs
--- a/src/Vulkan/Core10/Image.hs
+++ b/src/Vulkan/Core10/Image.hs
@@ -3,9 +3,10 @@
                             , withImage
                             , destroyImage
                             , getImageSubresourceLayout
-                            , ImageSubresource(..)
                             , ImageCreateInfo(..)
                             , SubresourceLayout(..)
+                            , Image(..)
+                            , ImageLayout(..)
                             ) where
 
 import Control.Exception.Base (bracket)
@@ -53,12 +54,12 @@
 import Vulkan.Dynamic (DeviceCmds(pVkCreateImage))
 import Vulkan.Dynamic (DeviceCmds(pVkDestroyImage))
 import Vulkan.Dynamic (DeviceCmds(pVkGetImageSubresourceLayout))
-import Vulkan.Core10.BaseType (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
 import Vulkan.Core10.Handles (Device_T)
 import Vulkan.CStruct.Extends (Extends)
 import Vulkan.CStruct.Extends (Extendss)
 import Vulkan.CStruct.Extends (Extensible(..))
-import Vulkan.Core10.SharedTypes (Extent3D)
+import Vulkan.Core10.FundamentalTypes (Extent3D)
 import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (ExternalFormatANDROID)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory (ExternalMemoryImageCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory (ExternalMemoryImageCreateInfoNV)
@@ -67,13 +68,13 @@
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Handles (Image)
 import Vulkan.Core10.Handles (Image(..))
-import Vulkan.Core10.Enums.ImageAspectFlagBits (ImageAspectFlags)
 import Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_drm_format_modifier (ImageDrmFormatModifierExplicitCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_drm_format_modifier (ImageDrmFormatModifierListCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_image_format_list (ImageFormatListCreateInfo)
 import Vulkan.Core10.Enums.ImageLayout (ImageLayout)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage (ImageStencilUsageCreateInfo)
+import Vulkan.Core10.SparseResourceMemoryManagement (ImageSubresource)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (ImageSwapchainCreateInfoKHR)
 import Vulkan.Core10.Enums.ImageTiling (ImageTiling)
 import Vulkan.Core10.Enums.ImageType (ImageType)
@@ -94,6 +95,8 @@
 import Vulkan.Zero (Zero(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_CREATE_INFO))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.Handles (Image(..))
+import Vulkan.Core10.Enums.ImageLayout (ImageLayout(..))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -347,7 +350,8 @@
 -- -   @image@ /must/ be a valid 'Vulkan.Core10.Handles.Image' handle
 --
 -- -   @pSubresource@ /must/ be a valid pointer to a valid
---     'ImageSubresource' structure
+--     'Vulkan.Core10.SparseResourceMemoryManagement.ImageSubresource'
+--     structure
 --
 -- -   @pLayout@ /must/ be a valid pointer to a 'SubresourceLayout'
 --     structure
@@ -358,15 +362,17 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.Image',
--- 'ImageSubresource', 'SubresourceLayout'
+-- 'Vulkan.Core10.SparseResourceMemoryManagement.ImageSubresource',
+-- 'SubresourceLayout'
 getImageSubresourceLayout :: forall io
                            . (MonadIO io)
                           => -- | @device@ is the logical device that owns the image.
                              Device
                           -> -- | @image@ is the image whose layout is being queried.
                              Image
-                          -> -- | @pSubresource@ is a pointer to a 'ImageSubresource' structure selecting
-                             -- a specific image for the image subresource.
+                          -> -- | @pSubresource@ is a pointer to a
+                             -- 'Vulkan.Core10.SparseResourceMemoryManagement.ImageSubresource'
+                             -- structure selecting a specific image for the image subresource.
                              ImageSubresource
                           -> io (SubresourceLayout)
 getImageSubresourceLayout device image subresource = liftIO . evalContT $ do
@@ -381,72 +387,6 @@
   pure $ (pLayout)
 
 
--- | VkImageSubresource - Structure specifying an image subresource
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags',
--- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind',
--- 'getImageSubresourceLayout'
-data ImageSubresource = ImageSubresource
-  { -- | @aspectMask@ is a
-    -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags' selecting the
-    -- image /aspect/.
-    --
-    -- @aspectMask@ /must/ be a valid combination of
-    -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits' values
-    --
-    -- @aspectMask@ /must/ not be @0@
-    aspectMask :: ImageAspectFlags
-  , -- | @mipLevel@ selects the mipmap level.
-    mipLevel :: Word32
-  , -- | @arrayLayer@ selects the array layer.
-    arrayLayer :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (ImageSubresource)
-#endif
-deriving instance Show ImageSubresource
-
-instance ToCStruct ImageSubresource where
-  withCStruct x f = allocaBytesAligned 12 4 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p ImageSubresource{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr ImageAspectFlags)) (aspectMask)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (mipLevel)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (arrayLayer)
-    f
-  cStructSize = 12
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr ImageAspectFlags)) (zero)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct ImageSubresource where
-  peekCStruct p = do
-    aspectMask <- peek @ImageAspectFlags ((p `plusPtr` 0 :: Ptr ImageAspectFlags))
-    mipLevel <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
-    arrayLayer <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
-    pure $ ImageSubresource
-             aspectMask mipLevel arrayLayer
-
-instance Storable ImageSubresource where
-  sizeOf ~_ = 12
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero ImageSubresource where
-  zero = ImageSubresource
-           zero
-           zero
-           zero
-
-
 -- | VkImageCreateInfo - Structure specifying the parameters of a newly
 -- created image object
 --
@@ -1328,7 +1268,7 @@
 -- \<\/section>
 -- = See Also
 --
--- 'Vulkan.Core10.SharedTypes.Extent3D',
+-- 'Vulkan.Core10.FundamentalTypes.Extent3D',
 -- 'Vulkan.Core10.Enums.Format.Format',
 -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlags',
 -- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
@@ -1339,7 +1279,7 @@
 -- 'Vulkan.Core10.Enums.SharingMode.SharingMode',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'createImage'
 data ImageCreateInfo (es :: [Type]) = ImageCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is a bitmask of
     -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits' describing
@@ -1352,8 +1292,8 @@
   , -- | @format@ is a 'Vulkan.Core10.Enums.Format.Format' describing the format
     -- and type of the texel blocks that will be contained in the image.
     format :: Format
-  , -- | @extent@ is a 'Vulkan.Core10.SharedTypes.Extent3D' describing the number
-    -- of data elements in each dimension of the base level.
+  , -- | @extent@ is a 'Vulkan.Core10.FundamentalTypes.Extent3D' describing the
+    -- number of data elements in each dimension of the base level.
     extent :: Extent3D
   , -- | @mipLevels@ describes the number of levels of detail available for
     -- minified sampling of the image.
@@ -1524,8 +1464,9 @@
 --
 -- If the image has a /single-plane/ color format and its tiling is
 -- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' , then the
--- @aspectMask@ member of 'ImageSubresource' /must/ be
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'.
+-- @aspectMask@ member of
+-- 'Vulkan.Core10.SparseResourceMemoryManagement.ImageSubresource' /must/
+-- be 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'.
 --
 -- If the image has a depth\/stencil format and its tiling is
 -- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' , then
@@ -1542,8 +1483,9 @@
 -- If the image has a
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>
 -- and its tiling is 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR'
--- , then the @aspectMask@ member of 'ImageSubresource' /must/ be
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
+-- , then the @aspectMask@ member of
+-- 'Vulkan.Core10.SparseResourceMemoryManagement.ImageSubresource' /must/
+-- be 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
 -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT', or
 -- (for 3-plane formats only)
 -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'.
@@ -1555,9 +1497,10 @@
 --
 -- If the image’s tiling is
 -- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT',
--- then the @aspectMask@ member of 'ImageSubresource' /must/ be one of
--- @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@, where the maximum allowed
--- plane index @i@ is defined by the
+-- then the @aspectMask@ member of
+-- 'Vulkan.Core10.SparseResourceMemoryManagement.ImageSubresource' /must/
+-- be one of @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@, where the maximum
+-- allowed plane index @i@ is defined by the
 -- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.DrmFormatModifierPropertiesEXT'::@drmFormatModifierPlaneCount@
 -- associated with the image’s 'ImageCreateInfo'::@format@ and
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-drm-format-modifier modifier>.
@@ -1572,7 +1515,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.DeviceSize',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierExplicitCreateInfoEXT',
 -- 'getImageSubresourceLayout'
 data SubresourceLayout = SubresourceLayout
diff --git a/src/Vulkan/Core10/Image.hs-boot b/src/Vulkan/Core10/Image.hs-boot
--- a/src/Vulkan/Core10/Image.hs-boot
+++ b/src/Vulkan/Core10/Image.hs-boot
@@ -1,6 +1,5 @@
 {-# language CPP #-}
 module Vulkan.Core10.Image  ( ImageCreateInfo
-                            , ImageSubresource
                             , SubresourceLayout
                             ) where
 
@@ -18,14 +17,6 @@
 instance Show (Chain es) => Show (ImageCreateInfo es)
 
 instance (Extendss ImageCreateInfo es, PeekChain es) => FromCStruct (ImageCreateInfo es)
-
-
-data ImageSubresource
-
-instance ToCStruct ImageSubresource
-instance Show ImageSubresource
-
-instance FromCStruct ImageSubresource
 
 
 data SubresourceLayout
diff --git a/src/Vulkan/Core10/ImageView.hs b/src/Vulkan/Core10/ImageView.hs
--- a/src/Vulkan/Core10/ImageView.hs
+++ b/src/Vulkan/Core10/ImageView.hs
@@ -3,7 +3,13 @@
                                 , withImageView
                                 , destroyImageView
                                 , ComponentMapping(..)
+                                , ImageSubresourceRange(..)
                                 , ImageViewCreateInfo(..)
+                                , ImageView(..)
+                                , ImageViewType(..)
+                                , ComponentSwizzle(..)
+                                , ImageViewCreateFlagBits(..)
+                                , ImageViewCreateFlags
                                 ) where
 
 import Control.Exception.Base (bracket)
@@ -33,6 +39,7 @@
 import GHC.IO.Exception (IOException(..))
 import Foreign.Ptr (FunPtr)
 import Foreign.Ptr (Ptr)
+import Data.Word (Word32)
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
 import Vulkan.CStruct.Extends (forgetExtensions)
@@ -52,7 +59,7 @@
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Handles (Image)
-import Vulkan.Core10.SharedTypes (ImageSubresourceRange)
+import Vulkan.Core10.Enums.ImageAspectFlagBits (ImageAspectFlags)
 import Vulkan.Core10.Handles (ImageView)
 import Vulkan.Core10.Handles (ImageView(..))
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_astc_decode_mode (ImageViewASTCDecodeModeEXT)
@@ -74,6 +81,11 @@
 import Vulkan.Zero (Zero(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.Enums.ComponentSwizzle (ComponentSwizzle(..))
+import Vulkan.Core10.Handles (ImageView(..))
+import Vulkan.Core10.Enums.ImageViewCreateFlagBits (ImageViewCreateFlagBits(..))
+import Vulkan.Core10.Enums.ImageViewCreateFlagBits (ImageViewCreateFlags)
+import Vulkan.Core10.Enums.ImageViewType (ImageViewType(..))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -308,6 +320,189 @@
            zero
 
 
+-- | VkImageSubresourceRange - Structure specifying an image subresource
+-- range
+--
+-- = Description
+--
+-- The number of mipmap levels and array layers /must/ be a subset of the
+-- image subresources in the image. If an application wants to use all mip
+-- levels or layers in an image after the @baseMipLevel@ or
+-- @baseArrayLayer@, it /can/ set @levelCount@ and @layerCount@ to the
+-- special values 'Vulkan.Core10.APIConstants.REMAINING_MIP_LEVELS' and
+-- 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS' without knowing the
+-- exact number of mip levels or layers.
+--
+-- For cube and cube array image views, the layers of the image view
+-- starting at @baseArrayLayer@ correspond to faces in the order +X, -X,
+-- +Y, -Y, +Z, -Z. For cube arrays, each set of six sequential layers is a
+-- single cube, so the number of cube maps in a cube map array view is
+-- /@layerCount@ \/ 6/, and image array layer (@baseArrayLayer@ + i) is
+-- face index (i mod 6) of cube /i \/ 6/. If the number of layers in the
+-- view, whether set explicitly in @layerCount@ or implied by
+-- 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', is not a multiple
+-- of 6, the last cube map in the array /must/ not be accessed.
+--
+-- @aspectMask@ /must/ be only
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT',
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT' if
+-- @format@ is a color, depth-only or stencil-only format, respectively,
+-- except if @format@ is a
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>.
+-- If using a depth\/stencil format with both depth and stencil components,
+-- @aspectMask@ /must/ include at least one of
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' and
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT', and
+-- /can/ include both.
+--
+-- When the 'ImageSubresourceRange' structure is used to select a subset of
+-- the slices of a 3D image’s mip level in order to create a 2D or 2D array
+-- image view of a 3D image created with
+-- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT',
+-- @baseArrayLayer@ and @layerCount@ specify the first slice index and the
+-- number of slices to include in the created image view. Such an image
+-- view /can/ be used as a framebuffer attachment that refers only to the
+-- specified range of slices of the selected mip level. However, any layout
+-- transitions performed on such an attachment view during a render pass
+-- instance still apply to the entire subresource referenced which includes
+-- all the slices of the selected mip level.
+--
+-- When using an image view of a depth\/stencil image to populate a
+-- descriptor set (e.g. for sampling in the shader, or for use as an input
+-- attachment), the @aspectMask@ /must/ only include one bit and selects
+-- whether the image view is used for depth reads (i.e. using a
+-- floating-point sampler or input attachment in the shader) or stencil
+-- reads (i.e. using an unsigned integer sampler or input attachment in the
+-- shader). When an image view of a depth\/stencil image is used as a
+-- depth\/stencil framebuffer attachment, the @aspectMask@ is ignored and
+-- both depth and stencil image subresources are used.
+--
+-- The 'ComponentMapping' @components@ member describes a remapping from
+-- components of the image to components of the vector returned by shader
+-- image instructions. This remapping /must/ be identity for storage image
+-- descriptors, input attachment descriptors, framebuffer attachments, and
+-- any 'Vulkan.Core10.Handles.ImageView' used with a combined image sampler
+-- that enables
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>.
+--
+-- When creating a 'Vulkan.Core10.Handles.ImageView', if
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+-- is enabled in the sampler, the @aspectMask@ of a @subresourceRange@ used
+-- by the 'Vulkan.Core10.Handles.ImageView' /must/ be
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'.
+--
+-- When creating a 'Vulkan.Core10.Handles.ImageView', if sampler Y′CBCR
+-- conversion is not enabled in the sampler and the image @format@ is
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>,
+-- the image /must/ have been created with
+-- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT',
+-- and the @aspectMask@ of the 'Vulkan.Core10.Handles.ImageView'’s
+-- @subresourceRange@ /must/ be
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' or
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'.
+--
+-- == Valid Usage
+--
+-- -   If @levelCount@ is not
+--     'Vulkan.Core10.APIConstants.REMAINING_MIP_LEVELS', it /must/ be
+--     greater than @0@
+--
+-- -   If @layerCount@ is not
+--     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', it /must/ be
+--     greater than @0@
+--
+-- -   If @aspectMask@ includes
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT',
+--     then it /must/ not include any of
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',
+--     or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
+--
+-- -   @aspectMask@ /must/ not include
+--     @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@ for any index @i@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   @aspectMask@ /must/ be a valid combination of
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits' values
+--
+-- -   @aspectMask@ /must/ not be @0@
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags',
+-- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier', 'ImageViewCreateInfo',
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdClearColorImage',
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdClearDepthStencilImage'
+data ImageSubresourceRange = ImageSubresourceRange
+  { -- | @aspectMask@ is a bitmask of
+    -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits' specifying
+    -- which aspect(s) of the image are included in the view.
+    aspectMask :: ImageAspectFlags
+  , -- | @baseMipLevel@ is the first mipmap level accessible to the view.
+    baseMipLevel :: Word32
+  , -- | @levelCount@ is the number of mipmap levels (starting from
+    -- @baseMipLevel@) accessible to the view.
+    levelCount :: Word32
+  , -- | @baseArrayLayer@ is the first array layer accessible to the view.
+    baseArrayLayer :: Word32
+  , -- | @layerCount@ is the number of array layers (starting from
+    -- @baseArrayLayer@) accessible to the view.
+    layerCount :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ImageSubresourceRange)
+#endif
+deriving instance Show ImageSubresourceRange
+
+instance ToCStruct ImageSubresourceRange where
+  withCStruct x f = allocaBytesAligned 20 4 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ImageSubresourceRange{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr ImageAspectFlags)) (aspectMask)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (baseMipLevel)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (levelCount)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (baseArrayLayer)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (layerCount)
+    f
+  cStructSize = 20
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr ImageAspectFlags)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct ImageSubresourceRange where
+  peekCStruct p = do
+    aspectMask <- peek @ImageAspectFlags ((p `plusPtr` 0 :: Ptr ImageAspectFlags))
+    baseMipLevel <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    levelCount <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
+    baseArrayLayer <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
+    layerCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pure $ ImageSubresourceRange
+             aspectMask baseMipLevel levelCount baseArrayLayer layerCount
+
+instance Storable ImageSubresourceRange where
+  sizeOf ~_ = 20
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ImageSubresourceRange where
+  zero = ImageSubresourceRange
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
 -- | VkImageViewCreateInfo - Structure specifying parameters of a newly
 -- created image view
 --
@@ -874,19 +1069,18 @@
 --
 -- -   @components@ /must/ be a valid 'ComponentMapping' structure
 --
--- -   @subresourceRange@ /must/ be a valid
---     'Vulkan.Core10.SharedTypes.ImageSubresourceRange' structure
+-- -   @subresourceRange@ /must/ be a valid 'ImageSubresourceRange'
+--     structure
 --
 -- = See Also
 --
 -- 'ComponentMapping', 'Vulkan.Core10.Enums.Format.Format',
--- 'Vulkan.Core10.Handles.Image',
--- 'Vulkan.Core10.SharedTypes.ImageSubresourceRange',
+-- 'Vulkan.Core10.Handles.Image', 'ImageSubresourceRange',
 -- 'Vulkan.Core10.Enums.ImageViewCreateFlagBits.ImageViewCreateFlags',
 -- 'Vulkan.Core10.Enums.ImageViewType.ImageViewType',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'createImageView'
 data ImageViewCreateInfo (es :: [Type]) = ImageViewCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is a bitmask of
     -- 'Vulkan.Core10.Enums.ImageViewCreateFlagBits.ImageViewCreateFlagBits'
@@ -905,8 +1099,7 @@
     -- components (or of depth or stencil components after they have been
     -- converted into color components).
     components :: ComponentMapping
-  , -- | @subresourceRange@ is a
-    -- 'Vulkan.Core10.SharedTypes.ImageSubresourceRange' selecting the set of
+  , -- | @subresourceRange@ is a 'ImageSubresourceRange' selecting the set of
     -- mipmap levels and array layers to be accessible to the view.
     subresourceRange :: ImageSubresourceRange
   }
diff --git a/src/Vulkan/Core10/ImageView.hs-boot b/src/Vulkan/Core10/ImageView.hs-boot
--- a/src/Vulkan/Core10/ImageView.hs-boot
+++ b/src/Vulkan/Core10/ImageView.hs-boot
@@ -1,5 +1,6 @@
 {-# language CPP #-}
 module Vulkan.Core10.ImageView  ( ComponentMapping
+                                , ImageSubresourceRange
                                 , ImageViewCreateInfo
                                 ) where
 
@@ -16,6 +17,14 @@
 instance Show ComponentMapping
 
 instance FromCStruct ComponentMapping
+
+
+data ImageSubresourceRange
+
+instance ToCStruct ImageSubresourceRange
+instance Show ImageSubresourceRange
+
+instance FromCStruct ImageSubresourceRange
 
 
 type role ImageViewCreateInfo nominal
diff --git a/src/Vulkan/Core10/Memory.hs b/src/Vulkan/Core10/Memory.hs
--- a/src/Vulkan/Core10/Memory.hs
+++ b/src/Vulkan/Core10/Memory.hs
@@ -10,6 +10,7 @@
                              , getDeviceMemoryCommitment
                              , MemoryAllocateInfo(..)
                              , MappedMemoryRange(..)
+                             , MemoryMapFlags(..)
                              ) where
 
 import Control.Exception.Base (bracket)
@@ -61,7 +62,7 @@
 import Vulkan.Dynamic (DeviceCmds(pVkUnmapMemory))
 import Vulkan.Core10.Handles (DeviceMemory)
 import Vulkan.Core10.Handles (DeviceMemory(..))
-import Vulkan.Core10.BaseType (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
 import Vulkan.Core10.Handles (Device_T)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory (ExportMemoryAllocateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory (ExportMemoryAllocateInfoNV)
@@ -98,6 +99,7 @@
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MAPPED_MEMORY_RANGE))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.Enums.MemoryMapFlags (MemoryMapFlags(..))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -455,7 +457,7 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.DeviceMemory',
--- 'Vulkan.Core10.BaseType.DeviceSize',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Enums.MemoryMapFlags.MemoryMapFlags'
 mapMemory :: forall io
            . (MonadIO io)
@@ -717,7 +719,7 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.DeviceMemory',
--- 'Vulkan.Core10.BaseType.DeviceSize'
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
 getDeviceMemoryCommitment :: forall io
                            . (MonadIO io)
                           => -- | @device@ is the logical device that owns the memory.
@@ -954,8 +956,9 @@
 --     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'
 --     with @image@ that is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
 --     the Android hardware buffer’s
---     'Vulkan.Extensions.WSITypes.AHardwareBuffer'::@usage@ /must/ include
---     at least one of @AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT@ or
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AHardwareBuffer'::@usage@
+--     /must/ include at least one of
+--     @AHARDWAREBUFFER_USAGE_GPU_FRAMEBUFFER@ or
 --     @AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE@
 --
 -- -   If the parameters define an import operation, the external handle is
@@ -983,7 +986,8 @@
 --     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'
 --     structure with @image@ that is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the Android hardware
---     buffer’s 'Vulkan.Extensions.WSITypes.AHardwareBuffer'::@usage@
+--     buffer’s
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AHardwareBuffer'::@usage@
 --     includes @AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE@, the @image@
 --     /must/ have a complete mipmap chain
 --
@@ -992,9 +996,10 @@
 --     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'
 --     structure with @image@ that is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the Android hardware
---     buffer’s 'Vulkan.Extensions.WSITypes.AHardwareBuffer'::@usage@ does
---     not include @AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE@, the @image@
---     /must/ have exactly one mipmap level
+--     buffer’s
+--     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AHardwareBuffer'::@usage@
+--     does not include @AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE@, the
+--     @image@ /must/ have exactly one mipmap level
 --
 -- -   If the parameters define an import operation, the external handle is
 --     an Android hardware buffer, and the @pNext@ chain includes a
@@ -1069,10 +1074,10 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.DeviceSize',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'allocateMemory'
 data MemoryAllocateInfo (es :: [Type]) = MemoryAllocateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @allocationSize@ is the size of the allocation in bytes
     allocationSize :: DeviceSize
@@ -1184,7 +1189,7 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.DeviceMemory',
--- 'Vulkan.Core10.BaseType.DeviceSize',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'flushMappedMemoryRanges', 'invalidateMappedMemoryRanges'
 data MappedMemoryRange = MappedMemoryRange
diff --git a/src/Vulkan/Core10/MemoryManagement.hs b/src/Vulkan/Core10/MemoryManagement.hs
--- a/src/Vulkan/Core10/MemoryManagement.hs
+++ b/src/Vulkan/Core10/MemoryManagement.hs
@@ -4,6 +4,7 @@
                                        , getImageMemoryRequirements
                                        , bindImageMemory
                                        , MemoryRequirements(..)
+                                       , DeviceMemory(..)
                                        ) where
 
 import Control.Monad (unless)
@@ -40,7 +41,7 @@
 import Vulkan.Dynamic (DeviceCmds(pVkGetImageMemoryRequirements))
 import Vulkan.Core10.Handles (DeviceMemory)
 import Vulkan.Core10.Handles (DeviceMemory(..))
-import Vulkan.Core10.BaseType (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
 import Vulkan.Core10.Handles (Device_T)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
@@ -53,6 +54,7 @@
 import Vulkan.Exception (VulkanException(..))
 import Vulkan.Zero (Zero(..))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.Handles (DeviceMemory(..))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -172,8 +174,8 @@
 --
 -- -   If @buffer@ was created with
 --     'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationBufferCreateInfoNV'::@dedicatedAllocation@
---     equal to 'Vulkan.Core10.BaseType.TRUE', @memory@ /must/ have been
---     created with
+--     equal to 'Vulkan.Core10.FundamentalTypes.TRUE', @memory@ /must/ have
+--     been created with
 --     'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV'::@buffer@
 --     equal to a buffer handle created with identical creation parameters
 --     to @buffer@ and @memoryOffset@ /must/ be zero
@@ -245,7 +247,7 @@
 --
 -- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.Device',
 -- 'Vulkan.Core10.Handles.DeviceMemory',
--- 'Vulkan.Core10.BaseType.DeviceSize'
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
 bindBufferMemory :: forall io
                   . (MonadIO io)
                  => -- | @device@ is the logical device that owns the buffer and memory.
@@ -421,8 +423,8 @@
 --
 -- -   If @image@ was created with
 --     'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationImageCreateInfoNV'::@dedicatedAllocation@
---     equal to 'Vulkan.Core10.BaseType.TRUE', @memory@ /must/ have been
---     created with
+--     equal to 'Vulkan.Core10.FundamentalTypes.TRUE', @memory@ /must/ have
+--     been created with
 --     'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV'::@image@
 --     equal to an image handle created with identical creation parameters
 --     to @image@ and @memoryOffset@ /must/ be zero
@@ -483,7 +485,8 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.Handles.DeviceMemory',
--- 'Vulkan.Core10.BaseType.DeviceSize', 'Vulkan.Core10.Handles.Image'
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Handles.Image'
 bindImageMemory :: forall io
                  . (MonadIO io)
                 => -- | @device@ is the logical device that owns the image and memory.
@@ -512,7 +515,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.DeviceSize',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2',
 -- 'getBufferMemoryRequirements', 'getImageMemoryRequirements'
 data MemoryRequirements = MemoryRequirements
diff --git a/src/Vulkan/Core10/OtherTypes.hs b/src/Vulkan/Core10/OtherTypes.hs
--- a/src/Vulkan/Core10/OtherTypes.hs
+++ b/src/Vulkan/Core10/OtherTypes.hs
@@ -33,7 +33,7 @@
 import Vulkan.Core10.Enums.AccessFlagBits (AccessFlags)
 import Vulkan.Core10.Handles (Buffer)
 import Vulkan.CStruct.Extends (Chain)
-import Vulkan.Core10.BaseType (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
 import Vulkan.CStruct.Extends (Extends)
 import Vulkan.CStruct.Extends (Extendss)
 import Vulkan.CStruct.Extends (Extensible(..))
@@ -41,7 +41,7 @@
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Handles (Image)
 import Vulkan.Core10.Enums.ImageLayout (ImageLayout)
-import Vulkan.Core10.SharedTypes (ImageSubresourceRange)
+import Vulkan.Core10.ImageView (ImageSubresourceRange)
 import Vulkan.CStruct.Extends (PeekChain)
 import Vulkan.CStruct.Extends (PeekChain(..))
 import Vulkan.CStruct.Extends (PokeChain)
@@ -247,7 +247,8 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlags',
--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.BaseType.DeviceSize',
+-- 'Vulkan.Core10.Handles.Buffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdPipelineBarrier',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents'
@@ -380,43 +381,10 @@
 -- for the specified image subresource range, and the first access scope
 -- includes no access, as if @srcAccessMask@ was @0@.
 --
--- If @oldLayout@ is not equal to @newLayout@, then the memory barrier
--- defines an
+-- @oldLayout@ and @newLayout@ define an
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>
 -- for the specified image subresource range.
 --
--- Layout transitions that are performed via image memory barriers execute
--- in their entirety in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>,
--- relative to other image layout transitions submitted to the same queue,
--- including those performed by
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass render passes>.
--- In effect there is an implicit execution dependency from each such
--- layout transition to all layout transitions previously submitted to the
--- same queue.
---
--- The image layout of each image subresource of a depth\/stencil image
--- created with
--- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
--- is dependent on the last sample locations used to render to the image
--- subresource as a depth\/stencil attachment, thus when the @image@ member
--- of a 'ImageMemoryBarrier' is an image created with this flag the
--- application /can/ include a
--- 'Vulkan.Extensions.VK_EXT_sample_locations.SampleLocationsInfoEXT'
--- structure in the @pNext@ chain of 'ImageMemoryBarrier' to specify the
--- sample locations to use during the image layout transition.
---
--- If the
--- 'Vulkan.Extensions.VK_EXT_sample_locations.SampleLocationsInfoEXT'
--- structure included in the @pNext@ chain of 'ImageMemoryBarrier' does not
--- match the sample location state last used to render to the image
--- subresource range specified by @subresourceRange@ or if no
--- 'Vulkan.Extensions.VK_EXT_sample_locations.SampleLocationsInfoEXT'
--- structure is included in the @pNext@ chain of 'ImageMemoryBarrier', then
--- the contents of the given image subresource range becomes undefined as
--- if @oldLayout@ would equal
--- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED'.
---
 -- If @image@ has a multi-planar format and the image is /disjoint/, then
 -- including
 -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' in the
@@ -428,57 +396,6 @@
 --
 -- == Valid Usage
 --
--- -   @oldLayout@ /must/ be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED' or the
---     current layout of the image subresources affected by the barrier
---
--- -   @newLayout@ /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED' or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED'
---
--- -   If @image@ was created with a sharing mode of
---     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT', at least
---     one of @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ /must/ be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED'
---
--- -   If @image@ was created with a sharing mode of
---     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT', and one
---     of @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ is
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED', the other /must/
---     be 'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED' or a special
---     queue family reserved for external memory transfers, as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers>
---
--- -   If @image@ was created with a sharing mode of
---     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE' and
---     @srcQueueFamilyIndex@ is
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED',
---     @dstQueueFamilyIndex@ /must/ also be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED'
---
--- -   If @image@ was created with a sharing mode of
---     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE' and
---     @srcQueueFamilyIndex@ is not
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED', it /must/ be a
---     valid queue family or a special queue family reserved for external
---     memory transfers, as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers>
---
--- -   If @image@ was created with a sharing mode of
---     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE' and
---     @dstQueueFamilyIndex@ is not
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED', it /must/ be a
---     valid queue family or a special queue family reserved for external
---     memory transfers, as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers>
---
--- -   If @image@ was created with a sharing mode of
---     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE', and
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are not
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED', at least one of
---     them /must/ be the same as the family of the queue that will execute
---     this barrier
---
 -- -   @subresourceRange.baseMipLevel@ /must/ be less than the @mipLevels@
 --     specified in 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was
 --     created
@@ -499,99 +416,221 @@
 --     /must/ be less than or equal to the @arrayLayers@ specified in
 --     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created
 --
--- -   If @image@ has a depth\/stencil format with both depth and stencil
---     and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>
---     feature is enabled, then the @aspectMask@ member of
---     @subresourceRange@ /must/ include either or both
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' and
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
---
--- -   If @image@ has a depth\/stencil format with both depth and stencil
---     and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>
---     feature is not enabled, then the @aspectMask@ member of
---     @subresourceRange@ /must/ include both
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' and
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
---
--- -   If @image@ has a color format and either the format is single-plane
---     or the image is not disjoint then the @aspectMask@ member of
---     @subresourceRange@ /must/ only include
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---
--- -   If @image@ has a multi-planar format and the image is /disjoint/,
---     then the @aspectMask@ member of @subresourceRange@ /must/ include
---     either at least one of
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',
---     and
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT';
---     or /must/ include
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---
--- -   If @image@ has a multi-planar format with only two planes, then the
---     @aspectMask@ member of @subresourceRange@ /must/ not include
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
+-- -   If @image@ is non-sparse then it /must/ be bound completely and
+--     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
 --
--- -   If either @oldLayout@ or @newLayout@ is
+-- -   If @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     and @oldLayout@ or @newLayout@ is
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'
 --     then @image@ /must/ have been created with
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
 --     set
 --
--- -   If either @oldLayout@ or @newLayout@ is
+-- -   If @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     and @oldLayout@ or @newLayout@ is
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL'
 --     then @image@ /must/ have been created with
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
 --     set
 --
--- -   If either @oldLayout@ or @newLayout@ is
+-- -   
+--
+-- -   If @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     and @oldLayout@ or @newLayout@ is
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL'
 --     then @image@ /must/ have been created with
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
 --     set
 --
--- -   If either @oldLayout@ or @newLayout@ is
+-- -   If @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     and @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL'
+--     then @image@ /must/ have been created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT' or
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
+--     set
+--
+-- -   If @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     and @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL'
+--     then @image@ /must/ have been created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
+--     set
+--
+-- -   If @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     and @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'
+--     then @image@ /must/ have been created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
+--     set
+--
+-- -   If @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     @oldLayout@ /must/ be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED' or the
+--     current layout of the image subresources affected by the barrier
+--
+-- -   If @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     @newLayout@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED' or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED'
+--
+-- -   If @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     and @oldLayout@ or @newLayout@ is
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL'
 --     then @image@ /must/ have been created with
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
 --     set
 --
--- -   If either @oldLayout@ or @newLayout@ is
+-- -   If @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     and @oldLayout@ or @newLayout@ is
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL'
 --     then @image@ /must/ have been created with
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
 --     set
 --
--- -   If either @oldLayout@ or @newLayout@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL'
---     then @image@ /must/ have been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT' or
+-- -   If @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     and @oldLayout@ or @newLayout@ is
+--     'Vulkan.Extensions.VK_KHR_separate_depth_stencil_layouts.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR'
+--     then @image@ /must/ have been created with at least one of
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT',
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT', or
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
 --     set
 --
--- -   If either @oldLayout@ or @newLayout@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL'
+-- -   If @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     and @oldLayout@ or @newLayout@ is
+--     'Vulkan.Extensions.VK_KHR_separate_depth_stencil_layouts.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR'
 --     then @image@ /must/ have been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
 --     set
 --
--- -   If either @oldLayout@ or @newLayout@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'
---     then @image@ /must/ have been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
+-- -   If @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     and @oldLayout@ or @newLayout@ is
+--     'Vulkan.Extensions.VK_KHR_separate_depth_stencil_layouts.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR'
+--     then @image@ /must/ have been created with at least one of
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT',
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT', or
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
 --     set
 --
--- -   If @image@ is non-sparse then it /must/ be bound completely and
---     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
+-- -   If @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     and @oldLayout@ or @newLayout@ is
+--     'Vulkan.Extensions.VK_KHR_separate_depth_stencil_layouts.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR'
+--     then @image@ /must/ have been created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     set
 --
--- -   If either @oldLayout@ or @newLayout@ is
+-- -   If @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     and @oldLayout@ or @newLayout@ is
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV'
 --     then @image@ /must/ have been created with
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV'
 --     set
 --
+-- -   If @image@ has a single-plane color format or is not /disjoint/,
+--     then the @aspectMask@ member of @subresourceRange@ /must/ be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
+--
+-- -   If @image@ has a multi-planar format and the image is /disjoint/,
+--     then the @aspectMask@ member of @subresourceRange@ /must/ include
+--     either at least one of
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',
+--     and
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT';
+--     or /must/ include
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
+--
+-- -   If @image@ has a multi-planar format with only two planes, then the
+--     @aspectMask@ member of @subresourceRange@ /must/ not include
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
+--
+-- -   If @image@ has a depth\/stencil format with both depth and stencil
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>
+--     feature is enabled, then the @aspectMask@ member of
+--     @subresourceRange@ /must/ include either or both
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' and
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--
+-- -   If @image@ has a depth\/stencil format with both depth and stencil
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>
+--     feature is not enabled, then the @aspectMask@ member of
+--     @subresourceRange@ /must/ include both
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' and
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--
+-- -   If @srcQueueFamilyIndex@ is not equal to @dstQueueFamilyIndex@, at
+--     least one /must/ not be a special queue family reserved for external
+--     memory ownership transfers, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers ???>
+--
+-- -   If @image@ was created with a sharing mode of
+--     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are not equal, and
+--     one of @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ is a special
+--     queue family values reserved for external memory transfers, the
+--     other /must/ be 'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED'
+--
+-- -   If @image@ was created with a sharing mode of
+--     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE', and
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are not equal,
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ /must/ both be valid
+--     queue families, or one of the special queue family values reserved
+--     for external memory transfers, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers ???>
+--
+-- -   If @image@ was created with a sharing mode of
+--     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT', at least
+--     one of @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ /must/ be
+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED'
+--
 -- == Valid Usage (Implicit)
 --
 -- -   @sType@ /must/ be
@@ -612,19 +651,19 @@
 -- -   @image@ /must/ be a valid 'Vulkan.Core10.Handles.Image' handle
 --
 -- -   @subresourceRange@ /must/ be a valid
---     'Vulkan.Core10.SharedTypes.ImageSubresourceRange' structure
+--     'Vulkan.Core10.ImageView.ImageSubresourceRange' structure
 --
 -- = See Also
 --
 -- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlags',
 -- 'Vulkan.Core10.Handles.Image',
 -- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
--- 'Vulkan.Core10.SharedTypes.ImageSubresourceRange',
+-- 'Vulkan.Core10.ImageView.ImageSubresourceRange',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdPipelineBarrier',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents'
 data ImageMemoryBarrier (es :: [Type]) = ImageMemoryBarrier
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @srcAccessMask@ is a bitmask of
     -- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' specifying a
diff --git a/src/Vulkan/Core10/Pass.hs b/src/Vulkan/Core10/Pass.hs
--- a/src/Vulkan/Core10/Pass.hs
+++ b/src/Vulkan/Core10/Pass.hs
@@ -12,6 +12,23 @@
                            , SubpassDependency(..)
                            , RenderPassCreateInfo(..)
                            , FramebufferCreateInfo(..)
+                           , Framebuffer(..)
+                           , RenderPass(..)
+                           , AttachmentLoadOp(..)
+                           , AttachmentStoreOp(..)
+                           , PipelineBindPoint(..)
+                           , RenderPassCreateFlagBits(..)
+                           , RenderPassCreateFlags
+                           , AccessFlagBits(..)
+                           , AccessFlags
+                           , AttachmentDescriptionFlagBits(..)
+                           , AttachmentDescriptionFlags
+                           , DependencyFlagBits(..)
+                           , DependencyFlags
+                           , SubpassDescriptionFlagBits(..)
+                           , SubpassDescriptionFlags
+                           , FramebufferCreateFlagBits(..)
+                           , FramebufferCreateFlags
                            ) where
 
 import Control.Exception.Base (bracket)
@@ -71,7 +88,7 @@
 import Vulkan.CStruct.Extends (Extends)
 import Vulkan.CStruct.Extends (Extendss)
 import Vulkan.CStruct.Extends (Extensible(..))
-import Vulkan.Core10.SharedTypes (Extent2D)
+import Vulkan.Core10.FundamentalTypes (Extent2D)
 import Vulkan.Core10.Enums.Format (Format)
 import Vulkan.Core10.Handles (Framebuffer)
 import Vulkan.Core10.Handles (Framebuffer(..))
@@ -106,6 +123,23 @@
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.Enums.AccessFlagBits (AccessFlagBits(..))
+import Vulkan.Core10.Enums.AccessFlagBits (AccessFlags)
+import Vulkan.Core10.Enums.AttachmentDescriptionFlagBits (AttachmentDescriptionFlagBits(..))
+import Vulkan.Core10.Enums.AttachmentDescriptionFlagBits (AttachmentDescriptionFlags)
+import Vulkan.Core10.Enums.AttachmentLoadOp (AttachmentLoadOp(..))
+import Vulkan.Core10.Enums.AttachmentStoreOp (AttachmentStoreOp(..))
+import Vulkan.Core10.Enums.DependencyFlagBits (DependencyFlagBits(..))
+import Vulkan.Core10.Enums.DependencyFlagBits (DependencyFlags)
+import Vulkan.Core10.Handles (Framebuffer(..))
+import Vulkan.Core10.Enums.FramebufferCreateFlagBits (FramebufferCreateFlagBits(..))
+import Vulkan.Core10.Enums.FramebufferCreateFlagBits (FramebufferCreateFlags)
+import Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint(..))
+import Vulkan.Core10.Handles (RenderPass(..))
+import Vulkan.Core10.Enums.RenderPassCreateFlagBits (RenderPassCreateFlagBits(..))
+import Vulkan.Core10.Enums.RenderPassCreateFlagBits (RenderPassCreateFlags)
+import Vulkan.Core10.Enums.SubpassDescriptionFlagBits (SubpassDescriptionFlagBits(..))
+import Vulkan.Core10.Enums.SubpassDescriptionFlagBits (SubpassDescriptionFlags)
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -426,12 +460,12 @@
 -- The conditions leading to an optimal @renderArea@ are:
 --
 -- -   the @offset.x@ member in @renderArea@ is a multiple of the @width@
---     member of the returned 'Vulkan.Core10.SharedTypes.Extent2D' (the
---     horizontal granularity).
+--     member of the returned 'Vulkan.Core10.FundamentalTypes.Extent2D'
+--     (the horizontal granularity).
 --
 -- -   the @offset.y@ member in @renderArea@ is a multiple of the @height@
---     of the returned 'Vulkan.Core10.SharedTypes.Extent2D' (the vertical
---     granularity).
+--     of the returned 'Vulkan.Core10.FundamentalTypes.Extent2D' (the
+--     vertical granularity).
 --
 -- -   either the @offset.width@ member in @renderArea@ is a multiple of
 --     the horizontal granularity or @offset.x@+@offset.width@ is equal to
@@ -458,14 +492,15 @@
 --     handle
 --
 -- -   @pGranularity@ /must/ be a valid pointer to a
---     'Vulkan.Core10.SharedTypes.Extent2D' structure
+--     'Vulkan.Core10.FundamentalTypes.Extent2D' structure
 --
 -- -   @renderPass@ /must/ have been created, allocated, or retrieved from
 --     @device@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.SharedTypes.Extent2D',
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Core10.FundamentalTypes.Extent2D',
 -- 'Vulkan.Core10.Handles.RenderPass'
 getRenderAreaGranularity :: forall io
                           . (MonadIO io)
@@ -1772,7 +1807,7 @@
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'SubpassDependency',
 -- 'SubpassDescription', 'createRenderPass'
 data RenderPassCreateInfo (es :: [Type]) = RenderPassCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is a bitmask of
     -- 'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RenderPassCreateFlagBits'
@@ -1913,8 +1948,8 @@
 -- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo' to define
 -- the number of samples used in rasterization; however, if
 -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceFeatures'::@variableMultisampleRate@
--- is 'Vulkan.Core10.BaseType.FALSE', then all pipelines to be bound with
--- the subpass /must/ have the same value for
+-- is 'Vulkan.Core10.FundamentalTypes.FALSE', then all pipelines to be
+-- bound with the subpass /must/ have the same value for
 -- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@.
 --
 -- == Valid Usage
@@ -2207,7 +2242,7 @@
 -- 'Vulkan.Core10.Handles.ImageView', 'Vulkan.Core10.Handles.RenderPass',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'createFramebuffer'
 data FramebufferCreateInfo (es :: [Type]) = FramebufferCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is a bitmask of
     -- 'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FramebufferCreateFlagBits'
diff --git a/src/Vulkan/Core10/Pipeline.hs b/src/Vulkan/Core10/Pipeline.hs
--- a/src/Vulkan/Core10/Pipeline.hs
+++ b/src/Vulkan/Core10/Pipeline.hs
@@ -4,6 +4,7 @@
                                , createComputePipelines
                                , withComputePipelines
                                , destroyPipeline
+                               , Viewport(..)
                                , SpecializationMapEntry(..)
                                , SpecializationInfo(..)
                                , PipelineShaderStageCreateInfo(..)
@@ -22,6 +23,38 @@
                                , StencilOpState(..)
                                , PipelineDepthStencilStateCreateInfo(..)
                                , GraphicsPipelineCreateInfo(..)
+                               , Pipeline(..)
+                               , PipelineLayoutCreateFlags(..)
+                               , PipelineDepthStencilStateCreateFlags(..)
+                               , PipelineDynamicStateCreateFlags(..)
+                               , PipelineColorBlendStateCreateFlags(..)
+                               , PipelineMultisampleStateCreateFlags(..)
+                               , PipelineRasterizationStateCreateFlags(..)
+                               , PipelineViewportStateCreateFlags(..)
+                               , PipelineTessellationStateCreateFlags(..)
+                               , PipelineInputAssemblyStateCreateFlags(..)
+                               , PipelineVertexInputStateCreateFlags(..)
+                               , PrimitiveTopology(..)
+                               , CompareOp(..)
+                               , PolygonMode(..)
+                               , CullModeFlagBits(..)
+                               , CullModeFlags
+                               , FrontFace(..)
+                               , BlendFactor(..)
+                               , BlendOp(..)
+                               , StencilOp(..)
+                               , LogicOp(..)
+                               , VertexInputRate(..)
+                               , DynamicState(..)
+                               , ShaderStageFlagBits(..)
+                               , ShaderStageFlags
+                               , PipelineCreateFlagBits(..)
+                               , PipelineCreateFlags
+                               , PipelineShaderStageCreateFlagBits(..)
+                               , PipelineShaderStageCreateFlags
+                               , ColorComponentFlagBits(..)
+                               , ColorComponentFlags
+                               , SampleMask
                                ) where
 
 import Vulkan.CStruct.Utils (FixedArray)
@@ -74,8 +107,8 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
 import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.CStruct.Extends (forgetExtensions)
 import Vulkan.CStruct.Utils (lowerArrayPtr)
 import Vulkan.CStruct.Extends (peekSomeCStruct)
@@ -85,7 +118,7 @@
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
 import Vulkan.Core10.Enums.BlendFactor (BlendFactor)
 import Vulkan.Core10.Enums.BlendOp (BlendOp)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct.Extends (Chain)
 import Vulkan.Core10.Enums.ColorComponentFlagBits (ColorComponentFlags)
 import Vulkan.Core10.Enums.CompareOp (CompareOp)
@@ -150,13 +183,13 @@
 import Vulkan.CStruct.Extends (PokeChain(..))
 import Vulkan.Core10.Enums.PolygonMode (PolygonMode)
 import Vulkan.Core10.Enums.PrimitiveTopology (PrimitiveTopology)
-import Vulkan.Core10.CommandBufferBuilding (Rect2D)
+import Vulkan.Core10.FundamentalTypes (Rect2D)
 import Vulkan.Core10.Handles (RenderPass)
 import Vulkan.Core10.Enums.Result (Result)
 import Vulkan.Core10.Enums.Result (Result(..))
 import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits)
 import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits(SampleCountFlagBits))
-import Vulkan.Core10.BaseType (SampleMask)
+import Vulkan.Core10.FundamentalTypes (SampleMask)
 import Vulkan.Core10.Handles (ShaderModule)
 import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits)
 import Vulkan.CStruct.Extends (SomeStruct)
@@ -166,7 +199,6 @@
 import Vulkan.CStruct (ToCStruct)
 import Vulkan.CStruct (ToCStruct(..))
 import Vulkan.Core10.Enums.VertexInputRate (VertexInputRate)
-import Vulkan.Core10.CommandBufferBuilding (Viewport)
 import Vulkan.Exception (VulkanException(..))
 import Vulkan.Zero (Zero(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO))
@@ -182,6 +214,38 @@
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.Enums.BlendFactor (BlendFactor(..))
+import Vulkan.Core10.Enums.BlendOp (BlendOp(..))
+import Vulkan.Core10.Enums.ColorComponentFlagBits (ColorComponentFlagBits(..))
+import Vulkan.Core10.Enums.ColorComponentFlagBits (ColorComponentFlags)
+import Vulkan.Core10.Enums.CompareOp (CompareOp(..))
+import Vulkan.Core10.Enums.CullModeFlagBits (CullModeFlagBits(..))
+import Vulkan.Core10.Enums.CullModeFlagBits (CullModeFlags)
+import Vulkan.Core10.Enums.DynamicState (DynamicState(..))
+import Vulkan.Core10.Enums.FrontFace (FrontFace(..))
+import Vulkan.Core10.Enums.LogicOp (LogicOp(..))
+import Vulkan.Core10.Handles (Pipeline(..))
+import Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlags (PipelineColorBlendStateCreateFlags(..))
+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlagBits(..))
+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
+import Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlags (PipelineDepthStencilStateCreateFlags(..))
+import Vulkan.Core10.Enums.PipelineDynamicStateCreateFlags (PipelineDynamicStateCreateFlags(..))
+import Vulkan.Core10.Enums.PipelineInputAssemblyStateCreateFlags (PipelineInputAssemblyStateCreateFlags(..))
+import Vulkan.Core10.Enums.PipelineLayoutCreateFlags (PipelineLayoutCreateFlags(..))
+import Vulkan.Core10.Enums.PipelineMultisampleStateCreateFlags (PipelineMultisampleStateCreateFlags(..))
+import Vulkan.Core10.Enums.PipelineRasterizationStateCreateFlags (PipelineRasterizationStateCreateFlags(..))
+import Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits (PipelineShaderStageCreateFlagBits(..))
+import Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits (PipelineShaderStageCreateFlags)
+import Vulkan.Core10.Enums.PipelineTessellationStateCreateFlags (PipelineTessellationStateCreateFlags(..))
+import Vulkan.Core10.Enums.PipelineVertexInputStateCreateFlags (PipelineVertexInputStateCreateFlags(..))
+import Vulkan.Core10.Enums.PipelineViewportStateCreateFlags (PipelineViewportStateCreateFlags(..))
+import Vulkan.Core10.Enums.PolygonMode (PolygonMode(..))
+import Vulkan.Core10.Enums.PrimitiveTopology (PrimitiveTopology(..))
+import Vulkan.Core10.FundamentalTypes (SampleMask)
+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(..))
+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
+import Vulkan.Core10.Enums.StencilOp (StencilOp(..))
+import Vulkan.Core10.Enums.VertexInputRate (VertexInputRate(..))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -503,6 +567,159 @@
   pure $ ()
 
 
+-- | VkViewport - Structure specifying a viewport
+--
+-- = Description
+--
+-- The framebuffer depth coordinate @z@f /may/ be represented using either
+-- a fixed-point or floating-point representation. However, a
+-- floating-point representation /must/ be used if the depth\/stencil
+-- attachment has a floating-point depth component. If an m-bit fixed-point
+-- representation is used, we assume that it represents each value
+-- \(\frac{k}{2^m - 1}\), where k ∈ { 0, 1, …​, 2m-1 }, as k (e.g. 1.0 is
+-- represented in binary as a string of all ones).
+--
+-- The viewport parameters shown in the above equations are found from
+-- these values as
+--
+-- -   ox = @x@ + @width@ \/ 2
+--
+-- -   oy = @y@ + @height@ \/ 2
+--
+-- -   oz = @minDepth@
+--
+-- -   px = @width@
+--
+-- -   py = @height@
+--
+-- -   pz = @maxDepth@ - @minDepth@.
+--
+-- If a render pass transform is enabled, the values (px,py) and (ox, oy)
+-- defining the viewport are transformed as described in
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>
+-- before participating in the viewport transform.
+--
+-- The application /can/ specify a negative term for @height@, which has
+-- the effect of negating the y coordinate in clip space before performing
+-- the transform. When using a negative @height@, the application /should/
+-- also adjust the @y@ value to point to the lower left corner of the
+-- viewport instead of the upper left corner. Using the negative @height@
+-- allows the application to avoid having to negate the y component of the
+-- @Position@ output from the last vertex processing stage in shaders that
+-- also target other graphics APIs.
+--
+-- The width and height of the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxViewportDimensions implementation-dependent maximum viewport dimensions>
+-- /must/ be greater than or equal to the width and height of the largest
+-- image which /can/ be created and attached to a framebuffer.
+--
+-- The floating-point viewport bounds are represented with an
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-viewportSubPixelBits implementation-dependent precision>.
+--
+-- == Valid Usage
+--
+-- -   @width@ /must/ be greater than @0.0@
+--
+-- -   @width@ /must/ be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewportDimensions@[0]
+--
+-- -   The absolute value of @height@ /must/ be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewportDimensions@[1]
+--
+-- -   @x@ /must/ be greater than or equal to @viewportBoundsRange@[0]
+--
+-- -   (@x@ + @width@) /must/ be less than or equal to
+--     @viewportBoundsRange@[1]
+--
+-- -   @y@ /must/ be greater than or equal to @viewportBoundsRange@[0]
+--
+-- -   @y@ /must/ be less than or equal to @viewportBoundsRange@[1]
+--
+-- -   (@y@ + @height@) /must/ be greater than or equal to
+--     @viewportBoundsRange@[0]
+--
+-- -   (@y@ + @height@) /must/ be less than or equal to
+--     @viewportBoundsRange@[1]
+--
+-- -   Unless @VK_EXT_depth_range_unrestricted@ extension is enabled
+--     @minDepth@ /must/ be between @0.0@ and @1.0@, inclusive
+--
+-- -   Unless @VK_EXT_depth_range_unrestricted@ extension is enabled
+--     @maxDepth@ /must/ be between @0.0@ and @1.0@, inclusive
+--
+-- = See Also
+--
+-- 'PipelineViewportStateCreateInfo',
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport'
+data Viewport = Viewport
+  { -- | @x@ and @y@ are the viewport’s upper left corner (x,y).
+    x :: Float
+  , -- No documentation found for Nested "VkViewport" "y"
+    y :: Float
+  , -- | @width@ and @height@ are the viewport’s width and height, respectively.
+    width :: Float
+  , -- No documentation found for Nested "VkViewport" "height"
+    height :: Float
+  , -- | @minDepth@ and @maxDepth@ are the depth range for the viewport. It is
+    -- valid for @minDepth@ to be greater than or equal to @maxDepth@.
+    minDepth :: Float
+  , -- No documentation found for Nested "VkViewport" "maxDepth"
+    maxDepth :: Float
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (Viewport)
+#endif
+deriving instance Show Viewport
+
+instance ToCStruct Viewport where
+  withCStruct x f = allocaBytesAligned 24 4 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p Viewport{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (x))
+    poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (y))
+    poke ((p `plusPtr` 8 :: Ptr CFloat)) (CFloat (width))
+    poke ((p `plusPtr` 12 :: Ptr CFloat)) (CFloat (height))
+    poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (minDepth))
+    poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (maxDepth))
+    f
+  cStructSize = 24
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (zero))
+    poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (zero))
+    poke ((p `plusPtr` 8 :: Ptr CFloat)) (CFloat (zero))
+    poke ((p `plusPtr` 12 :: Ptr CFloat)) (CFloat (zero))
+    poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (zero))
+    poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (zero))
+    f
+
+instance FromCStruct Viewport where
+  peekCStruct p = do
+    x <- peek @CFloat ((p `plusPtr` 0 :: Ptr CFloat))
+    y <- peek @CFloat ((p `plusPtr` 4 :: Ptr CFloat))
+    width <- peek @CFloat ((p `plusPtr` 8 :: Ptr CFloat))
+    height <- peek @CFloat ((p `plusPtr` 12 :: Ptr CFloat))
+    minDepth <- peek @CFloat ((p `plusPtr` 16 :: Ptr CFloat))
+    maxDepth <- peek @CFloat ((p `plusPtr` 20 :: Ptr CFloat))
+    pure $ Viewport
+             ((\(CFloat a) -> a) x) ((\(CFloat a) -> a) y) ((\(CFloat a) -> a) width) ((\(CFloat a) -> a) height) ((\(CFloat a) -> a) minDepth) ((\(CFloat a) -> a) maxDepth)
+
+instance Storable Viewport where
+  sizeOf ~_ = 24
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero Viewport where
+  zero = Viewport
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
 -- | VkSpecializationMapEntry - Structure specifying a specialization map
 -- entry
 --
@@ -516,7 +733,7 @@
 -- -   For a @constantID@ specialization constant declared in a shader,
 --     @size@ /must/ match the byte size of the @constantID@. If the
 --     specialization constant is of type @boolean@, @size@ /must/ be the
---     byte size of 'Vulkan.Core10.BaseType.Bool32'
+--     byte size of 'Vulkan.Core10.FundamentalTypes.Bool32'
 --
 -- = See Also
 --
@@ -701,9 +918,9 @@
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxCombinedClipAndCullDistances@
 --
 -- -   If the identified entry point includes any variable in its interface
---     that is declared with the 'Vulkan.Core10.BaseType.SampleMask'
---     @BuiltIn@ decoration, that variable /must/ not have an array size
---     greater than
+--     that is declared with the
+--     'Vulkan.Core10.FundamentalTypes.SampleMask' @BuiltIn@ decoration,
+--     that variable /must/ not have an array size greater than
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxSampleMaskWords@
 --
 -- -   If @stage@ is
@@ -875,7 +1092,7 @@
 -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits',
 -- 'SpecializationInfo', 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PipelineShaderStageCreateInfo (es :: [Type]) = PipelineShaderStageCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is a bitmask of
     -- 'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PipelineShaderStageCreateFlagBits'
@@ -1080,7 +1297,7 @@
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'createComputePipelines'
 data ComputePipelineCreateInfo (es :: [Type]) = ComputePipelineCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is a bitmask of
     -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'
@@ -1369,7 +1586,7 @@
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'VertexInputAttributeDescription', 'VertexInputBindingDescription'
 data PipelineVertexInputStateCreateInfo (es :: [Type]) = PipelineVertexInputStateCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is reserved for future use.
     flags :: PipelineVertexInputStateCreateFlags
@@ -1469,7 +1686,8 @@
 --     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY'
 --     or
 --     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',
---     @primitiveRestartEnable@ /must/ be 'Vulkan.Core10.BaseType.FALSE'
+--     @primitiveRestartEnable@ /must/ be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- -   If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
@@ -1499,7 +1717,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32', 'GraphicsPipelineCreateInfo',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32', 'GraphicsPipelineCreateInfo',
 -- 'Vulkan.Core10.Enums.PipelineInputAssemblyStateCreateFlags.PipelineInputAssemblyStateCreateFlags',
 -- 'Vulkan.Core10.Enums.PrimitiveTopology.PrimitiveTopology',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
@@ -1598,7 +1816,7 @@
 -- 'Vulkan.Core10.Enums.PipelineTessellationStateCreateFlags.PipelineTessellationStateCreateFlags',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PipelineTessellationStateCreateInfo (es :: [Type]) = PipelineTessellationStateCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is reserved for future use.
     flags :: PipelineTessellationStateCreateFlags
@@ -1689,7 +1907,8 @@
 -- -   If the @viewportWScalingEnable@ member of a
 --     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'
 --     structure included in the @pNext@ chain is
---     'Vulkan.Core10.BaseType.TRUE', the @viewportCount@ member of the
+--     'Vulkan.Core10.FundamentalTypes.TRUE', the @viewportCount@ member of
+--     the
 --     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'
 --     structure /must/ be equal to @viewportCount@
 --
@@ -1721,27 +1940,25 @@
 --
 -- 'GraphicsPipelineCreateInfo',
 -- 'Vulkan.Core10.Enums.PipelineViewportStateCreateFlags.PipelineViewportStateCreateFlags',
--- 'Vulkan.Core10.CommandBufferBuilding.Rect2D',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'Vulkan.Core10.CommandBufferBuilding.Viewport'
+-- 'Vulkan.Core10.FundamentalTypes.Rect2D',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType', 'Viewport'
 data PipelineViewportStateCreateInfo (es :: [Type]) = PipelineViewportStateCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is reserved for future use.
     flags :: PipelineViewportStateCreateFlags
   , -- | @viewportCount@ is the number of viewports used by the pipeline.
     viewportCount :: Word32
-  , -- | @pViewports@ is a pointer to an array of
-    -- 'Vulkan.Core10.CommandBufferBuilding.Viewport' structures, defining the
-    -- viewport transforms. If the viewport state is dynamic, this member is
-    -- ignored.
+  , -- | @pViewports@ is a pointer to an array of 'Viewport' structures, defining
+    -- the viewport transforms. If the viewport state is dynamic, this member
+    -- is ignored.
     viewports :: Vector Viewport
   , -- | @scissorCount@ is the number of
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-scissor scissors>
     -- and /must/ match the number of viewports.
     scissorCount :: Word32
   , -- | @pScissors@ is a pointer to an array of
-    -- 'Vulkan.Core10.CommandBufferBuilding.Rect2D' structures defining the
+    -- 'Vulkan.Core10.FundamentalTypes.Rect2D' structures defining the
     -- rectangular bounds of the scissor for the corresponding viewport. If the
     -- scissor state is dynamic, this member is ignored.
     scissors :: Vector Rect2D
@@ -1855,7 +2072,7 @@
 -- -   If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depth clamping>
 --     feature is not enabled, @depthClampEnable@ /must/ be
---     'Vulkan.Core10.BaseType.FALSE'
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- -   If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fillModeNonSolid non-solid fill modes>
@@ -1898,14 +2115,14 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.CullModeFlagBits.CullModeFlags',
 -- 'Vulkan.Core10.Enums.FrontFace.FrontFace', 'GraphicsPipelineCreateInfo',
 -- 'Vulkan.Core10.Enums.PipelineRasterizationStateCreateFlags.PipelineRasterizationStateCreateFlags',
 -- 'Vulkan.Core10.Enums.PolygonMode.PolygonMode',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PipelineRasterizationStateCreateInfo (es :: [Type]) = PipelineRasterizationStateCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is reserved for future use.
     flags :: PipelineRasterizationStateCreateFlags
@@ -2054,19 +2271,20 @@
 -- -   If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sampleRateShading sample rate shading>
 --     feature is not enabled, @sampleShadingEnable@ /must/ be
---     'Vulkan.Core10.BaseType.FALSE'
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- -   If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alpha to one>
 --     feature is not enabled, @alphaToOneEnable@ /must/ be
---     'Vulkan.Core10.BaseType.FALSE'
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- -   @minSampleShading@ /must/ be in the range [0,1]
 --
 -- -   If the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and
 --     if the subpass has any color attachments and @rasterizationSamples@
 --     is greater than the number of color samples, then
---     @sampleShadingEnable@ /must/ be 'Vulkan.Core10.BaseType.FALSE'
+--     @sampleShadingEnable@ /must/ be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- == Valid Usage (Implicit)
 --
@@ -2093,17 +2311,17 @@
 -- -   If @pSampleMask@ is not @NULL@, @pSampleMask@ /must/ be a valid
 --     pointer to an array of
 --     \(\lceil{\mathit{rasterizationSamples} \over 32}\rceil\)
---     'Vulkan.Core10.BaseType.SampleMask' values
+--     'Vulkan.Core10.FundamentalTypes.SampleMask' values
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32', 'GraphicsPipelineCreateInfo',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32', 'GraphicsPipelineCreateInfo',
 -- 'Vulkan.Core10.Enums.PipelineMultisampleStateCreateFlags.PipelineMultisampleStateCreateFlags',
 -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits',
--- 'Vulkan.Core10.BaseType.SampleMask',
+-- 'Vulkan.Core10.FundamentalTypes.SampleMask',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PipelineMultisampleStateCreateInfo (es :: [Type]) = PipelineMultisampleStateCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is reserved for future use.
     flags :: PipelineMultisampleStateCreateFlags
@@ -2115,10 +2333,10 @@
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading Sample Shading>.
     sampleShadingEnable :: Bool
   , -- | @minSampleShading@ specifies a minimum fraction of sample shading if
-    -- @sampleShadingEnable@ is set to 'Vulkan.Core10.BaseType.TRUE'.
+    -- @sampleShadingEnable@ is set to 'Vulkan.Core10.FundamentalTypes.TRUE'.
     minSampleShading :: Float
-  , -- | @pSampleMask@ is an array of 'Vulkan.Core10.BaseType.SampleMask' values
-    -- used in the
+  , -- | @pSampleMask@ is an array of 'Vulkan.Core10.FundamentalTypes.SampleMask'
+    -- values used in the
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-samplemask sample mask test>.
     sampleMask :: Vector SampleMask
   , -- | @alphaToCoverageEnable@ controls whether a temporary coverage value is
@@ -2261,20 +2479,20 @@
 --
 -- -   If
 --     'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendIndependentBlend@
---     is 'Vulkan.Core10.BaseType.FALSE' and @colorBlendOp@ is an
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE' and @colorBlendOp@ is an
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>,
 --     then @colorBlendOp@ /must/ be the same for all attachments
 --
 -- -   If
 --     'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendIndependentBlend@
---     is 'Vulkan.Core10.BaseType.FALSE' and @alphaBlendOp@ is an
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE' and @alphaBlendOp@ is an
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>,
 --     then @alphaBlendOp@ /must/ be the same for all attachments
 --
 -- -   If
 --     'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendAllOperations@
---     is 'Vulkan.Core10.BaseType.FALSE', then @colorBlendOp@ /must/ not be
---     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_ZERO_EXT',
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', then @colorBlendOp@
+--     /must/ not be 'Vulkan.Core10.Enums.BlendOp.BLEND_OP_ZERO_EXT',
 --     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_EXT',
 --     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_EXT',
 --     'Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_OVER_EXT',
@@ -2340,7 +2558,8 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Enums.BlendFactor.BlendFactor',
--- 'Vulkan.Core10.Enums.BlendOp.BlendOp', 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.Enums.BlendOp.BlendOp',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.ColorComponentFlagBits.ColorComponentFlags',
 -- 'PipelineColorBlendStateCreateInfo'
 data PipelineColorBlendAttachmentState = PipelineColorBlendAttachmentState
@@ -2457,10 +2676,11 @@
 -- -   If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logic operations>
 --     feature is not enabled, @logicOpEnable@ /must/ be
---     'Vulkan.Core10.BaseType.FALSE'
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
--- -   If @logicOpEnable@ is 'Vulkan.Core10.BaseType.TRUE', @logicOp@
---     /must/ be a valid 'Vulkan.Core10.Enums.LogicOp.LogicOp' value
+-- -   If @logicOpEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     @logicOp@ /must/ be a valid 'Vulkan.Core10.Enums.LogicOp.LogicOp'
+--     value
 --
 -- == Valid Usage (Implicit)
 --
@@ -2481,13 +2701,13 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32', 'GraphicsPipelineCreateInfo',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32', 'GraphicsPipelineCreateInfo',
 -- 'Vulkan.Core10.Enums.LogicOp.LogicOp',
 -- 'PipelineColorBlendAttachmentState',
 -- 'Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlags.PipelineColorBlendStateCreateFlags',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PipelineColorBlendStateCreateInfo (es :: [Type]) = PipelineColorBlendStateCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is reserved for future use.
     flags :: PipelineColorBlendStateCreateFlags
@@ -2778,7 +2998,7 @@
 -- -   If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depth bounds testing>
 --     feature is not enabled, @depthBoundsTestEnable@ /must/ be
---     'Vulkan.Core10.BaseType.FALSE'
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- == Valid Usage (Implicit)
 --
@@ -2798,7 +3018,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.CompareOp.CompareOp', 'GraphicsPipelineCreateInfo',
 -- 'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlags.PipelineDepthStencilStateCreateFlags',
 -- 'StencilOpState', 'Vulkan.Core10.Enums.StructureType.StructureType'
@@ -2811,9 +3031,9 @@
     depthTestEnable :: Bool
   , -- | @depthWriteEnable@ controls whether
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
-    -- are enabled when @depthTestEnable@ is 'Vulkan.Core10.BaseType.TRUE'.
-    -- Depth writes are always disabled when @depthTestEnable@ is
-    -- 'Vulkan.Core10.BaseType.FALSE'.
+    -- are enabled when @depthTestEnable@ is
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE'. Depth writes are always disabled
+    -- when @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.FALSE'.
     depthWriteEnable :: Bool
   , -- | @depthCompareOp@ is the comparison operator used in the
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth depth test>.
@@ -3038,7 +3258,7 @@
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL'
 --     in the 'Vulkan.Core10.Pass.AttachmentReference' defined by
 --     @subpass@, the @depthWriteEnable@ member of @pDepthStencilState@
---     /must/ be 'Vulkan.Core10.BaseType.FALSE'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- -   If rasterization is not disabled and @subpass@ uses a depth\/stencil
 --     attachment in @renderPass@ that has a layout of
@@ -3054,7 +3274,7 @@
 --     attachments, then for each color attachment in the subpass the
 --     @blendEnable@ member of the corresponding element of the
 --     @pAttachment@ member of @pColorBlendState@ /must/ be
---     'Vulkan.Core10.BaseType.FALSE' if the attached image’s
+--     'Vulkan.Core10.FundamentalTypes.FALSE' if the attached image’s
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
 --     does not contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT'
@@ -3067,14 +3287,14 @@
 -- -   If no element of the @pDynamicStates@ member of @pDynamicState@ is
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT', the
 --     @pViewports@ member of @pViewportState@ /must/ be a valid pointer to
---     an array of @pViewportState->viewportCount@ valid
---     'Vulkan.Core10.CommandBufferBuilding.Viewport' structures
+--     an array of @pViewportState->viewportCount@ valid 'Viewport'
+--     structures
 --
 -- -   If no element of the @pDynamicStates@ member of @pDynamicState@ is
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR', the
 --     @pScissors@ member of @pViewportState@ /must/ be a valid pointer to
 --     an array of @pViewportState->scissorCount@
---     'Vulkan.Core10.CommandBufferBuilding.Rect2D' structures
+--     'Vulkan.Core10.FundamentalTypes.Rect2D' structures
 --
 -- -   If the wide lines feature is not enabled, and no element of the
 --     @pDynamicStates@ member of @pDynamicState@ is
@@ -3082,21 +3302,21 @@
 --     @lineWidth@ member of @pRasterizationState@ /must/ be @1.0@
 --
 -- -   If the @rasterizerDiscardEnable@ member of @pRasterizationState@ is
---     'Vulkan.Core10.BaseType.FALSE', @pViewportState@ /must/ be a valid
---     pointer to a valid 'PipelineViewportStateCreateInfo' structure
+--     'Vulkan.Core10.FundamentalTypes.FALSE', @pViewportState@ /must/ be a
+--     valid pointer to a valid 'PipelineViewportStateCreateInfo' structure
 --
 -- -   If the @rasterizerDiscardEnable@ member of @pRasterizationState@ is
---     'Vulkan.Core10.BaseType.FALSE', @pMultisampleState@ /must/ be a
---     valid pointer to a valid 'PipelineMultisampleStateCreateInfo'
+--     'Vulkan.Core10.FundamentalTypes.FALSE', @pMultisampleState@ /must/
+--     be a valid pointer to a valid 'PipelineMultisampleStateCreateInfo'
 --     structure
 --
 -- -   If the @rasterizerDiscardEnable@ member of @pRasterizationState@ is
---     'Vulkan.Core10.BaseType.FALSE', and @subpass@ uses a depth\/stencil
---     attachment, @pDepthStencilState@ /must/ be a valid pointer to a
---     valid 'PipelineDepthStencilStateCreateInfo' structure
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and @subpass@ uses a
+--     depth\/stencil attachment, @pDepthStencilState@ /must/ be a valid
+--     pointer to a valid 'PipelineDepthStencilStateCreateInfo' structure
 --
 -- -   If the @rasterizerDiscardEnable@ member of @pRasterizationState@ is
---     'Vulkan.Core10.BaseType.FALSE', and @subpass@ uses color
+--     'Vulkan.Core10.FundamentalTypes.FALSE', and @subpass@ uses color
 --     attachments, @pColorBlendState@ /must/ be a valid pointer to a valid
 --     'PipelineColorBlendStateCreateInfo' structure
 --
@@ -3104,14 +3324,14 @@
 --     @pDynamicStates@ member of @pDynamicState@ is
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS', and the
 --     @depthBiasEnable@ member of @pRasterizationState@ is
---     'Vulkan.Core10.BaseType.TRUE', the @depthBiasClamp@ member of
---     @pRasterizationState@ /must/ be @0.0@
+--     'Vulkan.Core10.FundamentalTypes.TRUE', the @depthBiasClamp@ member
+--     of @pRasterizationState@ /must/ be @0.0@
 --
 -- -   If the @VK_EXT_depth_range_unrestricted@ extension is not enabled
 --     and no element of the @pDynamicStates@ member of @pDynamicState@ is
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS', and
 --     the @depthBoundsTestEnable@ member of @pDepthStencilState@ is
---     'Vulkan.Core10.BaseType.TRUE', the @minDepthBounds@ and
+--     'Vulkan.Core10.FundamentalTypes.TRUE', the @minDepthBounds@ and
 --     @maxDepthBounds@ members of @pDepthStencilState@ /must/ be between
 --     @0.0@ and @1.0@, inclusive
 --
@@ -3120,7 +3340,7 @@
 --     and the @sampleLocationsEnable@ member of a
 --     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'
 --     structure included in the @pNext@ chain of @pMultisampleState@ is
---     'Vulkan.Core10.BaseType.TRUE',
+--     'Vulkan.Core10.FundamentalTypes.TRUE',
 --     @sampleLocationsInfo.sampleLocationGridSize.width@ /must/ evenly
 --     divide
 --     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@
@@ -3133,7 +3353,7 @@
 --     and the @sampleLocationsEnable@ member of a
 --     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'
 --     structure included in the @pNext@ chain of @pMultisampleState@ is
---     'Vulkan.Core10.BaseType.TRUE',
+--     'Vulkan.Core10.FundamentalTypes.TRUE',
 --     @sampleLocationsInfo.sampleLocationGridSize.height@ /must/ evenly
 --     divide
 --     'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@
@@ -3146,15 +3366,16 @@
 --     and the @sampleLocationsEnable@ member of a
 --     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'
 --     structure included in the @pNext@ chain of @pMultisampleState@ is
---     'Vulkan.Core10.BaseType.TRUE',
+--     'Vulkan.Core10.FundamentalTypes.TRUE',
 --     @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal
 --     @rasterizationSamples@
 --
 -- -   If the @sampleLocationsEnable@ member of a
 --     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'
 --     structure included in the @pNext@ chain of @pMultisampleState@ is
---     'Vulkan.Core10.BaseType.TRUE', the fragment shader code /must/ not
---     statically use the extended instruction @InterpolateAtSample@
+--     'Vulkan.Core10.FundamentalTypes.TRUE', the fragment shader code
+--     /must/ not statically use the extended instruction
+--     @InterpolateAtSample@
 --
 -- -   @layout@ /must/ be
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent>
@@ -3233,8 +3454,8 @@
 --     and the @viewportWScalingEnable@ member of a
 --     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'
 --     structure, included in the @pNext@ chain of @pViewportState@, is
---     'Vulkan.Core10.BaseType.TRUE', the @pViewportWScalings@ member of
---     the
+--     'Vulkan.Core10.FundamentalTypes.TRUE', the @pViewportWScalings@
+--     member of the
 --     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'
 --     /must/ be a pointer to an array of
 --     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@
@@ -3242,6 +3463,33 @@
 --     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.ViewportWScalingNV'
 --     structures
 --
+-- -   If no element of the @pDynamicStates@ member of @pDynamicState@ is
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV',
+--     and if @pViewportState->pNext@ chain includes a
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'
+--     structure, and if its @exclusiveScissorCount@ member is not @0@,
+--     then its @pExclusiveScissors@ member /must/ be a valid pointer to an
+--     array of @exclusiveScissorCount@
+--     'Vulkan.Core10.FundamentalTypes.Rect2D' structures
+--
+-- -   If no element of the @pDynamicStates@ member of @pDynamicState@ is
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV',
+--     and if @pViewportState->pNext@ chain includes a
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'
+--     structure, then its @pShadingRatePalettes@ member /must/ be a valid
+--     pointer to an array of @viewportCount@ valid
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.ShadingRatePaletteNV'
+--     structures
+--
+-- -   If no element of the @pDynamicStates@ member of @pDynamicState@ is
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT',
+--     and if @pNext@ chain includes a
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure, and if its @discardRectangleCount@ member is not @0@,
+--     then its @pDiscardRectangles@ member /must/ be a valid pointer to an
+--     array of @discardRectangleCount@
+--     'Vulkan.Core10.FundamentalTypes.Rect2D' structures
+--
 -- -   If @pStages@ includes a vertex shader stage, @pVertexInputState@
 --     /must/ be a valid pointer to a valid
 --     'PipelineVertexInputStateCreateInfo' structure
@@ -3288,11 +3536,12 @@
 --     'Vulkan.Extensions.VK_EXT_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT'
 --     and if rasterization is enabled, then the @alphaToCoverageEnable@,
 --     @alphaToOneEnable@, and @sampleShadingEnable@ members of
---     @pMultisampleState@ /must/ all be 'Vulkan.Core10.BaseType.FALSE'
+--     @pMultisampleState@ /must/ all be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- -   If the @stippledLineEnable@ member of
 --     'Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT'
---     is 'Vulkan.Core10.BaseType.TRUE' and no element of the
+--     is 'Vulkan.Core10.FundamentalTypes.TRUE' and no element of the
 --     @pDynamicStates@ member of @pDynamicState@ is
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_EXT',
 --     then the @lineStippleFactor@ member of
@@ -3395,7 +3644,7 @@
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'createGraphicsPipelines'
 data GraphicsPipelineCreateInfo (es :: [Type]) = GraphicsPipelineCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is a bitmask of
     -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'
diff --git a/src/Vulkan/Core10/Pipeline.hs-boot b/src/Vulkan/Core10/Pipeline.hs-boot
--- a/src/Vulkan/Core10/Pipeline.hs-boot
+++ b/src/Vulkan/Core10/Pipeline.hs-boot
@@ -17,6 +17,7 @@
                                , StencilOpState
                                , VertexInputAttributeDescription
                                , VertexInputBindingDescription
+                               , Viewport
                                ) where
 
 import Data.Kind (Type)
@@ -177,4 +178,12 @@
 instance Show VertexInputBindingDescription
 
 instance FromCStruct VertexInputBindingDescription
+
+
+data Viewport
+
+instance ToCStruct Viewport
+instance Show Viewport
+
+instance FromCStruct Viewport
 
diff --git a/src/Vulkan/Core10/PipelineCache.hs b/src/Vulkan/Core10/PipelineCache.hs
--- a/src/Vulkan/Core10/PipelineCache.hs
+++ b/src/Vulkan/Core10/PipelineCache.hs
@@ -5,6 +5,9 @@
                                     , getPipelineCacheData
                                     , mergePipelineCaches
                                     , PipelineCacheCreateInfo(..)
+                                    , PipelineCache(..)
+                                    , PipelineCacheCreateFlagBits(..)
+                                    , PipelineCacheCreateFlags
                                     ) where
 
 import Control.Exception.Base (bracket)
@@ -68,6 +71,9 @@
 import Vulkan.Zero (Zero(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.Handles (PipelineCache(..))
+import Vulkan.Core10.Enums.PipelineCacheCreateFlagBits (PipelineCacheCreateFlagBits(..))
+import Vulkan.Core10.Enums.PipelineCacheCreateFlagBits (PipelineCacheCreateFlags)
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
diff --git a/src/Vulkan/Core10/PipelineLayout.hs b/src/Vulkan/Core10/PipelineLayout.hs
--- a/src/Vulkan/Core10/PipelineLayout.hs
+++ b/src/Vulkan/Core10/PipelineLayout.hs
@@ -4,6 +4,7 @@
                                      , destroyPipelineLayout
                                      , PushConstantRange(..)
                                      , PipelineLayoutCreateInfo(..)
+                                     , PipelineLayout(..)
                                      ) where
 
 import Control.Exception.Base (bracket)
@@ -61,6 +62,7 @@
 import Vulkan.Zero (Zero(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.Handles (PipelineLayout(..))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
diff --git a/src/Vulkan/Core10/Query.hs b/src/Vulkan/Core10/Query.hs
--- a/src/Vulkan/Core10/Query.hs
+++ b/src/Vulkan/Core10/Query.hs
@@ -4,6 +4,13 @@
                             , destroyQueryPool
                             , getQueryPoolResults
                             , QueryPoolCreateInfo(..)
+                            , QueryPool(..)
+                            , QueryPoolCreateFlags(..)
+                            , QueryType(..)
+                            , QueryResultFlagBits(..)
+                            , QueryResultFlags
+                            , QueryPipelineStatisticFlagBits(..)
+                            , QueryPipelineStatisticFlags
                             ) where
 
 import Control.Exception.Base (bracket)
@@ -47,7 +54,7 @@
 import Vulkan.Dynamic (DeviceCmds(pVkCreateQueryPool))
 import Vulkan.Dynamic (DeviceCmds(pVkDestroyQueryPool))
 import Vulkan.Dynamic (DeviceCmds(pVkGetQueryPoolResults))
-import Vulkan.Core10.BaseType (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
 import Vulkan.Core10.Handles (Device_T)
 import Vulkan.CStruct.Extends (Extends)
 import Vulkan.CStruct.Extends (Extendss)
@@ -77,6 +84,13 @@
 import Vulkan.Zero (Zero(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits (QueryPipelineStatisticFlagBits(..))
+import Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits (QueryPipelineStatisticFlags)
+import Vulkan.Core10.Handles (QueryPool(..))
+import Vulkan.Core10.Enums.QueryPoolCreateFlags (QueryPoolCreateFlags(..))
+import Vulkan.Core10.Enums.QueryResultFlagBits (QueryResultFlagBits(..))
+import Vulkan.Core10.Enums.QueryResultFlagBits (QueryResultFlags)
+import Vulkan.Core10.Enums.QueryType (QueryType(..))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -413,7 +427,8 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core10.BaseType.DeviceSize',
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Handles.QueryPool',
 -- 'Vulkan.Core10.Enums.QueryResultFlagBits.QueryResultFlags'
 getQueryPoolResults :: forall io
@@ -505,7 +520,7 @@
 -- 'Vulkan.Core10.Enums.QueryType.QueryType',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'createQueryPool'
 data QueryPoolCreateInfo (es :: [Type]) = QueryPoolCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is reserved for future use.
     flags :: QueryPoolCreateFlags
diff --git a/src/Vulkan/Core10/Queue.hs b/src/Vulkan/Core10/Queue.hs
--- a/src/Vulkan/Core10/Queue.hs
+++ b/src/Vulkan/Core10/Queue.hs
@@ -6,6 +6,9 @@
                             , deviceWaitIdle
                             , deviceWaitIdleSafe
                             , SubmitInfo(..)
+                            , Queue(..)
+                            , PipelineStageFlagBits(..)
+                            , PipelineStageFlags
                             ) where
 
 import Control.Exception.Base (bracket)
@@ -86,6 +89,9 @@
 import Vulkan.Zero (Zero(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBMIT_INFO))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits(..))
+import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)
+import Vulkan.Core10.Handles (Queue(..))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -162,12 +168,6 @@
 --
 -- = Description
 --
--- Note
---
--- Submission can be a high overhead operation, and applications /should/
--- attempt to batch work together into as few calls to 'queueSubmit' as
--- possible.
---
 -- 'queueSubmit' is a
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-submission queue submission command>,
 -- with each batch defined by an element of @pSubmits@. Batches begin
@@ -704,7 +704,7 @@
 -- 'Vulkan.Core10.Handles.Semaphore',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'queueSubmit'
 data SubmitInfo (es :: [Type]) = SubmitInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @pWaitSemaphores@ is a pointer to an array of
     -- 'Vulkan.Core10.Handles.Semaphore' handles upon which to wait before the
diff --git a/src/Vulkan/Core10/QueueSemaphore.hs b/src/Vulkan/Core10/QueueSemaphore.hs
--- a/src/Vulkan/Core10/QueueSemaphore.hs
+++ b/src/Vulkan/Core10/QueueSemaphore.hs
@@ -3,6 +3,8 @@
                                      , withSemaphore
                                      , destroySemaphore
                                      , SemaphoreCreateInfo(..)
+                                     , Semaphore(..)
+                                     , SemaphoreCreateFlags(..)
                                      ) where
 
 import Control.Exception.Base (bracket)
@@ -66,6 +68,8 @@
 import Vulkan.Zero (Zero(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.Handles (Semaphore(..))
+import Vulkan.Core10.Enums.SemaphoreCreateFlags (SemaphoreCreateFlags(..))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -240,7 +244,7 @@
 -- 'Vulkan.Core10.Enums.SemaphoreCreateFlags.SemaphoreCreateFlags',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'createSemaphore'
 data SemaphoreCreateInfo (es :: [Type]) = SemaphoreCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is reserved for future use.
     flags :: SemaphoreCreateFlags
diff --git a/src/Vulkan/Core10/Sampler.hs b/src/Vulkan/Core10/Sampler.hs
--- a/src/Vulkan/Core10/Sampler.hs
+++ b/src/Vulkan/Core10/Sampler.hs
@@ -3,6 +3,13 @@
                               , withSampler
                               , destroySampler
                               , SamplerCreateInfo(..)
+                              , Sampler(..)
+                              , BorderColor(..)
+                              , Filter(..)
+                              , SamplerMipmapMode(..)
+                              , SamplerAddressMode(..)
+                              , SamplerCreateFlagBits(..)
+                              , SamplerCreateFlags
                               ) where
 
 import Control.Exception.Base (bracket)
@@ -34,12 +41,12 @@
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.CStruct.Extends (forgetExtensions)
 import Vulkan.NamedType ((:::))
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Enums.BorderColor (BorderColor)
 import Vulkan.CStruct.Extends (Chain)
 import Vulkan.Core10.Enums.CompareOp (CompareOp)
@@ -76,6 +83,13 @@
 import Vulkan.Zero (Zero(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SAMPLER_CREATE_INFO))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.Enums.BorderColor (BorderColor(..))
+import Vulkan.Core10.Enums.Filter (Filter(..))
+import Vulkan.Core10.Handles (Sampler(..))
+import Vulkan.Core10.Enums.SamplerAddressMode (SamplerAddressMode(..))
+import Vulkan.Core10.Enums.SamplerCreateFlagBits (SamplerCreateFlagBits(..))
+import Vulkan.Core10.Enums.SamplerCreateFlagBits (SamplerCreateFlags)
+import Vulkan.Core10.Enums.SamplerMipmapMode (SamplerMipmapMode(..))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -281,9 +295,9 @@
 -- -   If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-samplerAnisotropy anisotropic sampling>
 --     feature is not enabled, @anisotropyEnable@ /must/ be
---     'Vulkan.Core10.BaseType.FALSE'
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
--- -   If @anisotropyEnable@ is 'Vulkan.Core10.BaseType.TRUE',
+-- -   If @anisotropyEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
 --     @maxAnisotropy@ /must/ be between @1.0@ and
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxSamplerAnisotropy@,
 --     inclusive
@@ -297,27 +311,32 @@
 --     @minFilter@ and @magFilter@ /must/ be equal to the sampler Y′CBCR
 --     conversion’s @chromaFilter@
 --
--- -   If @unnormalizedCoordinates@ is 'Vulkan.Core10.BaseType.TRUE',
---     @minFilter@ and @magFilter@ /must/ be equal
+-- -   If @unnormalizedCoordinates@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', @minFilter@ and @magFilter@
+--     /must/ be equal
 --
--- -   If @unnormalizedCoordinates@ is 'Vulkan.Core10.BaseType.TRUE',
---     @mipmapMode@ /must/ be
+-- -   If @unnormalizedCoordinates@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', @mipmapMode@ /must/ be
 --     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_NEAREST'
 --
--- -   If @unnormalizedCoordinates@ is 'Vulkan.Core10.BaseType.TRUE',
---     @minLod@ and @maxLod@ /must/ be zero
+-- -   If @unnormalizedCoordinates@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', @minLod@ and @maxLod@ /must/
+--     be zero
 --
--- -   If @unnormalizedCoordinates@ is 'Vulkan.Core10.BaseType.TRUE',
---     @addressModeU@ and @addressModeV@ /must/ each be either
+-- -   If @unnormalizedCoordinates@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', @addressModeU@ and
+--     @addressModeV@ /must/ each be either
 --     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
 --     or
 --     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER'
 --
--- -   If @unnormalizedCoordinates@ is 'Vulkan.Core10.BaseType.TRUE',
---     @anisotropyEnable@ /must/ be 'Vulkan.Core10.BaseType.FALSE'
+-- -   If @unnormalizedCoordinates@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', @anisotropyEnable@ /must/ be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
--- -   If @unnormalizedCoordinates@ is 'Vulkan.Core10.BaseType.TRUE',
---     @compareEnable@ /must/ be 'Vulkan.Core10.BaseType.FALSE'
+-- -   If @unnormalizedCoordinates@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', @compareEnable@ /must/ be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- -   If any of @addressModeU@, @addressModeV@ or @addressModeW@ are
 --     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER',
@@ -329,8 +348,9 @@
 --     is enabled, @addressModeU@, @addressModeV@, and @addressModeW@
 --     /must/ be
 --     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE',
---     @anisotropyEnable@ /must/ be 'Vulkan.Core10.BaseType.FALSE', and
---     @unnormalizedCoordinates@ /must/ be 'Vulkan.Core10.BaseType.FALSE'
+--     @anisotropyEnable@ /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE',
+--     and @unnormalizedCoordinates@ /must/ be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- -   The sampler reduction mode /must/ be set to
 --     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE'
@@ -345,14 +365,15 @@
 --     @addressModeW@ /must/ not be
 --     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE'
 --
--- -   If @compareEnable@ is 'Vulkan.Core10.BaseType.TRUE', @compareOp@
---     /must/ be a valid 'Vulkan.Core10.Enums.CompareOp.CompareOp' value
+-- -   If @compareEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     @compareOp@ /must/ be a valid
+--     'Vulkan.Core10.Enums.CompareOp.CompareOp' value
 --
 -- -   If either @magFilter@ or @minFilter@ is
 --     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT',
---     @anisotropyEnable@ /must/ be 'Vulkan.Core10.BaseType.FALSE'
+--     @anisotropyEnable@ /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
 --
--- -   If @compareEnable@ is 'Vulkan.Core10.BaseType.TRUE', the
+-- -   If @compareEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', the
 --     @reductionMode@ member of
 --     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'
 --     /must/ be
@@ -380,16 +401,18 @@
 --
 -- -   If @flags@ includes
 --     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_BIT_EXT',
---     then @anisotropyEnable@ /must/ be 'Vulkan.Core10.BaseType.FALSE'
+--     then @anisotropyEnable@ /must/ be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- -   If @flags@ includes
 --     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_BIT_EXT',
---     then @compareEnable@ /must/ be 'Vulkan.Core10.BaseType.FALSE'
+--     then @compareEnable@ /must/ be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- -   If @flags@ includes
 --     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_BIT_EXT',
 --     then @unnormalizedCoordinates@ /must/ be
---     'Vulkan.Core10.BaseType.FALSE'
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- -   If @borderColor@ is set to one of
 --     'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_FLOAT_CUSTOM_EXT' or
@@ -446,7 +469,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.BorderColor.BorderColor',
 -- 'Vulkan.Core10.Enums.CompareOp.CompareOp',
 -- 'Vulkan.Core10.Enums.Filter.Filter',
@@ -455,7 +478,7 @@
 -- 'Vulkan.Core10.Enums.SamplerMipmapMode.SamplerMipmapMode',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'createSampler'
 data SamplerCreateInfo (es :: [Type]) = SamplerCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is a bitmask of
     -- 'Vulkan.Core10.Enums.SamplerCreateFlagBits.SamplerCreateFlagBits'
@@ -492,19 +515,19 @@
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-level-of-detail-operation Level-of-Detail Operation>
     -- section.
     mipLodBias :: Float
-  , -- | @anisotropyEnable@ is 'Vulkan.Core10.BaseType.TRUE' to enable
+  , -- | @anisotropyEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' to enable
     -- anisotropic filtering, as described in the
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-texel-anisotropic-filtering Texel Anisotropic Filtering>
-    -- section, or 'Vulkan.Core10.BaseType.FALSE' otherwise.
+    -- section, or 'Vulkan.Core10.FundamentalTypes.FALSE' otherwise.
     anisotropyEnable :: Bool
   , -- | @maxAnisotropy@ is the anisotropy value clamp used by the sampler when
-    -- @anisotropyEnable@ is 'Vulkan.Core10.BaseType.TRUE'. If
-    -- @anisotropyEnable@ is 'Vulkan.Core10.BaseType.FALSE', @maxAnisotropy@ is
-    -- ignored.
+    -- @anisotropyEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE'. If
+    -- @anisotropyEnable@ is 'Vulkan.Core10.FundamentalTypes.FALSE',
+    -- @maxAnisotropy@ is ignored.
     maxAnisotropy :: Float
-  , -- | @compareEnable@ is 'Vulkan.Core10.BaseType.TRUE' to enable comparison
-    -- against a reference value during lookups, or
-    -- 'Vulkan.Core10.BaseType.FALSE' otherwise.
+  , -- | @compareEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' to enable
+    -- comparison against a reference value during lookups, or
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE' otherwise.
     --
     -- -   Note: Some implementations will default to shader state if this
     --     member does not match.
@@ -527,13 +550,15 @@
     borderColor :: BorderColor
   , -- | @unnormalizedCoordinates@ controls whether to use unnormalized or
     -- normalized texel coordinates to address texels of the image. When set to
-    -- 'Vulkan.Core10.BaseType.TRUE', the range of the image coordinates used
-    -- to lookup the texel is in the range of zero to the image dimensions for
-    -- x, y and z. When set to 'Vulkan.Core10.BaseType.FALSE' the range of
-    -- image coordinates is zero to one.
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE', the range of the image
+    -- coordinates used to lookup the texel is in the range of zero to the
+    -- image dimensions for x, y and z. When set to
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE' the range of image coordinates is
+    -- zero to one.
     --
-    -- When @unnormalizedCoordinates@ is 'Vulkan.Core10.BaseType.TRUE', images
-    -- the sampler is used with in the shader have the following requirements:
+    -- When @unnormalizedCoordinates@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+    -- images the sampler is used with in the shader have the following
+    -- requirements:
     --
     -- -   The @viewType@ /must/ be either
     --     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or
@@ -541,9 +566,9 @@
     --
     -- -   The image view /must/ have a single layer and a single mip level.
     --
-    -- When @unnormalizedCoordinates@ is 'Vulkan.Core10.BaseType.TRUE', image
-    -- built-in functions in the shader that use the sampler have the following
-    -- requirements:
+    -- When @unnormalizedCoordinates@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+    -- image built-in functions in the shader that use the sampler have the
+    -- following requirements:
     --
     -- -   The functions /must/ not use projection.
     --
diff --git a/src/Vulkan/Core10/Shader.hs b/src/Vulkan/Core10/Shader.hs
--- a/src/Vulkan/Core10/Shader.hs
+++ b/src/Vulkan/Core10/Shader.hs
@@ -3,6 +3,9 @@
                              , withShaderModule
                              , destroyShaderModule
                              , ShaderModuleCreateInfo(..)
+                             , ShaderModule(..)
+                             , ShaderModuleCreateFlagBits(..)
+                             , ShaderModuleCreateFlags
                              ) where
 
 import Control.Exception.Base (bracket)
@@ -75,6 +78,9 @@
 import Vulkan.Zero (Zero(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.Handles (ShaderModule(..))
+import Vulkan.Core10.Enums.ShaderModuleCreateFlagBits (ShaderModuleCreateFlagBits(..))
+import Vulkan.Core10.Enums.ShaderModuleCreateFlagBits (ShaderModuleCreateFlags)
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -301,7 +307,7 @@
 -- 'Vulkan.Core10.Enums.ShaderModuleCreateFlagBits.ShaderModuleCreateFlags',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'createShaderModule'
 data ShaderModuleCreateInfo (es :: [Type]) = ShaderModuleCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is reserved for future use.
     flags :: ShaderModuleCreateFlags
diff --git a/src/Vulkan/Core10/SharedTypes.hs b/src/Vulkan/Core10/SharedTypes.hs
deleted file mode 100644
--- a/src/Vulkan/Core10/SharedTypes.hs
+++ /dev/null
@@ -1,675 +0,0 @@
-{-# language CPP #-}
-module Vulkan.Core10.SharedTypes  ( Offset2D(..)
-                                  , Offset3D(..)
-                                  , Extent2D(..)
-                                  , Extent3D(..)
-                                  , ImageSubresourceLayers(..)
-                                  , ImageSubresourceRange(..)
-                                  , ClearDepthStencilValue(..)
-                                  , ClearColorValue(..)
-                                  , ClearValue(..)
-                                  ) where
-
-import Vulkan.CStruct.Utils (FixedArray)
-import Control.Exception.Base (bracket)
-import Foreign.Marshal.Alloc (allocaBytesAligned)
-import Foreign.Marshal.Alloc (callocBytes)
-import Foreign.Marshal.Alloc (free)
-import GHC.Ptr (castPtr)
-import Foreign.Ptr (plusPtr)
-import Control.Monad.Trans.Class (lift)
-import Control.Monad.Trans.Cont (runContT)
-import Data.Typeable (Typeable)
-import Foreign.C.Types (CFloat)
-import Foreign.C.Types (CFloat(CFloat))
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import Data.Int (Int32)
-import Foreign.Ptr (Ptr)
-import Data.Word (Word32)
-import Data.Kind (Type)
-import Control.Monad.Trans.Cont (ContT(..))
-import Vulkan.CStruct.Utils (lowerArrayPtr)
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.Core10.Enums.ImageAspectFlagBits (ImageAspectFlags)
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero(..))
--- | VkOffset2D - Structure specifying a two-dimensional offset
---
--- = See Also
---
--- 'Vulkan.Extensions.VK_KHR_display.DisplayPlaneCapabilitiesKHR',
--- 'Vulkan.Core10.CommandBufferBuilding.Rect2D',
--- 'Vulkan.Extensions.VK_KHR_incremental_present.RectLayerKHR'
-data Offset2D = Offset2D
-  { -- | @x@ is the x offset.
-    x :: Int32
-  , -- | @y@ is the y offset.
-    y :: Int32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (Offset2D)
-#endif
-deriving instance Show Offset2D
-
-instance ToCStruct Offset2D where
-  withCStruct x f = allocaBytesAligned 8 4 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p Offset2D{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr Int32)) (x)
-    poke ((p `plusPtr` 4 :: Ptr Int32)) (y)
-    f
-  cStructSize = 8
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr Int32)) (zero)
-    poke ((p `plusPtr` 4 :: Ptr Int32)) (zero)
-    f
-
-instance FromCStruct Offset2D where
-  peekCStruct p = do
-    x <- peek @Int32 ((p `plusPtr` 0 :: Ptr Int32))
-    y <- peek @Int32 ((p `plusPtr` 4 :: Ptr Int32))
-    pure $ Offset2D
-             x y
-
-instance Storable Offset2D where
-  sizeOf ~_ = 8
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero Offset2D where
-  zero = Offset2D
-           zero
-           zero
-
-
--- | VkOffset3D - Structure specifying a three-dimensional offset
---
--- = See Also
---
--- 'Vulkan.Core10.CommandBufferBuilding.BufferImageCopy',
--- 'Vulkan.Core10.CommandBufferBuilding.ImageBlit',
--- 'Vulkan.Core10.CommandBufferBuilding.ImageCopy',
--- 'Vulkan.Core10.CommandBufferBuilding.ImageResolve',
--- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind'
-data Offset3D = Offset3D
-  { -- | @x@ is the x offset.
-    x :: Int32
-  , -- | @y@ is the y offset.
-    y :: Int32
-  , -- | @z@ is the z offset.
-    z :: Int32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (Offset3D)
-#endif
-deriving instance Show Offset3D
-
-instance ToCStruct Offset3D where
-  withCStruct x f = allocaBytesAligned 12 4 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p Offset3D{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr Int32)) (x)
-    poke ((p `plusPtr` 4 :: Ptr Int32)) (y)
-    poke ((p `plusPtr` 8 :: Ptr Int32)) (z)
-    f
-  cStructSize = 12
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr Int32)) (zero)
-    poke ((p `plusPtr` 4 :: Ptr Int32)) (zero)
-    poke ((p `plusPtr` 8 :: Ptr Int32)) (zero)
-    f
-
-instance FromCStruct Offset3D where
-  peekCStruct p = do
-    x <- peek @Int32 ((p `plusPtr` 0 :: Ptr Int32))
-    y <- peek @Int32 ((p `plusPtr` 4 :: Ptr Int32))
-    z <- peek @Int32 ((p `plusPtr` 8 :: Ptr Int32))
-    pure $ Offset3D
-             x y z
-
-instance Storable Offset3D where
-  sizeOf ~_ = 12
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero Offset3D where
-  zero = Offset3D
-           zero
-           zero
-           zero
-
-
--- | VkExtent2D - Structure specifying a two-dimensional extent
---
--- = See Also
---
--- 'Vulkan.Extensions.VK_KHR_display.DisplayModeParametersKHR',
--- 'Vulkan.Extensions.VK_KHR_display.DisplayPlaneCapabilitiesKHR',
--- 'Vulkan.Extensions.VK_KHR_display.DisplayPropertiesKHR',
--- 'Vulkan.Extensions.VK_KHR_display.DisplaySurfaceCreateInfoKHR',
--- 'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT',
--- 'Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapPropertiesEXT',
--- 'Vulkan.Extensions.VK_EXT_sample_locations.PhysicalDeviceSampleLocationsPropertiesEXT',
--- 'Vulkan.Extensions.VK_NV_shading_rate_image.PhysicalDeviceShadingRateImagePropertiesNV',
--- 'Vulkan.Core10.CommandBufferBuilding.Rect2D',
--- 'Vulkan.Extensions.VK_KHR_incremental_present.RectLayerKHR',
--- 'Vulkan.Extensions.VK_EXT_sample_locations.SampleLocationsInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_display_surface_counter.SurfaceCapabilities2EXT',
--- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR',
--- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',
--- 'Vulkan.Core10.Pass.getRenderAreaGranularity'
-data Extent2D = Extent2D
-  { -- | @width@ is the width of the extent.
-    width :: Word32
-  , -- | @height@ is the height of the extent.
-    height :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (Extent2D)
-#endif
-deriving instance Show Extent2D
-
-instance ToCStruct Extent2D where
-  withCStruct x f = allocaBytesAligned 8 4 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p Extent2D{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (width)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (height)
-    f
-  cStructSize = 8
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct Extent2D where
-  peekCStruct p = do
-    width <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
-    height <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
-    pure $ Extent2D
-             width height
-
-instance Storable Extent2D where
-  sizeOf ~_ = 8
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero Extent2D where
-  zero = Extent2D
-           zero
-           zero
-
-
--- | VkExtent3D - Structure specifying a three-dimensional extent
---
--- = See Also
---
--- 'Vulkan.Core10.CommandBufferBuilding.BufferImageCopy',
--- 'Vulkan.Core10.CommandBufferBuilding.ImageCopy',
--- 'Vulkan.Core10.Image.ImageCreateInfo',
--- 'Vulkan.Core10.DeviceInitialization.ImageFormatProperties',
--- 'Vulkan.Core10.CommandBufferBuilding.ImageResolve',
--- 'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties',
--- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageFormatProperties',
--- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind'
-data Extent3D = Extent3D
-  { -- | @width@ is the width of the extent.
-    width :: Word32
-  , -- | @height@ is the height of the extent.
-    height :: Word32
-  , -- | @depth@ is the depth of the extent.
-    depth :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (Extent3D)
-#endif
-deriving instance Show Extent3D
-
-instance ToCStruct Extent3D where
-  withCStruct x f = allocaBytesAligned 12 4 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p Extent3D{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (width)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (height)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (depth)
-    f
-  cStructSize = 12
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct Extent3D where
-  peekCStruct p = do
-    width <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
-    height <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
-    depth <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
-    pure $ Extent3D
-             width height depth
-
-instance Storable Extent3D where
-  sizeOf ~_ = 12
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero Extent3D where
-  zero = Extent3D
-           zero
-           zero
-           zero
-
-
--- | VkImageSubresourceLayers - Structure specifying an image subresource
--- layers
---
--- == Valid Usage
---
--- -   If @aspectMask@ contains
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT', it
---     /must/ not contain either of
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
---
--- -   @aspectMask@ /must/ not contain
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_METADATA_BIT'
---
--- -   @aspectMask@ /must/ not include
---     @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@ for any index @i@
---
--- -   @layerCount@ /must/ be greater than 0
---
--- == Valid Usage (Implicit)
---
--- -   @aspectMask@ /must/ be a valid combination of
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits' values
---
--- -   @aspectMask@ /must/ not be @0@
---
--- = See Also
---
--- 'Vulkan.Core10.CommandBufferBuilding.BufferImageCopy',
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags',
--- 'Vulkan.Core10.CommandBufferBuilding.ImageBlit',
--- 'Vulkan.Core10.CommandBufferBuilding.ImageCopy',
--- 'Vulkan.Core10.CommandBufferBuilding.ImageResolve'
-data ImageSubresourceLayers = ImageSubresourceLayers
-  { -- | @aspectMask@ is a combination of
-    -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits', selecting
-    -- the color, depth and\/or stencil aspects to be copied.
-    aspectMask :: ImageAspectFlags
-  , -- | @mipLevel@ is the mipmap level to copy from.
-    mipLevel :: Word32
-  , -- | @baseArrayLayer@ and @layerCount@ are the starting layer and number of
-    -- layers to copy.
-    baseArrayLayer :: Word32
-  , -- No documentation found for Nested "VkImageSubresourceLayers" "layerCount"
-    layerCount :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (ImageSubresourceLayers)
-#endif
-deriving instance Show ImageSubresourceLayers
-
-instance ToCStruct ImageSubresourceLayers where
-  withCStruct x f = allocaBytesAligned 16 4 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p ImageSubresourceLayers{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr ImageAspectFlags)) (aspectMask)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (mipLevel)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (baseArrayLayer)
-    poke ((p `plusPtr` 12 :: Ptr Word32)) (layerCount)
-    f
-  cStructSize = 16
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr ImageAspectFlags)) (zero)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct ImageSubresourceLayers where
-  peekCStruct p = do
-    aspectMask <- peek @ImageAspectFlags ((p `plusPtr` 0 :: Ptr ImageAspectFlags))
-    mipLevel <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
-    baseArrayLayer <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
-    layerCount <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
-    pure $ ImageSubresourceLayers
-             aspectMask mipLevel baseArrayLayer layerCount
-
-instance Storable ImageSubresourceLayers where
-  sizeOf ~_ = 16
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero ImageSubresourceLayers where
-  zero = ImageSubresourceLayers
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkImageSubresourceRange - Structure specifying an image subresource
--- range
---
--- = Description
---
--- The number of mipmap levels and array layers /must/ be a subset of the
--- image subresources in the image. If an application wants to use all mip
--- levels or layers in an image after the @baseMipLevel@ or
--- @baseArrayLayer@, it /can/ set @levelCount@ and @layerCount@ to the
--- special values 'Vulkan.Core10.APIConstants.REMAINING_MIP_LEVELS' and
--- 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS' without knowing the
--- exact number of mip levels or layers.
---
--- For cube and cube array image views, the layers of the image view
--- starting at @baseArrayLayer@ correspond to faces in the order +X, -X,
--- +Y, -Y, +Z, -Z. For cube arrays, each set of six sequential layers is a
--- single cube, so the number of cube maps in a cube map array view is
--- /@layerCount@ \/ 6/, and image array layer (@baseArrayLayer@ + i) is
--- face index (i mod 6) of cube /i \/ 6/. If the number of layers in the
--- view, whether set explicitly in @layerCount@ or implied by
--- 'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', is not a multiple
--- of 6, the last cube map in the array /must/ not be accessed.
---
--- @aspectMask@ /must/ be only
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT',
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT' if
--- @format@ is a color, depth-only or stencil-only format, respectively,
--- except if @format@ is a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>.
--- If using a depth\/stencil format with both depth and stencil components,
--- @aspectMask@ /must/ include at least one of
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' and
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT', and
--- /can/ include both.
---
--- When the 'ImageSubresourceRange' structure is used to select a subset of
--- the slices of a 3D image’s mip level in order to create a 2D or 2D array
--- image view of a 3D image created with
--- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT',
--- @baseArrayLayer@ and @layerCount@ specify the first slice index and the
--- number of slices to include in the created image view. Such an image
--- view /can/ be used as a framebuffer attachment that refers only to the
--- specified range of slices of the selected mip level. However, any layout
--- transitions performed on such an attachment view during a render pass
--- instance still apply to the entire subresource referenced which includes
--- all the slices of the selected mip level.
---
--- When using an image view of a depth\/stencil image to populate a
--- descriptor set (e.g. for sampling in the shader, or for use as an input
--- attachment), the @aspectMask@ /must/ only include one bit and selects
--- whether the image view is used for depth reads (i.e. using a
--- floating-point sampler or input attachment in the shader) or stencil
--- reads (i.e. using an unsigned integer sampler or input attachment in the
--- shader). When an image view of a depth\/stencil image is used as a
--- depth\/stencil framebuffer attachment, the @aspectMask@ is ignored and
--- both depth and stencil image subresources are used.
---
--- The 'Vulkan.Core10.ImageView.ComponentMapping' @components@ member
--- describes a remapping from components of the image to components of the
--- vector returned by shader image instructions. This remapping /must/ be
--- identity for storage image descriptors, input attachment descriptors,
--- framebuffer attachments, and any 'Vulkan.Core10.Handles.ImageView' used
--- with a combined image sampler that enables
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>.
---
--- When creating a 'Vulkan.Core10.Handles.ImageView', if
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
--- is enabled in the sampler, the @aspectMask@ of a @subresourceRange@ used
--- by the 'Vulkan.Core10.Handles.ImageView' /must/ be
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'.
---
--- When creating a 'Vulkan.Core10.Handles.ImageView', if sampler Y′CBCR
--- conversion is not enabled in the sampler and the image @format@ is
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>,
--- the image /must/ have been created with
--- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT',
--- and the @aspectMask@ of the 'Vulkan.Core10.Handles.ImageView'’s
--- @subresourceRange@ /must/ be
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' or
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'.
---
--- == Valid Usage
---
--- -   If @levelCount@ is not
---     'Vulkan.Core10.APIConstants.REMAINING_MIP_LEVELS', it /must/ be
---     greater than @0@
---
--- -   If @layerCount@ is not
---     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', it /must/ be
---     greater than @0@
---
--- -   If @aspectMask@ includes
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT',
---     then it /must/ not include any of
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',
---     or
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
---
--- -   @aspectMask@ /must/ not include
---     @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@ for any index @i@
---
--- == Valid Usage (Implicit)
---
--- -   @aspectMask@ /must/ be a valid combination of
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits' values
---
--- -   @aspectMask@ /must/ not be @0@
---
--- = See Also
---
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags',
--- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier',
--- 'Vulkan.Core10.ImageView.ImageViewCreateInfo',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdClearColorImage',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdClearDepthStencilImage'
-data ImageSubresourceRange = ImageSubresourceRange
-  { -- | @aspectMask@ is a bitmask of
-    -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits' specifying
-    -- which aspect(s) of the image are included in the view.
-    aspectMask :: ImageAspectFlags
-  , -- | @baseMipLevel@ is the first mipmap level accessible to the view.
-    baseMipLevel :: Word32
-  , -- | @levelCount@ is the number of mipmap levels (starting from
-    -- @baseMipLevel@) accessible to the view.
-    levelCount :: Word32
-  , -- | @baseArrayLayer@ is the first array layer accessible to the view.
-    baseArrayLayer :: Word32
-  , -- | @layerCount@ is the number of array layers (starting from
-    -- @baseArrayLayer@) accessible to the view.
-    layerCount :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (ImageSubresourceRange)
-#endif
-deriving instance Show ImageSubresourceRange
-
-instance ToCStruct ImageSubresourceRange where
-  withCStruct x f = allocaBytesAligned 20 4 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p ImageSubresourceRange{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr ImageAspectFlags)) (aspectMask)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (baseMipLevel)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (levelCount)
-    poke ((p `plusPtr` 12 :: Ptr Word32)) (baseArrayLayer)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (layerCount)
-    f
-  cStructSize = 20
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr ImageAspectFlags)) (zero)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct ImageSubresourceRange where
-  peekCStruct p = do
-    aspectMask <- peek @ImageAspectFlags ((p `plusPtr` 0 :: Ptr ImageAspectFlags))
-    baseMipLevel <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
-    levelCount <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
-    baseArrayLayer <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
-    layerCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    pure $ ImageSubresourceRange
-             aspectMask baseMipLevel levelCount baseArrayLayer layerCount
-
-instance Storable ImageSubresourceRange where
-  sizeOf ~_ = 20
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero ImageSubresourceRange where
-  zero = ImageSubresourceRange
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkClearDepthStencilValue - Structure specifying a clear depth stencil
--- value
---
--- == Valid Usage
---
--- -   Unless the @VK_EXT_depth_range_unrestricted@ extension is enabled
---     @depth@ /must/ be between @0.0@ and @1.0@, inclusive
---
--- = See Also
---
--- 'ClearValue',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdClearDepthStencilImage'
-data ClearDepthStencilValue = ClearDepthStencilValue
-  { -- | @depth@ is the clear value for the depth aspect of the depth\/stencil
-    -- attachment. It is a floating-point value which is automatically
-    -- converted to the attachment’s format.
-    depth :: Float
-  , -- | @stencil@ is the clear value for the stencil aspect of the
-    -- depth\/stencil attachment. It is a 32-bit integer value which is
-    -- converted to the attachment’s format by taking the appropriate number of
-    -- LSBs.
-    stencil :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (ClearDepthStencilValue)
-#endif
-deriving instance Show ClearDepthStencilValue
-
-instance ToCStruct ClearDepthStencilValue where
-  withCStruct x f = allocaBytesAligned 8 4 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p ClearDepthStencilValue{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (depth))
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (stencil)
-    f
-  cStructSize = 8
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (zero))
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct ClearDepthStencilValue where
-  peekCStruct p = do
-    depth <- peek @CFloat ((p `plusPtr` 0 :: Ptr CFloat))
-    stencil <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
-    pure $ ClearDepthStencilValue
-             ((\(CFloat a) -> a) depth) stencil
-
-instance Storable ClearDepthStencilValue where
-  sizeOf ~_ = 8
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero ClearDepthStencilValue where
-  zero = ClearDepthStencilValue
-           zero
-           zero
-
-
-data ClearColorValue
-  = Float32 ((Float, Float, Float, Float))
-  | Int32 ((Int32, Int32, Int32, Int32))
-  | Uint32 ((Word32, Word32, Word32, Word32))
-  deriving (Show)
-
-instance ToCStruct ClearColorValue where
-  withCStruct x f = allocaBytesAligned 16 4 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct :: Ptr ClearColorValue -> ClearColorValue -> IO a -> IO a
-  pokeCStruct p = (. const) . runContT .  \case
-    Float32 v -> lift $ do
-      let pFloat32 = lowerArrayPtr (castPtr @_ @(FixedArray 4 CFloat) p)
-      case (v) of
-        (e0, e1, e2, e3) -> do
-          poke (pFloat32 :: Ptr CFloat) (CFloat (e0))
-          poke (pFloat32 `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))
-          poke (pFloat32 `plusPtr` 8 :: Ptr CFloat) (CFloat (e2))
-          poke (pFloat32 `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))
-    Int32 v -> lift $ do
-      let pInt32 = lowerArrayPtr (castPtr @_ @(FixedArray 4 Int32) p)
-      case (v) of
-        (e0, e1, e2, e3) -> do
-          poke (pInt32 :: Ptr Int32) (e0)
-          poke (pInt32 `plusPtr` 4 :: Ptr Int32) (e1)
-          poke (pInt32 `plusPtr` 8 :: Ptr Int32) (e2)
-          poke (pInt32 `plusPtr` 12 :: Ptr Int32) (e3)
-    Uint32 v -> lift $ do
-      let pUint32 = lowerArrayPtr (castPtr @_ @(FixedArray 4 Word32) p)
-      case (v) of
-        (e0, e1, e2, e3) -> do
-          poke (pUint32 :: Ptr Word32) (e0)
-          poke (pUint32 `plusPtr` 4 :: Ptr Word32) (e1)
-          poke (pUint32 `plusPtr` 8 :: Ptr Word32) (e2)
-          poke (pUint32 `plusPtr` 12 :: Ptr Word32) (e3)
-  pokeZeroCStruct :: Ptr ClearColorValue -> IO b -> IO b
-  pokeZeroCStruct _ f = f
-  cStructSize = 16
-  cStructAlignment = 4
-
-instance Zero ClearColorValue where
-  zero = Float32 (zero, zero, zero, zero)
-
-
-data ClearValue
-  = Color ClearColorValue
-  | DepthStencil ClearDepthStencilValue
-  deriving (Show)
-
-instance ToCStruct ClearValue where
-  withCStruct x f = allocaBytesAligned 16 4 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct :: Ptr ClearValue -> ClearValue -> IO a -> IO a
-  pokeCStruct p = (. const) . runContT .  \case
-    Color v -> ContT $ pokeCStruct (castPtr @_ @ClearColorValue p) (v) . ($ ())
-    DepthStencil v -> ContT $ pokeCStruct (castPtr @_ @ClearDepthStencilValue p) (v) . ($ ())
-  pokeZeroCStruct :: Ptr ClearValue -> IO b -> IO b
-  pokeZeroCStruct _ f = f
-  cStructSize = 16
-  cStructAlignment = 4
-
-instance Zero ClearValue where
-  zero = Color zero
-
diff --git a/src/Vulkan/Core10/SharedTypes.hs-boot b/src/Vulkan/Core10/SharedTypes.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Core10/SharedTypes.hs-boot
+++ /dev/null
@@ -1,72 +0,0 @@
-{-# language CPP #-}
-module Vulkan.Core10.SharedTypes  ( ClearDepthStencilValue
-                                  , Extent2D
-                                  , Extent3D
-                                  , ImageSubresourceLayers
-                                  , ImageSubresourceRange
-                                  , Offset2D
-                                  , Offset3D
-                                  , ClearColorValue
-                                  ) where
-
-import Data.Kind (Type)
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-data ClearDepthStencilValue
-
-instance ToCStruct ClearDepthStencilValue
-instance Show ClearDepthStencilValue
-
-instance FromCStruct ClearDepthStencilValue
-
-
-data Extent2D
-
-instance ToCStruct Extent2D
-instance Show Extent2D
-
-instance FromCStruct Extent2D
-
-
-data Extent3D
-
-instance ToCStruct Extent3D
-instance Show Extent3D
-
-instance FromCStruct Extent3D
-
-
-data ImageSubresourceLayers
-
-instance ToCStruct ImageSubresourceLayers
-instance Show ImageSubresourceLayers
-
-instance FromCStruct ImageSubresourceLayers
-
-
-data ImageSubresourceRange
-
-instance ToCStruct ImageSubresourceRange
-instance Show ImageSubresourceRange
-
-instance FromCStruct ImageSubresourceRange
-
-
-data Offset2D
-
-instance ToCStruct Offset2D
-instance Show Offset2D
-
-instance FromCStruct Offset2D
-
-
-data Offset3D
-
-instance ToCStruct Offset3D
-instance Show Offset3D
-
-instance FromCStruct Offset3D
-
-
-data ClearColorValue
-
diff --git a/src/Vulkan/Core10/SparseResourceMemoryManagement.hs b/src/Vulkan/Core10/SparseResourceMemoryManagement.hs
--- a/src/Vulkan/Core10/SparseResourceMemoryManagement.hs
+++ b/src/Vulkan/Core10/SparseResourceMemoryManagement.hs
@@ -4,12 +4,19 @@
                                                      , queueBindSparse
                                                      , SparseImageFormatProperties(..)
                                                      , SparseImageMemoryRequirements(..)
+                                                     , ImageSubresource(..)
                                                      , SparseMemoryBind(..)
                                                      , SparseImageMemoryBind(..)
                                                      , SparseBufferMemoryBindInfo(..)
                                                      , SparseImageOpaqueMemoryBindInfo(..)
                                                      , SparseImageMemoryBindInfo(..)
                                                      , BindSparseInfo(..)
+                                                     , ImageAspectFlagBits(..)
+                                                     , ImageAspectFlags
+                                                     , SparseImageFormatFlagBits(..)
+                                                     , SparseImageFormatFlags
+                                                     , SparseMemoryBindFlagBits(..)
+                                                     , SparseMemoryBindFlags
                                                      ) where
 
 import Control.Exception.Base (bracket)
@@ -58,12 +65,12 @@
 import Vulkan.Dynamic (DeviceCmds(pVkQueueBindSparse))
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_group (DeviceGroupBindSparseInfo)
 import Vulkan.Core10.Handles (DeviceMemory)
-import Vulkan.Core10.BaseType (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
 import Vulkan.Core10.Handles (Device_T)
 import Vulkan.CStruct.Extends (Extends)
 import Vulkan.CStruct.Extends (Extendss)
 import Vulkan.CStruct.Extends (Extensible(..))
-import Vulkan.Core10.SharedTypes (Extent3D)
+import Vulkan.Core10.FundamentalTypes (Extent3D)
 import Vulkan.Core10.Handles (Fence)
 import Vulkan.Core10.Handles (Fence(..))
 import Vulkan.Core10.Enums.Format (Format)
@@ -73,7 +80,6 @@
 import Vulkan.Core10.Handles (Image)
 import Vulkan.Core10.Handles (Image(..))
 import Vulkan.Core10.Enums.ImageAspectFlagBits (ImageAspectFlags)
-import Vulkan.Core10.Image (ImageSubresource)
 import Vulkan.Core10.Enums.ImageTiling (ImageTiling)
 import Vulkan.Core10.Enums.ImageTiling (ImageTiling(..))
 import Vulkan.Core10.Enums.ImageType (ImageType)
@@ -81,7 +87,7 @@
 import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlagBits(..))
 import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)
 import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceSparseImageFormatProperties))
-import Vulkan.Core10.SharedTypes (Offset3D)
+import Vulkan.Core10.FundamentalTypes (Offset3D)
 import Vulkan.CStruct.Extends (PeekChain)
 import Vulkan.CStruct.Extends (PeekChain(..))
 import Vulkan.Core10.Handles (PhysicalDevice)
@@ -108,6 +114,12 @@
 import Vulkan.Zero (Zero(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_SPARSE_INFO))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.Enums.ImageAspectFlagBits (ImageAspectFlagBits(..))
+import Vulkan.Core10.Enums.ImageAspectFlagBits (ImageAspectFlags)
+import Vulkan.Core10.Enums.SparseImageFormatFlagBits (SparseImageFormatFlagBits(..))
+import Vulkan.Core10.Enums.SparseImageFormatFlagBits (SparseImageFormatFlags)
+import Vulkan.Core10.Enums.SparseMemoryBindFlagBits (SparseMemoryBindFlagBits(..))
+import Vulkan.Core10.Enums.SparseMemoryBindFlagBits (SparseMemoryBindFlags)
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -462,7 +474,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.SharedTypes.Extent3D',
+-- 'Vulkan.Core10.FundamentalTypes.Extent3D',
 -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags',
 -- 'Vulkan.Core10.Enums.SparseImageFormatFlagBits.SparseImageFormatFlags',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.SparseImageFormatProperties2',
@@ -520,7 +532,8 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.DeviceSize', 'SparseImageFormatProperties',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'SparseImageFormatProperties',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.SparseImageMemoryRequirements2',
 -- 'getImageSparseMemoryRequirements'
 data SparseImageMemoryRequirements = SparseImageMemoryRequirements
@@ -589,6 +602,71 @@
            zero
 
 
+-- | VkImageSubresource - Structure specifying an image subresource
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags',
+-- 'SparseImageMemoryBind', 'Vulkan.Core10.Image.getImageSubresourceLayout'
+data ImageSubresource = ImageSubresource
+  { -- | @aspectMask@ is a
+    -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags' selecting the
+    -- image /aspect/.
+    --
+    -- @aspectMask@ /must/ be a valid combination of
+    -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits' values
+    --
+    -- @aspectMask@ /must/ not be @0@
+    aspectMask :: ImageAspectFlags
+  , -- | @mipLevel@ selects the mipmap level.
+    mipLevel :: Word32
+  , -- | @arrayLayer@ selects the array layer.
+    arrayLayer :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ImageSubresource)
+#endif
+deriving instance Show ImageSubresource
+
+instance ToCStruct ImageSubresource where
+  withCStruct x f = allocaBytesAligned 12 4 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ImageSubresource{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr ImageAspectFlags)) (aspectMask)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (mipLevel)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (arrayLayer)
+    f
+  cStructSize = 12
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr ImageAspectFlags)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct ImageSubresource where
+  peekCStruct p = do
+    aspectMask <- peek @ImageAspectFlags ((p `plusPtr` 0 :: Ptr ImageAspectFlags))
+    mipLevel <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    arrayLayer <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
+    pure $ ImageSubresource
+             aspectMask mipLevel arrayLayer
+
+instance Storable ImageSubresource where
+  sizeOf ~_ = 12
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ImageSubresource where
+  zero = ImageSubresource
+           zero
+           zero
+           zero
+
+
 -- | VkSparseMemoryBind - Structure specifying a sparse memory bind operation
 --
 -- = Description
@@ -671,8 +749,8 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.DeviceMemory',
--- 'Vulkan.Core10.BaseType.DeviceSize', 'SparseBufferMemoryBindInfo',
--- 'SparseImageOpaqueMemoryBindInfo',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'SparseBufferMemoryBindInfo', 'SparseImageOpaqueMemoryBindInfo',
 -- 'Vulkan.Core10.Enums.SparseMemoryBindFlagBits.SparseMemoryBindFlags'
 data SparseMemoryBind = SparseMemoryBind
   { -- | @resourceOffset@ is the offset into the resource.
@@ -796,8 +874,7 @@
 --
 -- == Valid Usage (Implicit)
 --
--- -   @subresource@ /must/ be a valid
---     'Vulkan.Core10.Image.ImageSubresource' structure
+-- -   @subresource@ /must/ be a valid 'ImageSubresource' structure
 --
 -- -   If @memory@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
 --     @memory@ /must/ be a valid 'Vulkan.Core10.Handles.DeviceMemory'
@@ -810,10 +887,9 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.DeviceMemory',
--- 'Vulkan.Core10.BaseType.DeviceSize',
--- 'Vulkan.Core10.SharedTypes.Extent3D',
--- 'Vulkan.Core10.Image.ImageSubresource',
--- 'Vulkan.Core10.SharedTypes.Offset3D', 'SparseImageMemoryBindInfo',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.FundamentalTypes.Extent3D', 'ImageSubresource',
+-- 'Vulkan.Core10.FundamentalTypes.Offset3D', 'SparseImageMemoryBindInfo',
 -- 'Vulkan.Core10.Enums.SparseMemoryBindFlagBits.SparseMemoryBindFlags'
 data SparseImageMemoryBind = SparseImageMemoryBind
   { -- | @subresource@ is the image /aspect/ and region of interest in the image.
@@ -1187,7 +1263,7 @@
 -- 'SparseImageMemoryBindInfo', 'SparseImageOpaqueMemoryBindInfo',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'queueBindSparse'
 data BindSparseInfo (es :: [Type]) = BindSparseInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @pWaitSemaphores@ is a pointer to an array of semaphores upon which to
     -- wait on before the sparse binding operations for this batch begin
diff --git a/src/Vulkan/Core10/SparseResourceMemoryManagement.hs-boot b/src/Vulkan/Core10/SparseResourceMemoryManagement.hs-boot
--- a/src/Vulkan/Core10/SparseResourceMemoryManagement.hs-boot
+++ b/src/Vulkan/Core10/SparseResourceMemoryManagement.hs-boot
@@ -1,5 +1,6 @@
 {-# language CPP #-}
 module Vulkan.Core10.SparseResourceMemoryManagement  ( BindSparseInfo
+                                                     , ImageSubresource
                                                      , SparseBufferMemoryBindInfo
                                                      , SparseImageFormatProperties
                                                      , SparseImageMemoryBind
@@ -23,6 +24,14 @@
 instance Show (Chain es) => Show (BindSparseInfo es)
 
 instance (Extendss BindSparseInfo es, PeekChain es) => FromCStruct (BindSparseInfo es)
+
+
+data ImageSubresource
+
+instance ToCStruct ImageSubresource
+instance Show ImageSubresource
+
+instance FromCStruct ImageSubresource
 
 
 data SparseBufferMemoryBindInfo
diff --git a/src/Vulkan/Core11/Enums/CommandPoolTrimFlags.hs b/src/Vulkan/Core11/Enums/CommandPoolTrimFlags.hs
--- a/src/Vulkan/Core11/Enums/CommandPoolTrimFlags.hs
+++ b/src/Vulkan/Core11/Enums/CommandPoolTrimFlags.hs
@@ -14,7 +14,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkCommandPoolTrimFlags - Reserved for future use
 --
diff --git a/src/Vulkan/Core11/Enums/DescriptorUpdateTemplateCreateFlags.hs b/src/Vulkan/Core11/Enums/DescriptorUpdateTemplateCreateFlags.hs
--- a/src/Vulkan/Core11/Enums/DescriptorUpdateTemplateCreateFlags.hs
+++ b/src/Vulkan/Core11/Enums/DescriptorUpdateTemplateCreateFlags.hs
@@ -14,7 +14,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkDescriptorUpdateTemplateCreateFlags - Reserved for future use
 --
diff --git a/src/Vulkan/Core11/Enums/ExternalFenceFeatureFlagBits.hs b/src/Vulkan/Core11/Enums/ExternalFenceFeatureFlagBits.hs
--- a/src/Vulkan/Core11/Enums/ExternalFenceFeatureFlagBits.hs
+++ b/src/Vulkan/Core11/Enums/ExternalFenceFeatureFlagBits.hs
@@ -19,7 +19,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkExternalFenceFeatureFlagBits - Bitfield describing features of an
 -- external fence handle type
diff --git a/src/Vulkan/Core11/Enums/ExternalFenceHandleTypeFlagBits.hs b/src/Vulkan/Core11/Enums/ExternalFenceHandleTypeFlagBits.hs
--- a/src/Vulkan/Core11/Enums/ExternalFenceHandleTypeFlagBits.hs
+++ b/src/Vulkan/Core11/Enums/ExternalFenceHandleTypeFlagBits.hs
@@ -21,7 +21,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkExternalFenceHandleTypeFlagBits - Bitmask of valid external fence
 -- handle types
diff --git a/src/Vulkan/Core11/Enums/ExternalMemoryFeatureFlagBits.hs b/src/Vulkan/Core11/Enums/ExternalMemoryFeatureFlagBits.hs
--- a/src/Vulkan/Core11/Enums/ExternalMemoryFeatureFlagBits.hs
+++ b/src/Vulkan/Core11/Enums/ExternalMemoryFeatureFlagBits.hs
@@ -20,7 +20,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkExternalMemoryFeatureFlagBits - Bitmask specifying features of an
 -- external memory handle type
diff --git a/src/Vulkan/Core11/Enums/ExternalMemoryHandleTypeFlagBits.hs b/src/Vulkan/Core11/Enums/ExternalMemoryHandleTypeFlagBits.hs
--- a/src/Vulkan/Core11/Enums/ExternalMemoryHandleTypeFlagBits.hs
+++ b/src/Vulkan/Core11/Enums/ExternalMemoryHandleTypeFlagBits.hs
@@ -28,7 +28,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkExternalMemoryHandleTypeFlagBits - Bit specifying external memory
 -- handle types
@@ -160,8 +160,9 @@
 -- invalid if the host memory is freed.
 pattern EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = ExternalMemoryHandleTypeFlagBits 0x00000080
 -- | 'EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID'
--- specifies an 'Vulkan.Extensions.WSITypes.AHardwareBuffer' object defined
--- by the Android NDK. See
+-- specifies an
+-- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AHardwareBuffer'
+-- object defined by the Android NDK. See
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer Android Hardware Buffers>
 -- for more details of this handle type.
 pattern EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = ExternalMemoryHandleTypeFlagBits 0x00000400
diff --git a/src/Vulkan/Core11/Enums/ExternalSemaphoreFeatureFlagBits.hs b/src/Vulkan/Core11/Enums/ExternalSemaphoreFeatureFlagBits.hs
--- a/src/Vulkan/Core11/Enums/ExternalSemaphoreFeatureFlagBits.hs
+++ b/src/Vulkan/Core11/Enums/ExternalSemaphoreFeatureFlagBits.hs
@@ -19,7 +19,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkExternalSemaphoreFeatureFlagBits - Bitfield describing features of an
 -- external semaphore handle type
diff --git a/src/Vulkan/Core11/Enums/ExternalSemaphoreHandleTypeFlagBits.hs b/src/Vulkan/Core11/Enums/ExternalSemaphoreHandleTypeFlagBits.hs
--- a/src/Vulkan/Core11/Enums/ExternalSemaphoreHandleTypeFlagBits.hs
+++ b/src/Vulkan/Core11/Enums/ExternalSemaphoreHandleTypeFlagBits.hs
@@ -22,7 +22,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkExternalSemaphoreHandleTypeFlagBits - Bitmask of valid external
 -- semaphore handle types
diff --git a/src/Vulkan/Core11/Enums/FenceImportFlagBits.hs b/src/Vulkan/Core11/Enums/FenceImportFlagBits.hs
--- a/src/Vulkan/Core11/Enums/FenceImportFlagBits.hs
+++ b/src/Vulkan/Core11/Enums/FenceImportFlagBits.hs
@@ -18,7 +18,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkFenceImportFlagBits - Bitmask specifying additional parameters of
 -- fence payload import
diff --git a/src/Vulkan/Core11/Enums/MemoryAllocateFlagBits.hs b/src/Vulkan/Core11/Enums/MemoryAllocateFlagBits.hs
--- a/src/Vulkan/Core11/Enums/MemoryAllocateFlagBits.hs
+++ b/src/Vulkan/Core11/Enums/MemoryAllocateFlagBits.hs
@@ -20,7 +20,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkMemoryAllocateFlagBits - Bitmask specifying flags for a device memory
 -- allocation
diff --git a/src/Vulkan/Core11/Enums/PeerMemoryFeatureFlagBits.hs b/src/Vulkan/Core11/Enums/PeerMemoryFeatureFlagBits.hs
--- a/src/Vulkan/Core11/Enums/PeerMemoryFeatureFlagBits.hs
+++ b/src/Vulkan/Core11/Enums/PeerMemoryFeatureFlagBits.hs
@@ -21,7 +21,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkPeerMemoryFeatureFlagBits - Bitmask specifying supported peer memory
 -- features
diff --git a/src/Vulkan/Core11/Enums/SemaphoreImportFlagBits.hs b/src/Vulkan/Core11/Enums/SemaphoreImportFlagBits.hs
--- a/src/Vulkan/Core11/Enums/SemaphoreImportFlagBits.hs
+++ b/src/Vulkan/Core11/Enums/SemaphoreImportFlagBits.hs
@@ -18,7 +18,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkSemaphoreImportFlagBits - Bitmask specifying additional parameters of
 -- semaphore payload import
diff --git a/src/Vulkan/Core11/Enums/SubgroupFeatureFlagBits.hs b/src/Vulkan/Core11/Enums/SubgroupFeatureFlagBits.hs
--- a/src/Vulkan/Core11/Enums/SubgroupFeatureFlagBits.hs
+++ b/src/Vulkan/Core11/Enums/SubgroupFeatureFlagBits.hs
@@ -26,7 +26,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkSubgroupFeatureFlagBits - Enum describing what group operations are
 -- supported with subgroup scope
diff --git a/src/Vulkan/Core11/Originally_Based_On_VK_KHR_protected_memory.hs b/src/Vulkan/Core11/Originally_Based_On_VK_KHR_protected_memory.hs
--- a/src/Vulkan/Core11/Originally_Based_On_VK_KHR_protected_memory.hs
+++ b/src/Vulkan/Core11/Originally_Based_On_VK_KHR_protected_memory.hs
@@ -45,9 +45,9 @@
 import Data.Word (Word32)
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Handles (Device)
 import Vulkan.Core10.Handles (Device(..))
 import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceQueue2))
@@ -126,14 +126,14 @@
 -- == Valid Usage
 --
 -- -   If the protected memory feature is not enabled, @protectedSubmit@
---     /must/ not be 'Vulkan.Core10.BaseType.TRUE'
+--     /must/ not be 'Vulkan.Core10.FundamentalTypes.TRUE'
 --
--- -   If @protectedSubmit@ is 'Vulkan.Core10.BaseType.TRUE', then each
---     element of the @pCommandBuffers@ array /must/ be a protected command
---     buffer
+-- -   If @protectedSubmit@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+--     each element of the @pCommandBuffers@ array /must/ be a protected
+--     command buffer
 --
--- -   If @protectedSubmit@ is 'Vulkan.Core10.BaseType.FALSE', then each
---     element of the @pCommandBuffers@ array /must/ be an unprotected
+-- -   If @protectedSubmit@ is 'Vulkan.Core10.FundamentalTypes.FALSE', then
+--     each element of the @pCommandBuffers@ array /must/ be an unprotected
 --     command buffer
 --
 -- -   If the 'Vulkan.Core10.Queue.SubmitInfo'::@pNext@ chain does not
@@ -148,14 +148,15 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data ProtectedSubmitInfo = ProtectedSubmitInfo
   { -- | @protectedSubmit@ specifies whether the batch is protected. If
-    -- @protectedSubmit@ is 'Vulkan.Core10.BaseType.TRUE', the batch is
-    -- protected. If @protectedSubmit@ is 'Vulkan.Core10.BaseType.FALSE', the
-    -- batch is unprotected. If the 'Vulkan.Core10.Queue.SubmitInfo'::@pNext@
-    -- chain does not include this structure, the batch is unprotected.
+    -- @protectedSubmit@ is 'Vulkan.Core10.FundamentalTypes.TRUE', the batch is
+    -- protected. If @protectedSubmit@ is
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE', the batch is unprotected. If the
+    -- 'Vulkan.Core10.Queue.SubmitInfo'::@pNext@ chain does not include this
+    -- structure, the batch is unprotected.
     protectedSubmit :: Bool }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
@@ -209,7 +210,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceProtectedMemoryFeatures = PhysicalDeviceProtectedMemoryFeatures
   { -- | @protectedMemory@ specifies whether protected memory is supported.
@@ -267,14 +268,14 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceProtectedMemoryProperties = PhysicalDeviceProtectedMemoryProperties
   { -- | @protectedNoFault@ specifies the behavior of the implementation when
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-protected-access-rules protected memory access rules>
-    -- are broken. If @protectedNoFault@ is 'Vulkan.Core10.BaseType.TRUE',
-    -- breaking those rules will not result in process termination or device
-    -- loss.
+    -- are broken. If @protectedNoFault@ is
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE', breaking those rules will not
+    -- result in process termination or device loss.
     protectedNoFault :: Bool }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
diff --git a/src/Vulkan/Core11/Originally_Based_On_VK_KHR_subgroup.hs b/src/Vulkan/Core11/Originally_Based_On_VK_KHR_subgroup.hs
--- a/src/Vulkan/Core11/Originally_Based_On_VK_KHR_subgroup.hs
+++ b/src/Vulkan/Core11/Originally_Based_On_VK_KHR_subgroup.hs
@@ -17,9 +17,9 @@
 import Foreign.Ptr (Ptr)
 import Data.Word (Word32)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
@@ -55,7 +55,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SubgroupFeatureFlags'
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_16bit_storage.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_16bit_storage.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_16bit_storage.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_16bit_storage.hs
@@ -14,9 +14,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -32,7 +32,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDevice16BitStorageFeatures = PhysicalDevice16BitStorageFeatures
   { -- | @storageBuffer16BitAccess@ specifies whether objects in the
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_bind_memory2.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_bind_memory2.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_bind_memory2.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_bind_memory2.hs
@@ -49,7 +49,7 @@
 import Vulkan.Dynamic (DeviceCmds(pVkBindBufferMemory2))
 import Vulkan.Dynamic (DeviceCmds(pVkBindImageMemory2))
 import Vulkan.Core10.Handles (DeviceMemory)
-import Vulkan.Core10.BaseType (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
 import Vulkan.Core10.Handles (Device_T)
 import Vulkan.CStruct.Extends (Extends)
 import Vulkan.CStruct.Extends (Extendss)
@@ -249,8 +249,8 @@
 --
 -- -   If @buffer@ was created with
 --     'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationBufferCreateInfoNV'::@dedicatedAllocation@
---     equal to 'Vulkan.Core10.BaseType.TRUE', @memory@ /must/ have been
---     created with
+--     equal to 'Vulkan.Core10.FundamentalTypes.TRUE', @memory@ /must/ have
+--     been created with
 --     'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV'::@buffer@
 --     equal to @buffer@ and @memoryOffset@ /must/ be zero
 --
@@ -312,11 +312,11 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.DeviceMemory',
--- 'Vulkan.Core10.BaseType.DeviceSize',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'bindBufferMemory2',
 -- 'Vulkan.Extensions.VK_KHR_bind_memory2.bindBufferMemory2KHR'
 data BindBufferMemoryInfo (es :: [Type]) = BindBufferMemoryInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @buffer@ is the buffer to be attached to memory.
     buffer :: Buffer
@@ -517,8 +517,8 @@
 --
 -- -   If @image@ was created with
 --     'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationImageCreateInfoNV'::@dedicatedAllocation@
---     equal to 'Vulkan.Core10.BaseType.TRUE', @memory@ /must/ have been
---     created with
+--     equal to 'Vulkan.Core10.FundamentalTypes.TRUE', @memory@ /must/ have
+--     been created with
 --     'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV'::@image@
 --     equal to @image@ and @memoryOffset@ /must/ be zero
 --
@@ -613,11 +613,12 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.DeviceMemory',
--- 'Vulkan.Core10.BaseType.DeviceSize', 'Vulkan.Core10.Handles.Image',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Handles.Image',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'bindImageMemory2',
 -- 'Vulkan.Extensions.VK_KHR_bind_memory2.bindImageMemory2KHR'
 data BindImageMemoryInfo (es :: [Type]) = BindImageMemoryInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @image@ is the image to be attached to memory.
     image :: Image
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_dedicated_allocation.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_dedicated_allocation.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_dedicated_allocation.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_dedicated_allocation.hs
@@ -15,9 +15,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Handles (Buffer)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
@@ -35,8 +35,8 @@
 -- = Description
 --
 -- When the implementation sets @requiresDedicatedAllocation@ to
--- 'Vulkan.Core10.BaseType.TRUE', it /must/ also set
--- @prefersDedicatedAllocation@ to 'Vulkan.Core10.BaseType.TRUE'.
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', it /must/ also set
+-- @prefersDedicatedAllocation@ to 'Vulkan.Core10.FundamentalTypes.TRUE'.
 --
 -- If the 'MemoryDedicatedRequirements' structure is included in the
 -- @pNext@ chain of the
@@ -44,7 +44,8 @@
 -- structure passed as the @pMemoryRequirements@ parameter of a
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2'
 -- call, @requiresDedicatedAllocation@ /may/ be
--- 'Vulkan.Core10.BaseType.TRUE' under one of the following conditions:
+-- 'Vulkan.Core10.FundamentalTypes.TRUE' under one of the following
+-- conditions:
 --
 -- -   The @pNext@ chain of 'Vulkan.Core10.Buffer.BufferCreateInfo' for the
 --     call to 'Vulkan.Core10.Buffer.createBuffer' used to create the
@@ -57,10 +58,10 @@
 --     in
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalBufferProperties'::@externalMemoryProperties.externalMemoryFeatures@,
 --     the @requiresDedicatedAllocation@ field will be set to
---     'Vulkan.Core10.BaseType.TRUE'.
+--     'Vulkan.Core10.FundamentalTypes.TRUE'.
 --
 -- In all other cases, @requiresDedicatedAllocation@ /must/ be set to
--- 'Vulkan.Core10.BaseType.FALSE' by the implementation whenever a
+-- 'Vulkan.Core10.FundamentalTypes.FALSE' by the implementation whenever a
 -- 'MemoryDedicatedRequirements' structure is included in the @pNext@ chain
 -- of the
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'
@@ -77,7 +78,7 @@
 -- was set in 'Vulkan.Core10.Buffer.BufferCreateInfo'::@flags@ when
 -- @buffer@ was created then the implementation /must/ set both
 -- @prefersDedicatedAllocation@ and @requiresDedicatedAllocation@ to
--- 'Vulkan.Core10.BaseType.FALSE'.
+-- 'Vulkan.Core10.FundamentalTypes.FALSE'.
 --
 -- If the 'MemoryDedicatedRequirements' structure is included in the
 -- @pNext@ chain of the
@@ -85,7 +86,8 @@
 -- structure passed as the @pMemoryRequirements@ parameter of a
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2'
 -- call, @requiresDedicatedAllocation@ /may/ be
--- 'Vulkan.Core10.BaseType.TRUE' under one of the following conditions:
+-- 'Vulkan.Core10.FundamentalTypes.TRUE' under one of the following
+-- conditions:
 --
 -- -   The @pNext@ chain of 'Vulkan.Core10.Image.ImageCreateInfo' for the
 --     call to 'Vulkan.Core10.Image.createImage' used to create the image
@@ -98,10 +100,10 @@
 --     in
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalImageFormatProperties'::@externalMemoryProperties.externalMemoryFeatures@,
 --     the @requiresDedicatedAllocation@ field will be set to
---     'Vulkan.Core10.BaseType.TRUE'.
+--     'Vulkan.Core10.FundamentalTypes.TRUE'.
 --
 -- In all other cases, @requiresDedicatedAllocation@ /must/ be set to
--- 'Vulkan.Core10.BaseType.FALSE' by the implementation whenever a
+-- 'Vulkan.Core10.FundamentalTypes.FALSE' by the implementation whenever a
 -- 'MemoryDedicatedRequirements' structure is included in the @pNext@ chain
 -- of the
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'
@@ -118,7 +120,7 @@
 -- was set in 'Vulkan.Core10.Image.ImageCreateInfo'::@flags@ when @image@
 -- was created then the implementation /must/ set both
 -- @prefersDedicatedAllocation@ and @requiresDedicatedAllocation@ to
--- 'Vulkan.Core10.BaseType.FALSE'.
+-- 'Vulkan.Core10.FundamentalTypes.FALSE'.
 --
 -- == Valid Usage (Implicit)
 --
@@ -127,7 +129,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data MemoryDedicatedRequirements = MemoryDedicatedRequirements
   { -- | @prefersDedicatedAllocation@ specifies that the implementation would
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_device_group.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_device_group.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_device_group.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_device_group.hs
@@ -65,7 +65,7 @@
 import Vulkan.Core11.Enums.MemoryAllocateFlagBits (MemoryAllocateFlags)
 import Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits (PeerMemoryFeatureFlagBits(..))
 import Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits (PeerMemoryFeatureFlags)
-import Vulkan.Core10.CommandBufferBuilding (Rect2D)
+import Vulkan.Core10.FundamentalTypes (Rect2D)
 import Vulkan.Core10.Enums.StructureType (StructureType)
 import Vulkan.CStruct (ToCStruct)
 import Vulkan.CStruct (ToCStruct(..))
@@ -493,8 +493,8 @@
 -- consume memory on all physical devices even if the @deviceMask@ excludes
 -- some devices. If
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.PhysicalDeviceGroupProperties'::@subsetAllocation@
--- is 'Vulkan.Core10.BaseType.TRUE', then memory is only consumed for the
--- devices in the device mask.
+-- is 'Vulkan.Core10.FundamentalTypes.TRUE', then memory is only consumed
+-- for the devices in the device mask.
 --
 -- Note
 --
@@ -628,18 +628,18 @@
 --
 -- -   If @deviceRenderAreaCount@ is not @0@, @pDeviceRenderAreas@ /must/
 --     be a valid pointer to an array of @deviceRenderAreaCount@
---     'Vulkan.Core10.CommandBufferBuilding.Rect2D' structures
+--     'Vulkan.Core10.FundamentalTypes.Rect2D' structures
 --
 -- = See Also
 --
--- 'Vulkan.Core10.CommandBufferBuilding.Rect2D',
+-- 'Vulkan.Core10.FundamentalTypes.Rect2D',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data DeviceGroupRenderPassBeginInfo = DeviceGroupRenderPassBeginInfo
   { -- | @deviceMask@ is the device mask for the render pass instance.
     deviceMask :: Word32
   , -- | @pDeviceRenderAreas@ is a pointer to an array of
-    -- 'Vulkan.Core10.CommandBufferBuilding.Rect2D' structures defining the
-    -- render area for each physical device.
+    -- 'Vulkan.Core10.FundamentalTypes.Rect2D' structures defining the render
+    -- area for each physical device.
     deviceRenderAreas :: Vector Rect2D
   }
   deriving (Typeable)
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.hs
@@ -26,7 +26,7 @@
 import Vulkan.CStruct.Utils (advancePtrBytes)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.Core10.CommandBufferBuilding (Rect2D)
+import Vulkan.Core10.FundamentalTypes (Rect2D)
 import Vulkan.Core10.Enums.StructureType (StructureType)
 import Vulkan.CStruct (ToCStruct)
 import Vulkan.CStruct (ToCStruct(..))
@@ -53,7 +53,8 @@
 --
 -- -   @sType@ is the type of this structure.
 --
--- -   @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+-- -   @pNext@ is @NULL@ or a pointer to a structure extending this
+--     structure.
 --
 -- -   @deviceIndexCount@ is the number of elements in @pDeviceIndices@.
 --
@@ -155,7 +156,8 @@
 --
 -- -   @sType@ is the type of this structure.
 --
--- -   @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+-- -   @pNext@ is @NULL@ or a pointer to a structure extending this
+--     structure.
 --
 -- -   @deviceIndexCount@ is the number of elements in @pDeviceIndices@.
 --
@@ -165,8 +167,8 @@
 --     @pSplitInstanceBindRegions@.
 --
 -- -   @pSplitInstanceBindRegions@ is a pointer to an array of
---     'Vulkan.Core10.CommandBufferBuilding.Rect2D' structures describing
---     which regions of the image are attached to each instance of memory.
+--     'Vulkan.Core10.FundamentalTypes.Rect2D' structures describing which
+--     regions of the image are attached to each instance of memory.
 --
 -- If @deviceIndexCount@ is greater than zero, then on device index i
 -- @image@ is attached to the instance of the memory on the physical device
@@ -249,11 +251,11 @@
 -- -   If @splitInstanceBindRegionCount@ is not @0@,
 --     @pSplitInstanceBindRegions@ /must/ be a valid pointer to an array of
 --     @splitInstanceBindRegionCount@
---     'Vulkan.Core10.CommandBufferBuilding.Rect2D' structures
+--     'Vulkan.Core10.FundamentalTypes.Rect2D' structures
 --
 -- = See Also
 --
--- 'Vulkan.Core10.CommandBufferBuilding.Rect2D',
+-- 'Vulkan.Core10.FundamentalTypes.Rect2D',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data BindImageMemoryDeviceGroupInfo = BindImageMemoryDeviceGroupInfo
   { -- No documentation found for Nested "VkBindImageMemoryDeviceGroupInfo" "pDeviceIndices"
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_device_group_creation.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_device_group_creation.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_device_group_creation.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_device_group_creation.hs
@@ -42,11 +42,11 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
 import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.CStruct.Utils (lowerArrayPtr)
 import Vulkan.NamedType ((:::))
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Handles (Instance)
@@ -162,7 +162,8 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32', 'Vulkan.Core10.Handles.PhysicalDevice',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Handles.PhysicalDevice',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'enumeratePhysicalDeviceGroups',
 -- 'Vulkan.Extensions.VK_KHR_device_group_creation.enumeratePhysicalDeviceGroupsKHR'
@@ -179,10 +180,10 @@
     -- group support allocating device memory on a subset of devices, via the
     -- @deviceMask@ member of the
     -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.MemoryAllocateFlagsInfo'.
-    -- If this is 'Vulkan.Core10.BaseType.FALSE', then all device memory
-    -- allocations are made across all physical devices in the group. If
+    -- If this is 'Vulkan.Core10.FundamentalTypes.FALSE', then all device
+    -- memory allocations are made across all physical devices in the group. If
     -- @physicalDeviceCount@ is @1@, then @subsetAllocation@ /must/ be
-    -- 'Vulkan.Core10.BaseType.FALSE'.
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE'.
     subsetAllocation :: Bool
   }
   deriving (Typeable)
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_external_memory_capabilities.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_external_memory_capabilities.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_external_memory_capabilities.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_external_memory_capabilities.hs
@@ -41,11 +41,11 @@
 import Data.ByteString (ByteString)
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.CStruct.Utils (peekByteStringFromSizedVectorPtr)
 import Vulkan.CStruct.Utils (pokeFixedLengthByteString)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Enums.BufferCreateFlagBits (BufferCreateFlags)
 import Vulkan.Core10.Enums.BufferUsageFlagBits (BufferUsageFlags)
 import Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits (ExternalMemoryFeatureFlags)
@@ -471,9 +471,9 @@
 --     within a linked device adapter corresponding to the device.
 --
 -- -   @deviceLUIDValid@ is a boolean value that will be
---     'Vulkan.Core10.BaseType.TRUE' if @deviceLUID@ contains a valid LUID
---     and @deviceNodeMask@ contains a valid node mask, and
---     'Vulkan.Core10.BaseType.FALSE' if they do not.
+--     'Vulkan.Core10.FundamentalTypes.TRUE' if @deviceLUID@ contains a
+--     valid LUID and @deviceNodeMask@ contains a valid node mask, and
+--     'Vulkan.Core10.FundamentalTypes.FALSE' if they do not.
 --
 -- @deviceUUID@ /must/ be immutable for a given device across instances,
 -- processes, driver APIs, driver versions, and system reboots.
@@ -494,18 +494,19 @@
 --
 -- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-fence-handle-types-compatibility External fence handle types compatibility>
 --
--- If @deviceLUIDValid@ is 'Vulkan.Core10.BaseType.FALSE', the values of
--- @deviceLUID@ and @deviceNodeMask@ are undefined. If @deviceLUIDValid@ is
--- 'Vulkan.Core10.BaseType.TRUE' and Vulkan is running on the Windows
--- operating system, the contents of @deviceLUID@ /can/ be cast to an
--- @LUID@ object and /must/ be equal to the locally unique identifier of a
--- @IDXGIAdapter1@ object that corresponds to @physicalDevice@. If
--- @deviceLUIDValid@ is 'Vulkan.Core10.BaseType.TRUE', @deviceNodeMask@
--- /must/ contain exactly one bit. If Vulkan is running on an operating
--- system that supports the Direct3D 12 API and @physicalDevice@
--- corresponds to an individual device in a linked device adapter,
--- @deviceNodeMask@ identifies the Direct3D 12 node corresponding to
--- @physicalDevice@. Otherwise, @deviceNodeMask@ /must/ be @1@.
+-- If @deviceLUIDValid@ is 'Vulkan.Core10.FundamentalTypes.FALSE', the
+-- values of @deviceLUID@ and @deviceNodeMask@ are undefined. If
+-- @deviceLUIDValid@ is 'Vulkan.Core10.FundamentalTypes.TRUE' and Vulkan is
+-- running on the Windows operating system, the contents of @deviceLUID@
+-- /can/ be cast to an @LUID@ object and /must/ be equal to the locally
+-- unique identifier of a @IDXGIAdapter1@ object that corresponds to
+-- @physicalDevice@. If @deviceLUIDValid@ is
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', @deviceNodeMask@ /must/ contain
+-- exactly one bit. If Vulkan is running on an operating system that
+-- supports the Direct3D 12 API and @physicalDevice@ corresponds to an
+-- individual device in a linked device adapter, @deviceNodeMask@
+-- identifies the Direct3D 12 node corresponding to @physicalDevice@.
+-- Otherwise, @deviceNodeMask@ /must/ be @1@.
 --
 -- Note
 --
@@ -539,7 +540,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceIDProperties = PhysicalDeviceIDProperties
   { -- No documentation found for Nested "VkPhysicalDeviceIDProperties" "deviceUUID"
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_external_semaphore_capabilities.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_external_semaphore_capabilities.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_external_semaphore_capabilities.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_external_semaphore_capabilities.hs
@@ -135,7 +135,7 @@
 -- 'getPhysicalDeviceExternalSemaphoreProperties',
 -- 'Vulkan.Extensions.VK_KHR_external_semaphore_capabilities.getPhysicalDeviceExternalSemaphorePropertiesKHR'
 data PhysicalDeviceExternalSemaphoreInfo (es :: [Type]) = PhysicalDeviceExternalSemaphoreInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @handleType@ is a
     -- 'Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits'
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_get_memory_requirements2.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_get_memory_requirements2.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_get_memory_requirements2.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_get_memory_requirements2.hs
@@ -7,7 +7,6 @@
                                                                     , ImageSparseMemoryRequirementsInfo2(..)
                                                                     , MemoryRequirements2(..)
                                                                     , SparseImageMemoryRequirements2(..)
-                                                                    , MemoryRequirements2KHR
                                                                     , StructureType(..)
                                                                     ) where
 
@@ -339,7 +338,7 @@
 -- 'getImageMemoryRequirements2',
 -- 'Vulkan.Extensions.VK_KHR_get_memory_requirements2.getImageMemoryRequirements2KHR'
 data ImageMemoryRequirementsInfo2 (es :: [Type]) = ImageMemoryRequirementsInfo2
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @image@ is the image to query.
     image :: Image
@@ -467,7 +466,7 @@
 -- 'getImageMemoryRequirements2',
 -- 'Vulkan.Extensions.VK_KHR_get_memory_requirements2.getImageMemoryRequirements2KHR'
 data MemoryRequirements2 (es :: [Type]) = MemoryRequirements2
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @memoryRequirements@ is a
     -- 'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure describing
@@ -565,8 +564,4 @@
 instance Zero SparseImageMemoryRequirements2 where
   zero = SparseImageMemoryRequirements2
            zero
-
-
--- No documentation found for TopLevel "VkMemoryRequirements2KHR"
-type MemoryRequirements2KHR = MemoryRequirements2
 
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_get_memory_requirements2.hs-boot b/src/Vulkan/Core11/Promoted_From_VK_KHR_get_memory_requirements2.hs-boot
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_get_memory_requirements2.hs-boot
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_get_memory_requirements2.hs-boot
@@ -4,7 +4,6 @@
                                                                     , ImageSparseMemoryRequirementsInfo2
                                                                     , MemoryRequirements2
                                                                     , SparseImageMemoryRequirements2
-                                                                    , MemoryRequirements2KHR
                                                                     ) where
 
 import Data.Kind (Type)
@@ -54,8 +53,4 @@
 instance Show SparseImageMemoryRequirements2
 
 instance FromCStruct SparseImageMemoryRequirements2
-
-
--- No documentation found for TopLevel "VkMemoryRequirements2KHR"
-type MemoryRequirements2KHR = MemoryRequirements2
 
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_get_physical_device_properties2.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_get_physical_device_properties2.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_get_physical_device_properties2.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_get_physical_device_properties2.hs
@@ -541,7 +541,7 @@
 --
 -- 'getPhysicalDeviceSparseImageFormatProperties2' behaves identically to
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.getPhysicalDeviceSparseImageFormatProperties',
--- with the ability to return extended information by adding extension
+-- with the ability to return extended information by adding extending
 -- structures to the @pNext@ chain of its @pProperties@ parameter.
 --
 -- == Valid Usage (Implicit)
@@ -615,7 +615,7 @@
 -- 'getPhysicalDeviceFeatures2',
 -- 'Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2KHR'
 data PhysicalDeviceFeatures2 (es :: [Type]) = PhysicalDeviceFeatures2
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @features@ is a
     -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceFeatures' structure
@@ -797,7 +797,7 @@
 -- 'getPhysicalDeviceProperties2',
 -- 'Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2KHR'
 data PhysicalDeviceProperties2 (es :: [Type]) = PhysicalDeviceProperties2
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @properties@ is a
     -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties' structure
@@ -912,7 +912,7 @@
 -- 'getPhysicalDeviceFormatProperties2',
 -- 'Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2KHR'
 data FormatProperties2 (es :: [Type]) = FormatProperties2
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @formatProperties@ is a
     -- 'Vulkan.Core10.DeviceInitialization.FormatProperties' structure
@@ -1009,8 +1009,8 @@
 -- 'getPhysicalDeviceImageFormatProperties2',
 -- 'Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2KHR'
 data ImageFormatProperties2 (es :: [Type]) = ImageFormatProperties2
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. The
-    -- @pNext@ chain of 'ImageFormatProperties2' is used to allow the
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    -- The @pNext@ chain of 'ImageFormatProperties2' is used to allow the
     -- specification of additional capabilities to be returned from
     -- 'getPhysicalDeviceImageFormatProperties2'.
     next :: Chain es
@@ -1139,8 +1139,8 @@
 -- 'getPhysicalDeviceImageFormatProperties2',
 -- 'Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2KHR'
 data PhysicalDeviceImageFormatInfo2 (es :: [Type]) = PhysicalDeviceImageFormatInfo2
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. The
-    -- @pNext@ chain of 'PhysicalDeviceImageFormatInfo2' is used to provide
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    -- The @pNext@ chain of 'PhysicalDeviceImageFormatInfo2' is used to provide
     -- additional image parameters to
     -- 'getPhysicalDeviceImageFormatProperties2'.
     next :: Chain es
@@ -1253,7 +1253,7 @@
 -- 'getPhysicalDeviceQueueFamilyProperties2',
 -- 'Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceQueueFamilyProperties2KHR'
 data QueueFamilyProperties2 (es :: [Type]) = QueueFamilyProperties2
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @queueFamilyProperties@ is a
     -- 'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties' structure
@@ -1328,7 +1328,7 @@
 -- 'getPhysicalDeviceMemoryProperties2',
 -- 'Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceMemoryProperties2KHR'
 data PhysicalDeviceMemoryProperties2 (es :: [Type]) = PhysicalDeviceMemoryProperties2
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @memoryProperties@ is a
     -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceMemoryProperties'
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_maintenance3.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_maintenance3.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_maintenance3.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_maintenance3.hs
@@ -31,17 +31,17 @@
 import Data.Word (Word32)
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.CStruct.Extends (forgetExtensions)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct.Extends (Chain)
 import Vulkan.Core10.DescriptorSet (DescriptorSetLayoutCreateInfo)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (DescriptorSetVariableDescriptorCountLayoutSupport)
 import Vulkan.Core10.Handles (Device)
 import Vulkan.Core10.Handles (Device(..))
 import Vulkan.Dynamic (DeviceCmds(pVkGetDescriptorSetLayoutSupport))
-import Vulkan.Core10.BaseType (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
 import Vulkan.Core10.Handles (Device_T)
 import Vulkan.CStruct.Extends (Extends)
 import Vulkan.CStruct.Extends (Extendss)
@@ -79,7 +79,8 @@
 -- This command returns information about whether a descriptor set
 -- satisfies this limit. If the descriptor set layout satisfies the
 -- 'PhysicalDeviceMaintenance3Properties'::@maxPerSetDescriptors@ limit,
--- this command is guaranteed to return 'Vulkan.Core10.BaseType.TRUE' in
+-- this command is guaranteed to return
+-- 'Vulkan.Core10.FundamentalTypes.TRUE' in
 -- 'DescriptorSetLayoutSupport'::@supported@. If the descriptor set layout
 -- exceeds the
 -- 'PhysicalDeviceMaintenance3Properties'::@maxPerSetDescriptors@ limit,
@@ -151,7 +152,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.DeviceSize',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceMaintenance3Properties = PhysicalDeviceMaintenance3Properties
   { -- | @maxPerSetDescriptors@ is a maximum number of descriptors (summed over
@@ -213,8 +214,9 @@
 --
 -- = Description
 --
--- @supported@ is set to 'Vulkan.Core10.BaseType.TRUE' if the descriptor
--- set /can/ be created, or else is set to 'Vulkan.Core10.BaseType.FALSE'.
+-- @supported@ is set to 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+-- descriptor set /can/ be created, or else is set to
+-- 'Vulkan.Core10.FundamentalTypes.FALSE'.
 --
 -- == Valid Usage (Implicit)
 --
@@ -229,12 +231,12 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'getDescriptorSetLayoutSupport',
 -- 'Vulkan.Extensions.VK_KHR_maintenance3.getDescriptorSetLayoutSupportKHR'
 data DescriptorSetLayoutSupport (es :: [Type]) = DescriptorSetLayoutSupport
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @supported@ specifies whether the descriptor set layout /can/ be
     -- created.
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_multiview.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_multiview.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_multiview.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_multiview.hs
@@ -28,9 +28,9 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
 import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -93,7 +93,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceMultiviewFeatures = PhysicalDeviceMultiviewFeatures
   { -- No documentation found for Nested "VkPhysicalDeviceMultiviewFeatures" "multiview"
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_sampler_ycbcr_conversion.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_sampler_ycbcr_conversion.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_sampler_ycbcr_conversion.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_sampler_ycbcr_conversion.hs
@@ -53,12 +53,12 @@
 import Data.Word (Word32)
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.CStruct.Extends (forgetExtensions)
 import Vulkan.NamedType ((:::))
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct.Extends (Chain)
 import Vulkan.Core11.Enums.ChromaLocation (ChromaLocation)
 import Vulkan.Core10.ImageView (ComponentMapping)
@@ -327,14 +327,15 @@
 --
 -- Note
 --
--- Setting @forceExplicitReconstruction@ to 'Vulkan.Core10.BaseType.TRUE'
--- /may/ have a performance penalty on implementations where explicit
--- reconstruction is not the default mode of operation.
+-- Setting @forceExplicitReconstruction@ to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE' /may/ have a performance penalty
+-- on implementations where explicit reconstruction is not the default mode
+-- of operation.
 --
 -- If @format@ supports
 -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT'
 -- the @forceExplicitReconstruction@ value behaves as if it was set to
--- 'Vulkan.Core10.BaseType.TRUE'.
+-- 'Vulkan.Core10.FundamentalTypes.TRUE'.
 --
 -- If the @pNext@ chain includes a
 -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'
@@ -349,9 +350,12 @@
 -- == Valid Usage
 --
 -- -   If an external format conversion is being created, @format@ /must/
---     be 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', otherwise it
---     /must/ not be 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
+--     be 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
 --
+-- -   If an external format conversion is not being created, @format@
+--     /must/ represent unsigned normalized values (i.e. the format must be
+--     a @UNORM@ format)
+--
 -- -   The
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-sampler-ycbcr-conversion-format-features sampler Y′CBCR conversion’s features>
 --     /must/ support
@@ -421,7 +425,7 @@
 --     do not support
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT'
 --     @forceExplicitReconstruction@ /must/ be
---     'Vulkan.Core10.BaseType.FALSE'
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- -   If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-sampler-ycbcr-conversion-format-features sampler Y′CBCR conversion’s features>
@@ -473,7 +477,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core11.Enums.ChromaLocation.ChromaLocation',
 -- 'Vulkan.Core10.ImageView.ComponentMapping',
 -- 'Vulkan.Core10.Enums.Filter.Filter',
@@ -484,7 +488,7 @@
 -- 'createSamplerYcbcrConversion',
 -- 'Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.createSamplerYcbcrConversionKHR'
 data SamplerYcbcrConversionCreateInfo (es :: [Type]) = SamplerYcbcrConversionCreateInfo
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @format@ is the format of the image from which color information will be
     -- retrieved.
@@ -765,14 +769,14 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceSamplerYcbcrConversionFeatures = PhysicalDeviceSamplerYcbcrConversionFeatures
   { -- | @samplerYcbcrConversion@ specifies whether the implementation supports
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>.
-    -- If @samplerYcbcrConversion@ is 'Vulkan.Core10.BaseType.FALSE', sampler
-    -- Y′CBCR conversion is not supported, and samplers using sampler Y′CBCR
-    -- conversion /must/ not be used.
+    -- If @samplerYcbcrConversion@ is 'Vulkan.Core10.FundamentalTypes.FALSE',
+    -- sampler Y′CBCR conversion is not supported, and samplers using sampler
+    -- Y′CBCR conversion /must/ not be used.
     samplerYcbcrConversion :: Bool }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_shader_draw_parameters.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_shader_draw_parameters.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_shader_draw_parameters.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_shader_draw_parameters.hs
@@ -16,9 +16,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -46,7 +46,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceShaderDrawParametersFeatures = PhysicalDeviceShaderDrawParametersFeatures
   { -- | @shaderDrawParameters@ specifies whether shader draw parameters are
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_variable_pointers.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_variable_pointers.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_variable_pointers.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_variable_pointers.hs
@@ -16,9 +16,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -72,7 +72,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceVariablePointersFeatures = PhysicalDeviceVariablePointersFeatures
   { -- No documentation found for Nested "VkPhysicalDeviceVariablePointersFeatures" "variablePointersStorageBuffer"
diff --git a/src/Vulkan/Core12.hs b/src/Vulkan/Core12.hs
--- a/src/Vulkan/Core12.hs
+++ b/src/Vulkan/Core12.hs
@@ -71,15 +71,15 @@
 import Data.ByteString (ByteString)
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.CStruct.Utils (lowerArrayPtr)
 import Vulkan.CStruct.Utils (peekByteStringFromSizedVectorPtr)
 import Vulkan.CStruct.Utils (pokeFixedLengthByteString)
 import Vulkan.CStruct.Utils (pokeFixedLengthNullTerminatedByteString)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core12.Promoted_From_VK_KHR_driver_properties (ConformanceVersion)
-import Vulkan.Core10.BaseType (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
 import Vulkan.Core12.Enums.DriverId (DriverId)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
@@ -128,7 +128,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceVulkan11Features = PhysicalDeviceVulkan11Features
   { -- | @storageBuffer16BitAccess@ specifies whether objects in the
@@ -193,9 +193,9 @@
     protectedMemory :: Bool
   , -- | @samplerYcbcrConversion@ specifies whether the implementation supports
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>.
-    -- If @samplerYcbcrConversion@ is 'Vulkan.Core10.BaseType.FALSE', sampler
-    -- Y′CBCR conversion is not supported, and samplers using sampler Y′CBCR
-    -- conversion /must/ not be used.
+    -- If @samplerYcbcrConversion@ is 'Vulkan.Core10.FundamentalTypes.FALSE',
+    -- sampler Y′CBCR conversion is not supported, and samplers using sampler
+    -- Y′CBCR conversion /must/ not be used.
     samplerYcbcrConversion :: Bool
   , -- | @shaderDrawParameters@ specifies whether shader draw parameters are
     -- supported.
@@ -302,7 +302,8 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32', 'Vulkan.Core10.BaseType.DeviceSize',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core11.Enums.PointClippingBehavior.PointClippingBehavior',
 -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
@@ -324,9 +325,9 @@
     -- linked device adapter corresponding to the device.
     deviceNodeMask :: Word32
   , -- | @deviceLUIDValid@ is a boolean value that will be
-    -- 'Vulkan.Core10.BaseType.TRUE' if @deviceLUID@ contains a valid LUID and
-    -- @deviceNodeMask@ contains a valid node mask, and
-    -- 'Vulkan.Core10.BaseType.FALSE' if they do not.
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if @deviceLUID@ contains a valid
+    -- LUID and @deviceNodeMask@ contains a valid node mask, and
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE' if they do not.
     deviceLUIDValid :: Bool
   , -- | @subgroupSize@ is the default number of invocations in each subgroup.
     -- @subgroupSize@ is at least 1 if any of the physical device’s queues
@@ -369,9 +370,9 @@
     maxMultiviewInstanceIndex :: Word32
   , -- | @protectedNoFault@ specifies the behavior of the implementation when
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-protected-access-rules protected memory access rules>
-    -- are broken. If @protectedNoFault@ is 'Vulkan.Core10.BaseType.TRUE',
-    -- breaking those rules will not result in process termination or device
-    -- loss.
+    -- are broken. If @protectedNoFault@ is
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE', breaking those rules will not
+    -- result in process termination or device loss.
     protectedNoFault :: Bool
   , -- | @maxPerSetDescriptors@ is a maximum number of descriptors (summed over
     -- all descriptor types) in a single descriptor set that is guaranteed to
@@ -837,12 +838,14 @@
 --     built-in decoration /must/ not be used on outputs in vertex or
 --     tessellation evaluation shaders.
 --
--- -   If @subgroupBroadcastDynamicId@ is 'Vulkan.Core10.BaseType.TRUE',
---     the “Id” operand of @OpGroupNonUniformBroadcast@ /can/ be
---     dynamically uniform within a subgroup, and the “Index” operand of
+-- -   If @subgroupBroadcastDynamicId@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', the “Id” operand of
+--     @OpGroupNonUniformBroadcast@ /can/ be dynamically uniform within a
+--     subgroup, and the “Index” operand of
 --     @OpGroupNonUniformQuadBroadcast@ /can/ be dynamically uniform within
---     the derivative group. If it is 'Vulkan.Core10.BaseType.FALSE', these
---     operands /must/ be constants.
+--     the derivative group. If it is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', these operands /must/ be
+--     constants.
 --
 -- If the 'PhysicalDeviceVulkan12Features' structure is included in the
 -- @pNext@ chain of
@@ -858,7 +861,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceVulkan12Features = PhysicalDeviceVulkan12Features
   { -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "samplerMirrorClampToEdge"
@@ -1197,7 +1200,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_driver_properties.ConformanceVersion',
 -- 'Vulkan.Core12.Enums.DriverId.DriverId',
 -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlags',
@@ -1324,38 +1327,38 @@
     maxUpdateAfterBindDescriptorsInAllPools :: Word32
   , -- | @shaderUniformBufferArrayNonUniformIndexingNative@ is a boolean value
     -- indicating whether uniform buffer descriptors natively support
-    -- nonuniform indexing. If this is 'Vulkan.Core10.BaseType.FALSE', then a
-    -- single dynamic instance of an instruction that nonuniformly indexes an
-    -- array of uniform buffers /may/ execute multiple times in order to access
-    -- all the descriptors.
+    -- nonuniform indexing. If this is 'Vulkan.Core10.FundamentalTypes.FALSE',
+    -- then a single dynamic instance of an instruction that nonuniformly
+    -- indexes an array of uniform buffers /may/ execute multiple times in
+    -- order to access all the descriptors.
     shaderUniformBufferArrayNonUniformIndexingNative :: Bool
   , -- | @shaderSampledImageArrayNonUniformIndexingNative@ is a boolean value
     -- indicating whether sampler and image descriptors natively support
-    -- nonuniform indexing. If this is 'Vulkan.Core10.BaseType.FALSE', then a
-    -- single dynamic instance of an instruction that nonuniformly indexes an
-    -- array of samplers or images /may/ execute multiple times in order to
-    -- access all the descriptors.
+    -- nonuniform indexing. If this is 'Vulkan.Core10.FundamentalTypes.FALSE',
+    -- then a single dynamic instance of an instruction that nonuniformly
+    -- indexes an array of samplers or images /may/ execute multiple times in
+    -- order to access all the descriptors.
     shaderSampledImageArrayNonUniformIndexingNative :: Bool
   , -- | @shaderStorageBufferArrayNonUniformIndexingNative@ is a boolean value
     -- indicating whether storage buffer descriptors natively support
-    -- nonuniform indexing. If this is 'Vulkan.Core10.BaseType.FALSE', then a
-    -- single dynamic instance of an instruction that nonuniformly indexes an
-    -- array of storage buffers /may/ execute multiple times in order to access
-    -- all the descriptors.
+    -- nonuniform indexing. If this is 'Vulkan.Core10.FundamentalTypes.FALSE',
+    -- then a single dynamic instance of an instruction that nonuniformly
+    -- indexes an array of storage buffers /may/ execute multiple times in
+    -- order to access all the descriptors.
     shaderStorageBufferArrayNonUniformIndexingNative :: Bool
   , -- | @shaderStorageImageArrayNonUniformIndexingNative@ is a boolean value
     -- indicating whether storage image descriptors natively support nonuniform
-    -- indexing. If this is 'Vulkan.Core10.BaseType.FALSE', then a single
-    -- dynamic instance of an instruction that nonuniformly indexes an array of
-    -- storage images /may/ execute multiple times in order to access all the
-    -- descriptors.
+    -- indexing. If this is 'Vulkan.Core10.FundamentalTypes.FALSE', then a
+    -- single dynamic instance of an instruction that nonuniformly indexes an
+    -- array of storage images /may/ execute multiple times in order to access
+    -- all the descriptors.
     shaderStorageImageArrayNonUniformIndexingNative :: Bool
   , -- | @shaderInputAttachmentArrayNonUniformIndexingNative@ is a boolean value
     -- indicating whether input attachment descriptors natively support
-    -- nonuniform indexing. If this is 'Vulkan.Core10.BaseType.FALSE', then a
-    -- single dynamic instance of an instruction that nonuniformly indexes an
-    -- array of input attachments /may/ execute multiple times in order to
-    -- access all the descriptors.
+    -- nonuniform indexing. If this is 'Vulkan.Core10.FundamentalTypes.FALSE',
+    -- then a single dynamic instance of an instruction that nonuniformly
+    -- indexes an array of input attachments /may/ execute multiple times in
+    -- order to access all the descriptors.
     shaderInputAttachmentArrayNonUniformIndexingNative :: Bool
   , -- | @robustBufferAccessUpdateAfterBind@ is a boolean value indicating
     -- whether
@@ -1365,8 +1368,8 @@
     -- @descriptorBindingStorageBufferUpdateAfterBind@,
     -- @descriptorBindingUniformTexelBufferUpdateAfterBind@, and\/or
     -- @descriptorBindingStorageTexelBufferUpdateAfterBind@. If this is
-    -- 'Vulkan.Core10.BaseType.FALSE', then either @robustBufferAccess@ /must/
-    -- be disabled or all of these update-after-bind features /must/ be
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE', then either @robustBufferAccess@
+    -- /must/ be disabled or all of these update-after-bind features /must/ be
     -- disabled.
     robustBufferAccessUpdateAfterBind :: Bool
   , -- | @quadDivergentImplicitLod@ is a boolean value indicating whether
@@ -1481,13 +1484,13 @@
     -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_AVERAGE_BIT'
     -- /must/ not be included in the set.
     supportedStencilResolveModes :: ResolveModeFlags
-  , -- | @independentResolveNone@ is 'Vulkan.Core10.BaseType.TRUE' if the
+  , -- | @independentResolveNone@ is 'Vulkan.Core10.FundamentalTypes.TRUE' if the
     -- implementation supports setting the depth and stencil resolve modes to
     -- different values when one of those modes is
     -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE'. Otherwise
     -- the implementation only supports setting both modes to the same value.
     independentResolveNone :: Bool
-  , -- | @independentResolve@ is 'Vulkan.Core10.BaseType.TRUE' if the
+  , -- | @independentResolve@ is 'Vulkan.Core10.FundamentalTypes.TRUE' if the
     -- implementation supports all combinations of the supported depth and
     -- stencil resolve modes, including setting either depth or stencil resolve
     -- mode to 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE'. An
diff --git a/src/Vulkan/Core12/Enums/DescriptorBindingFlagBits.hs b/src/Vulkan/Core12/Enums/DescriptorBindingFlagBits.hs
--- a/src/Vulkan/Core12/Enums/DescriptorBindingFlagBits.hs
+++ b/src/Vulkan/Core12/Enums/DescriptorBindingFlagBits.hs
@@ -21,7 +21,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkDescriptorBindingFlagBits - Bitmask specifying descriptor set layout
 -- binding properties
diff --git a/src/Vulkan/Core12/Enums/ResolveModeFlagBits.hs b/src/Vulkan/Core12/Enums/ResolveModeFlagBits.hs
--- a/src/Vulkan/Core12/Enums/ResolveModeFlagBits.hs
+++ b/src/Vulkan/Core12/Enums/ResolveModeFlagBits.hs
@@ -22,7 +22,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkResolveModeFlagBits - Bitmask indicating supported depth and stencil
 -- resolve modes
diff --git a/src/Vulkan/Core12/Enums/SemaphoreWaitFlagBits.hs b/src/Vulkan/Core12/Enums/SemaphoreWaitFlagBits.hs
--- a/src/Vulkan/Core12/Enums/SemaphoreWaitFlagBits.hs
+++ b/src/Vulkan/Core12/Enums/SemaphoreWaitFlagBits.hs
@@ -18,7 +18,7 @@
 import Foreign.Storable (Storable)
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Zero (Zero)
 -- | VkSemaphoreWaitFlagBits - Bitmask specifying additional parameters of a
 -- semaphore wait operation
diff --git a/src/Vulkan/Core12/Promoted_From_VK_EXT_descriptor_indexing.hs b/src/Vulkan/Core12/Promoted_From_VK_EXT_descriptor_indexing.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_EXT_descriptor_indexing.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_EXT_descriptor_indexing.hs
@@ -39,9 +39,9 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
 import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core12.Enums.DescriptorBindingFlagBits (DescriptorBindingFlags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
@@ -84,7 +84,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceDescriptorIndexingFeatures = PhysicalDeviceDescriptorIndexingFeatures
   { -- | @shaderInputAttachmentArrayDynamicIndexing@ indicates whether arrays of
@@ -384,7 +384,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceDescriptorIndexingProperties = PhysicalDeviceDescriptorIndexingProperties
   { -- | @maxUpdateAfterBindDescriptorsInAllPools@ is the maximum number of
@@ -397,38 +397,38 @@
     maxUpdateAfterBindDescriptorsInAllPools :: Word32
   , -- | @shaderUniformBufferArrayNonUniformIndexingNative@ is a boolean value
     -- indicating whether uniform buffer descriptors natively support
-    -- nonuniform indexing. If this is 'Vulkan.Core10.BaseType.FALSE', then a
-    -- single dynamic instance of an instruction that nonuniformly indexes an
-    -- array of uniform buffers /may/ execute multiple times in order to access
-    -- all the descriptors.
+    -- nonuniform indexing. If this is 'Vulkan.Core10.FundamentalTypes.FALSE',
+    -- then a single dynamic instance of an instruction that nonuniformly
+    -- indexes an array of uniform buffers /may/ execute multiple times in
+    -- order to access all the descriptors.
     shaderUniformBufferArrayNonUniformIndexingNative :: Bool
   , -- | @shaderSampledImageArrayNonUniformIndexingNative@ is a boolean value
     -- indicating whether sampler and image descriptors natively support
-    -- nonuniform indexing. If this is 'Vulkan.Core10.BaseType.FALSE', then a
-    -- single dynamic instance of an instruction that nonuniformly indexes an
-    -- array of samplers or images /may/ execute multiple times in order to
-    -- access all the descriptors.
+    -- nonuniform indexing. If this is 'Vulkan.Core10.FundamentalTypes.FALSE',
+    -- then a single dynamic instance of an instruction that nonuniformly
+    -- indexes an array of samplers or images /may/ execute multiple times in
+    -- order to access all the descriptors.
     shaderSampledImageArrayNonUniformIndexingNative :: Bool
   , -- | @shaderStorageBufferArrayNonUniformIndexingNative@ is a boolean value
     -- indicating whether storage buffer descriptors natively support
-    -- nonuniform indexing. If this is 'Vulkan.Core10.BaseType.FALSE', then a
-    -- single dynamic instance of an instruction that nonuniformly indexes an
-    -- array of storage buffers /may/ execute multiple times in order to access
-    -- all the descriptors.
+    -- nonuniform indexing. If this is 'Vulkan.Core10.FundamentalTypes.FALSE',
+    -- then a single dynamic instance of an instruction that nonuniformly
+    -- indexes an array of storage buffers /may/ execute multiple times in
+    -- order to access all the descriptors.
     shaderStorageBufferArrayNonUniformIndexingNative :: Bool
   , -- | @shaderStorageImageArrayNonUniformIndexingNative@ is a boolean value
     -- indicating whether storage image descriptors natively support nonuniform
-    -- indexing. If this is 'Vulkan.Core10.BaseType.FALSE', then a single
-    -- dynamic instance of an instruction that nonuniformly indexes an array of
-    -- storage images /may/ execute multiple times in order to access all the
-    -- descriptors.
+    -- indexing. If this is 'Vulkan.Core10.FundamentalTypes.FALSE', then a
+    -- single dynamic instance of an instruction that nonuniformly indexes an
+    -- array of storage images /may/ execute multiple times in order to access
+    -- all the descriptors.
     shaderStorageImageArrayNonUniformIndexingNative :: Bool
   , -- | @shaderInputAttachmentArrayNonUniformIndexingNative@ is a boolean value
     -- indicating whether input attachment descriptors natively support
-    -- nonuniform indexing. If this is 'Vulkan.Core10.BaseType.FALSE', then a
-    -- single dynamic instance of an instruction that nonuniformly indexes an
-    -- array of input attachments /may/ execute multiple times in order to
-    -- access all the descriptors.
+    -- nonuniform indexing. If this is 'Vulkan.Core10.FundamentalTypes.FALSE',
+    -- then a single dynamic instance of an instruction that nonuniformly
+    -- indexes an array of input attachments /may/ execute multiple times in
+    -- order to access all the descriptors.
     shaderInputAttachmentArrayNonUniformIndexingNative :: Bool
   , -- | @robustBufferAccessUpdateAfterBind@ is a boolean value indicating
     -- whether
@@ -438,8 +438,8 @@
     -- @descriptorBindingStorageBufferUpdateAfterBind@,
     -- @descriptorBindingUniformTexelBufferUpdateAfterBind@, and\/or
     -- @descriptorBindingStorageTexelBufferUpdateAfterBind@. If this is
-    -- 'Vulkan.Core10.BaseType.FALSE', then either @robustBufferAccess@ /must/
-    -- be disabled or all of these update-after-bind features /must/ be
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE', then either @robustBufferAccess@
+    -- /must/ be disabled or all of these update-after-bind features /must/ be
     -- disabled.
     robustBufferAccessUpdateAfterBind :: Bool
   , -- | @quadDivergentImplicitLod@ is a boolean value indicating whether
diff --git a/src/Vulkan/Core12/Promoted_From_VK_EXT_host_query_reset.hs b/src/Vulkan/Core12/Promoted_From_VK_EXT_host_query_reset.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_EXT_host_query_reset.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_EXT_host_query_reset.hs
@@ -24,10 +24,10 @@
 import Foreign.Ptr (Ptr)
 import Data.Word (Word32)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.NamedType ((:::))
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Handles (Device)
 import Vulkan.Core10.Handles (Device(..))
 import Vulkan.Dynamic (DeviceCmds(pVkResetQueryPool))
@@ -137,7 +137,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceHostQueryResetFeatures = PhysicalDeviceHostQueryResetFeatures
   { -- | @hostQueryReset@ indicates that the implementation supports resetting
diff --git a/src/Vulkan/Core12/Promoted_From_VK_EXT_sampler_filter_minmax.hs b/src/Vulkan/Core12/Promoted_From_VK_EXT_sampler_filter_minmax.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_EXT_sampler_filter_minmax.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_EXT_sampler_filter_minmax.hs
@@ -18,9 +18,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core12.Enums.SamplerReductionMode (SamplerReductionMode)
@@ -50,7 +50,8 @@
 -- it is filled with the implementation-dependent limits.
 --
 -- If @filterMinmaxSingleComponentFormats@ is
--- 'Vulkan.Core10.BaseType.TRUE', the following formats /must/ support the
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', the following formats /must/
+-- support the
 -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT'
 -- feature with 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', if
 -- they support
@@ -61,20 +62,21 @@
 -- supports min\/max filtering, and that min\/max filtering of the depth
 -- aspect is supported when depth compare is disabled in the sampler.
 --
--- If @filterMinmaxImageComponentMapping@ is 'Vulkan.Core10.BaseType.FALSE'
--- the component mapping of the image view used with min\/max filtering
--- /must/ have been created with the @r@ component set to
+-- If @filterMinmaxImageComponentMapping@ is
+-- 'Vulkan.Core10.FundamentalTypes.FALSE' the component mapping of the
+-- image view used with min\/max filtering /must/ have been created with
+-- the @r@ component set to
 -- 'Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_IDENTITY'. Only
 -- the @r@ component of the sampled image value is defined and the other
 -- component values are undefined. If @filterMinmaxImageComponentMapping@
--- is 'Vulkan.Core10.BaseType.TRUE' this restriction does not apply and
--- image component mapping works as normal.
+-- is 'Vulkan.Core10.FundamentalTypes.TRUE' this restriction does not apply
+-- and image component mapping works as normal.
 --
 -- == Valid Usage (Implicit)
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceSamplerFilterMinmaxProperties = PhysicalDeviceSamplerFilterMinmaxProperties
   { -- | @filterMinmaxSingleComponentFormats@ is a boolean value indicating
diff --git a/src/Vulkan/Core12/Promoted_From_VK_EXT_scalar_block_layout.hs b/src/Vulkan/Core12/Promoted_From_VK_EXT_scalar_block_layout.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_EXT_scalar_block_layout.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_EXT_scalar_block_layout.hs
@@ -14,9 +14,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -47,7 +47,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceScalarBlockLayoutFeatures = PhysicalDeviceScalarBlockLayoutFeatures
   { -- | @scalarBlockLayout@ indicates that the implementation supports the
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_8bit_storage.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_8bit_storage.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_8bit_storage.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_8bit_storage.hs
@@ -14,9 +14,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -32,7 +32,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDevice8BitStorageFeatures = PhysicalDevice8BitStorageFeatures
   { -- | @storageBuffer8BitAccess@ indicates whether objects in the
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_buffer_device_address.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_buffer_device_address.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_buffer_device_address.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_buffer_device_address.hs
@@ -40,13 +40,13 @@
 import Data.Word (Word64)
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Handles (Buffer)
 import Vulkan.Core10.Handles (Device)
 import Vulkan.Core10.Handles (Device(..))
-import Vulkan.Core10.BaseType (DeviceAddress)
+import Vulkan.Core10.FundamentalTypes (DeviceAddress)
 import Vulkan.Dynamic (DeviceCmds(pVkGetBufferDeviceAddress))
 import Vulkan.Dynamic (DeviceCmds(pVkGetBufferOpaqueCaptureAddress))
 import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceMemoryOpaqueCaptureAddress))
@@ -293,7 +293,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceBufferDeviceAddressFeatures = PhysicalDeviceBufferDeviceAddressFeatures
   { -- | @bufferDeviceAddress@ indicates that the implementation supports
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_create_renderpass2.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_create_renderpass2.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_create_renderpass2.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_create_renderpass2.hs
@@ -749,7 +749,7 @@
 -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data AttachmentDescription2 (es :: [Type]) = AttachmentDescription2
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is a bitmask of
     -- 'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.AttachmentDescriptionFlagBits'
@@ -984,7 +984,7 @@
 -- 'SubpassDescription2',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.SubpassDescriptionDepthStencilResolve'
 data AttachmentReference2 (es :: [Type]) = AttachmentReference2
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @attachment@ is either an integer value identifying an attachment at the
     -- corresponding index in
@@ -1210,7 +1210,7 @@
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SubpassDescriptionFlags'
 data SubpassDescription2 (es :: [Type]) = SubpassDescription2
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is a bitmask of
     -- 'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SubpassDescriptionFlagBits'
@@ -1745,7 +1745,7 @@
 -- 'SubpassDescription2', 'createRenderPass2',
 -- 'Vulkan.Extensions.VK_KHR_create_renderpass2.createRenderPass2KHR'
 data RenderPassCreateInfo2 (es :: [Type]) = RenderPassCreateInfo2
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is reserved for future use.
     flags :: RenderPassCreateFlags
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_depth_stencil_resolve.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_depth_stencil_resolve.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_depth_stencil_resolve.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_depth_stencil_resolve.hs
@@ -22,13 +22,13 @@
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.CStruct.Extends (forgetExtensions)
 import Vulkan.CStruct.Extends (peekSomeCStruct)
 import Vulkan.CStruct.Extends (withSomeCStruct)
 import Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (AttachmentReference2)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core12.Enums.ResolveModeFlagBits (ResolveModeFlagBits)
@@ -56,7 +56,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlags',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceDepthStencilResolveProperties = PhysicalDeviceDepthStencilResolveProperties
@@ -76,13 +76,13 @@
     -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_AVERAGE_BIT'
     -- /must/ not be included in the set.
     supportedStencilResolveModes :: ResolveModeFlags
-  , -- | @independentResolveNone@ is 'Vulkan.Core10.BaseType.TRUE' if the
+  , -- | @independentResolveNone@ is 'Vulkan.Core10.FundamentalTypes.TRUE' if the
     -- implementation supports setting the depth and stencil resolve modes to
     -- different values when one of those modes is
     -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE'. Otherwise
     -- the implementation only supports setting both modes to the same value.
     independentResolveNone :: Bool
-  , -- | @independentResolve@ is 'Vulkan.Core10.BaseType.TRUE' if the
+  , -- | @independentResolve@ is 'Vulkan.Core10.FundamentalTypes.TRUE' if the
     -- implementation supports all combinations of the supported depth and
     -- stencil resolve modes, including setting either depth or stencil resolve
     -- mode to 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE'. An
@@ -194,18 +194,18 @@
 --     @pDepthStencilResolveAttachment@ has both depth and stencil
 --     components,
 --     'PhysicalDeviceDepthStencilResolveProperties'::@independentResolve@
---     is 'Vulkan.Core10.BaseType.FALSE', and
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', and
 --     'PhysicalDeviceDepthStencilResolveProperties'::@independentResolveNone@
---     is 'Vulkan.Core10.BaseType.FALSE', then the values of
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', then the values of
 --     @depthResolveMode@ and @stencilResolveMode@ /must/ be identical
 --
 -- -   If the 'Vulkan.Core10.Enums.Format.Format' of
 --     @pDepthStencilResolveAttachment@ has both depth and stencil
 --     components,
 --     'PhysicalDeviceDepthStencilResolveProperties'::@independentResolve@
---     is 'Vulkan.Core10.BaseType.FALSE' and
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE' and
 --     'PhysicalDeviceDepthStencilResolveProperties'::@independentResolveNone@
---     is 'Vulkan.Core10.BaseType.TRUE', then the values of
+--     is 'Vulkan.Core10.FundamentalTypes.TRUE', then the values of
 --     @depthResolveMode@ and @stencilResolveMode@ /must/ be identical or
 --     one of them /must/ be
 --     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE'
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_draw_indirect_count.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_draw_indirect_count.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_draw_indirect_count.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_draw_indirect_count.hs
@@ -21,7 +21,7 @@
 import Vulkan.Core10.Handles (CommandBuffer_T)
 import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawIndexedIndirectCount))
 import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawIndirectCount))
-import Vulkan.Core10.BaseType (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -206,9 +206,9 @@
 --
 -- -   If the bound graphics pipeline was created with
 --     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
---     set to 'Vulkan.Core10.BaseType.TRUE' and the current subpass has a
---     depth\/stencil attachment, then that attachment /must/ have been
---     created with the
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE' and the current subpass
+--     has a depth\/stencil attachment, then that attachment /must/ have
+--     been created with the
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
 --     bit set
 --
@@ -316,7 +316,7 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.BaseType.DeviceSize'
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
 cmdDrawIndirectCount :: forall io
                       . (MonadIO io)
                      => -- | @commandBuffer@ is the command buffer into which the command is
@@ -531,9 +531,9 @@
 --
 -- -   If the bound graphics pipeline was created with
 --     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
---     set to 'Vulkan.Core10.BaseType.TRUE' and the current subpass has a
---     depth\/stencil attachment, then that attachment /must/ have been
---     created with the
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE' and the current subpass
+--     has a depth\/stencil attachment, then that attachment /must/ have
+--     been created with the
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
 --     bit set
 --
@@ -638,7 +638,7 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.BaseType.DeviceSize'
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
 cmdDrawIndexedIndirectCount :: forall io
                              . (MonadIO io)
                             => -- | @commandBuffer@ is the command buffer into which the command is
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_imageless_framebuffer.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_imageless_framebuffer.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_imageless_framebuffer.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_imageless_framebuffer.hs
@@ -28,9 +28,9 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
 import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Enums.Format (Format)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
@@ -70,7 +70,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceImagelessFramebufferFeatures = PhysicalDeviceImagelessFramebufferFeatures
   { -- | @imagelessFramebuffer@ indicates that the implementation supports
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_separate_depth_stencil_layouts.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_separate_depth_stencil_layouts.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_separate_depth_stencil_layouts.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_separate_depth_stencil_layouts.hs
@@ -17,9 +17,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.ImageLayout (ImageLayout)
@@ -55,7 +55,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceSeparateDepthStencilLayoutsFeatures = PhysicalDeviceSeparateDepthStencilLayoutsFeatures
   { -- | @separateDepthStencilLayouts@ indicates whether the implementation
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_atomic_int64.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_atomic_int64.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_atomic_int64.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_atomic_int64.hs
@@ -14,9 +14,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -32,7 +32,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceShaderAtomicInt64Features = PhysicalDeviceShaderAtomicInt64Features
   { -- | @shaderBufferInt64Atomics@ indicates whether shaders /can/ support
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_float16_int8.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_float16_int8.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_float16_int8.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_float16_int8.hs
@@ -14,9 +14,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -32,7 +32,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceShaderFloat16Int8Features = PhysicalDeviceShaderFloat16Int8Features
   { -- | @shaderFloat16@ indicates whether 16-bit floats (halfs) are supported in
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_float_controls.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_float_controls.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_float_controls.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_float_controls.hs
@@ -1,6 +1,7 @@
 {-# language CPP #-}
 module Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls  ( PhysicalDeviceFloatControlsProperties(..)
                                                                  , StructureType(..)
+                                                                 , ShaderFloatControlsIndependence(..)
                                                                  ) where
 
 import Foreign.Marshal.Alloc (allocaBytesAligned)
@@ -14,9 +15,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core12.Enums.ShaderFloatControlsIndependence (ShaderFloatControlsIndependence)
@@ -25,6 +26,7 @@
 import Vulkan.CStruct (ToCStruct(..))
 import Vulkan.Zero (Zero(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES))
+import Vulkan.Core12.Enums.ShaderFloatControlsIndependence (ShaderFloatControlsIndependence(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(..))
 -- | VkPhysicalDeviceFloatControlsProperties - Structure describing
 -- properties supported by VK_KHR_shader_float_controls
@@ -45,7 +47,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core12.Enums.ShaderFloatControlsIndependence.ShaderFloatControlsIndependence',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceFloatControlsProperties = PhysicalDeviceFloatControlsProperties
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_subgroup_extended_types.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_subgroup_extended_types.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_subgroup_extended_types.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_subgroup_extended_types.hs
@@ -14,9 +14,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -48,7 +48,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceShaderSubgroupExtendedTypesFeatures = PhysicalDeviceShaderSubgroupExtendedTypesFeatures
   { -- | @shaderSubgroupExtendedTypes@ is a boolean that specifies whether
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_timeline_semaphore.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_timeline_semaphore.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_timeline_semaphore.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_timeline_semaphore.hs
@@ -49,10 +49,10 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
 import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.NamedType ((:::))
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Handles (Device)
 import Vulkan.Core10.Handles (Device(..))
 import Vulkan.Dynamic (DeviceCmds(pVkGetSemaphoreCounterValue))
@@ -362,7 +362,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceTimelineSemaphoreFeatures = PhysicalDeviceTimelineSemaphoreFeatures
   { -- | @timelineSemaphore@ indicates whether semaphores created with a
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_uniform_buffer_standard_layout.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_uniform_buffer_standard_layout.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_uniform_buffer_standard_layout.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_uniform_buffer_standard_layout.hs
@@ -14,9 +14,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -47,7 +47,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceUniformBufferStandardLayoutFeatures = PhysicalDeviceUniformBufferStandardLayoutFeatures
   { -- | @uniformBufferStandardLayout@ indicates that the implementation supports
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_vulkan_memory_model.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_vulkan_memory_model.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_vulkan_memory_model.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_vulkan_memory_model.hs
@@ -14,9 +14,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -32,7 +32,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceVulkanMemoryModelFeatures = PhysicalDeviceVulkanMemoryModelFeatures
   { -- | @vulkanMemoryModel@ indicates whether the Vulkan Memory Model is
diff --git a/src/Vulkan/Dynamic.hs b/src/Vulkan/Dynamic.hs
--- a/src/Vulkan/Dynamic.hs
+++ b/src/Vulkan/Dynamic.hs
@@ -22,7 +22,7 @@
 import Data.Word (Word32)
 import Data.Word (Word64)
 import Vulkan.NamedType ((:::))
-import {-# SOURCE #-} Vulkan.Extensions.WSITypes (AHardwareBuffer)
+import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (AHardwareBuffer)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureBuildGeometryInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureBuildOffsetInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureCreateInfoKHR)
@@ -43,7 +43,7 @@
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2 (BindBufferMemoryInfo)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2 (BindImageMemoryInfo)
 import {-# SOURCE #-} Vulkan.Core10.SparseResourceMemoryManagement (BindSparseInfo)
-import {-# SOURCE #-} Vulkan.Core10.BaseType (Bool32)
+import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (Bool32)
 import {-# SOURCE #-} Vulkan.Core10.Handles (Buffer)
 import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (BufferCopy)
 import {-# SOURCE #-} Vulkan.Core10.Buffer (BufferCreateInfo)
@@ -56,8 +56,8 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_calibrated_timestamps (CalibratedTimestampInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints (CheckpointDataNV)
 import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ClearAttachment)
-import {-# SOURCE #-} Vulkan.Core10.SharedTypes (ClearColorValue)
-import {-# SOURCE #-} Vulkan.Core10.SharedTypes (ClearDepthStencilValue)
+import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ClearColorValue)
+import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ClearDepthStencilValue)
 import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ClearRect)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shading_rate_image (CoarseSampleOrderCustomNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shading_rate_image (CoarseSampleOrderTypeNV)
@@ -104,7 +104,7 @@
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_maintenance3 (DescriptorSetLayoutSupport)
 import {-# SOURCE #-} Vulkan.Core11.Handles (DescriptorUpdateTemplate)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template (DescriptorUpdateTemplateCreateInfo)
-import {-# SOURCE #-} Vulkan.Core10.BaseType (DeviceAddress)
+import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (DeviceAddress)
 import {-# SOURCE #-} Vulkan.Core10.Device (DeviceCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_display_control (DeviceEventInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentCapabilitiesKHR)
@@ -112,9 +112,9 @@
 import {-# SOURCE #-} Vulkan.Core10.Handles (DeviceMemory)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (DeviceMemoryOpaqueCaptureAddressInfo)
 import {-# SOURCE #-} Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (DeviceQueueInfo2)
-import {-# SOURCE #-} Vulkan.Core10.BaseType (DeviceSize)
+import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (DeviceSize)
 import {-# SOURCE #-} Vulkan.Core10.Handles (Device_T)
-import {-# SOURCE #-} Vulkan.Extensions.WSITypes (Display)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_xlib_surface (Display)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_display_control (DisplayEventInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.Handles (DisplayKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_display (DisplayModeCreateInfoKHR)
@@ -133,7 +133,7 @@
 import {-# SOURCE #-} Vulkan.Core10.Handles (Event)
 import {-# SOURCE #-} Vulkan.Core10.Event (EventCreateInfo)
 import {-# SOURCE #-} Vulkan.Core10.ExtensionDiscovery (ExtensionProperties)
-import {-# SOURCE #-} Vulkan.Core10.SharedTypes (Extent2D)
+import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (Extent2D)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (ExternalBufferProperties)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities (ExternalFenceProperties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory_capabilities (ExternalImageFormatPropertiesNV)
@@ -154,7 +154,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (GeneratedCommandsInfoNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (GeneratedCommandsMemoryRequirementsInfoNV)
 import {-# SOURCE #-} Vulkan.Core10.Pipeline (GraphicsPipelineCreateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.WSITypes (HANDLE)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory_win32 (HANDLE)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_hdr_metadata (HdrMetadataEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_headless_surface (HeadlessSurfaceCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_MVK_ios_surface (IOSSurfaceCreateInfoMVK)
@@ -172,8 +172,8 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface (ImagePipeSurfaceCreateInfoFUCHSIA)
 import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ImageResolve)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (ImageSparseMemoryRequirementsInfo2)
-import {-# SOURCE #-} Vulkan.Core10.Image (ImageSubresource)
-import {-# SOURCE #-} Vulkan.Core10.SharedTypes (ImageSubresourceRange)
+import {-# SOURCE #-} Vulkan.Core10.SparseResourceMemoryManagement (ImageSubresource)
+import {-# SOURCE #-} Vulkan.Core10.ImageView (ImageSubresourceRange)
 import {-# SOURCE #-} Vulkan.Core10.Enums.ImageTiling (ImageTiling)
 import {-# SOURCE #-} Vulkan.Core10.Enums.ImageType (ImageType)
 import {-# SOURCE #-} Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)
@@ -203,7 +203,7 @@
 import {-# SOURCE #-} Vulkan.Core10.Enums.MemoryMapFlags (MemoryMapFlags)
 import {-# SOURCE #-} Vulkan.Core10.MemoryManagement (MemoryRequirements)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2)
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2KHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_get_memory_requirements2 (MemoryRequirements2KHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_win32 (MemoryWin32HandlePropertiesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_surface (MetalSurfaceCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (MultisamplePropertiesEXT)
@@ -261,10 +261,10 @@
 import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (QueueFamilyProperties)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (QueueFamilyProperties2)
 import {-# SOURCE #-} Vulkan.Core10.Handles (Queue_T)
-import {-# SOURCE #-} Vulkan.Extensions.WSITypes (RROutput)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_acquire_xlib_display (RROutput)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing (RayTracingPipelineCreateInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (RayTracingPipelineCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (Rect2D)
+import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (Rect2D)
 import {-# SOURCE #-} Vulkan.Extensions.VK_GOOGLE_display_timing (RefreshCycleDurationGOOGLE)
 import {-# SOURCE #-} Vulkan.Core10.Handles (RenderPass)
 import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (RenderPassBeginInfo)
@@ -315,16 +315,16 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_validation_cache (ValidationCacheCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.Handles (ValidationCacheEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NN_vi_surface (ViSurfaceCreateInfoNN)
-import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (Viewport)
+import {-# SOURCE #-} Vulkan.Core10.Pipeline (Viewport)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_clip_space_w_scaling (ViewportWScalingNV)
-import {-# SOURCE #-} Vulkan.Extensions.WSITypes (VisualID)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_xlib_surface (VisualID)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_wayland_surface (WaylandSurfaceCreateInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_win32_surface (Win32SurfaceCreateInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.WSITypes (Wl_display)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_wayland_surface (Wl_display)
 import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (WriteDescriptorSet)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_xcb_surface (XcbSurfaceCreateInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.WSITypes (Xcb_connection_t)
-import {-# SOURCE #-} Vulkan.Extensions.WSITypes (Xcb_visualid_t)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_xcb_surface (Xcb_connection_t)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_xcb_surface (Xcb_visualid_t)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_xlib_surface (XlibSurfaceCreateInfoKHR)
 import Vulkan.Zero (Zero(..))
 data InstanceCmds = InstanceCmds
diff --git a/src/Vulkan/Extensions.hs b/src/Vulkan/Extensions.hs
--- a/src/Vulkan/Extensions.hs
+++ b/src/Vulkan/Extensions.hs
@@ -205,7 +205,6 @@
                           , module Vulkan.Extensions.VK_QCOM_render_pass_shader_resolve
                           , module Vulkan.Extensions.VK_QCOM_render_pass_store_ops
                           , module Vulkan.Extensions.VK_QCOM_render_pass_transform
-                          , module Vulkan.Extensions.WSITypes
                           ) where
 import Vulkan.Extensions.Handles
 import Vulkan.Extensions.VK_AMD_buffer_marker
@@ -413,5 +412,4 @@
 import Vulkan.Extensions.VK_QCOM_render_pass_shader_resolve
 import Vulkan.Extensions.VK_QCOM_render_pass_store_ops
 import Vulkan.Extensions.VK_QCOM_render_pass_transform
-import Vulkan.Extensions.WSITypes
 
diff --git a/src/Vulkan/Extensions/VK_AMD_buffer_marker.hs b/src/Vulkan/Extensions/VK_AMD_buffer_marker.hs
--- a/src/Vulkan/Extensions/VK_AMD_buffer_marker.hs
+++ b/src/Vulkan/Extensions/VK_AMD_buffer_marker.hs
@@ -24,7 +24,7 @@
 import Vulkan.Core10.Handles (CommandBuffer(..))
 import Vulkan.Core10.Handles (CommandBuffer_T)
 import Vulkan.Dynamic (DeviceCmds(pVkCmdWriteBufferMarkerAMD))
-import Vulkan.Core10.BaseType (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
 import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits)
 import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits(..))
 foreign import ccall
@@ -70,6 +70,50 @@
 --
 -- == Valid Usage
 --
+-- -   @pipelineStage@ /must/ be a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported valid stage>
+--     for the queue family that was used to create the command pool that
+--     @commandBuffer@ was allocated from
+--
+-- -   If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
+--     feature is not enabled, @pipelineStage@ /must/ not be
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'
+--
+-- -   If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
+--     feature is not enabled, @pipelineStage@ /must/ not be
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'
+--     or
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'
+--
+-- -   If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
+--     feature is not enabled, @pipelineStage@ /must/ not be
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'
+--
+-- -   If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
+--     feature is not enabled, @pipelineStage@ /must/ not be
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
+--
+-- -   If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
+--     feature is not enabled, @pipelineStage@ /must/ not be
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
+--
+-- -   If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
+--     feature is not enabled, @pipelineStage@ /must/ not be
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'
+--     or
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'
+--
+-- -   If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
+--     feature is not enabled, @pipelineStage@ /must/ not be
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
+--
 -- -   @dstOffset@ /must/ be less than or equal to the size of @dstBuffer@
 --     minus @4@
 --
@@ -125,7 +169,7 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.BaseType.DeviceSize',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
 cmdWriteBufferMarkerAMD :: forall io
                          . (MonadIO io)
diff --git a/src/Vulkan/Extensions/VK_AMD_device_coherent_memory.hs b/src/Vulkan/Extensions/VK_AMD_device_coherent_memory.hs
--- a/src/Vulkan/Extensions/VK_AMD_device_coherent_memory.hs
+++ b/src/Vulkan/Extensions/VK_AMD_device_coherent_memory.hs
@@ -18,9 +18,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -40,7 +40,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceCoherentMemoryFeaturesAMD = PhysicalDeviceCoherentMemoryFeaturesAMD
   { -- | @deviceCoherentMemory@ indicates that the implementation supports
diff --git a/src/Vulkan/Extensions/VK_AMD_display_native_hdr.hs b/src/Vulkan/Extensions/VK_AMD_display_native_hdr.hs
--- a/src/Vulkan/Extensions/VK_AMD_display_native_hdr.hs
+++ b/src/Vulkan/Extensions/VK_AMD_display_native_hdr.hs
@@ -30,11 +30,11 @@
 import Foreign.Ptr (FunPtr)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.NamedType ((:::))
-import Vulkan.Core10.BaseType (Bool32)
-import Vulkan.Core10.BaseType (Bool32(..))
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32(..))
 import Vulkan.Core10.Handles (Device)
 import Vulkan.Core10.Handles (Device(..))
 import Vulkan.Dynamic (DeviceCmds(pVkSetLocalDimmingAMD))
@@ -79,7 +79,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32', 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32', 'Vulkan.Core10.Handles.Device',
 -- 'Vulkan.Extensions.Handles.SwapchainKHR'
 setLocalDimmingAMD :: forall io
                     . (MonadIO io)
@@ -107,11 +107,11 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data DisplayNativeHdrSurfaceCapabilitiesAMD = DisplayNativeHdrSurfaceCapabilitiesAMD
   { -- | @localDimmingSupport@ specifies whether the surface supports local
-    -- dimming. If this is 'Vulkan.Core10.BaseType.TRUE',
+    -- dimming. If this is 'Vulkan.Core10.FundamentalTypes.TRUE',
     -- 'SwapchainDisplayNativeHdrCreateInfoAMD' /can/ be used to explicitly
     -- enable or disable local dimming for the surface. Local dimming may also
     -- be overriden by 'setLocalDimmingAMD' during the lifetime of the
@@ -163,8 +163,8 @@
 -- If the @pNext@ chain of
 -- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR' does not
 -- include this structure, the default value for @localDimmingEnable@ is
--- 'Vulkan.Core10.BaseType.TRUE', meaning local dimming is initially
--- enabled for the swapchain.
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', meaning local dimming is
+-- initially enabled for the swapchain.
 --
 -- == Valid Usage (Implicit)
 --
@@ -174,13 +174,13 @@
 -- == Valid Usage
 --
 -- -   It is only valid to set @localDimmingEnable@ to
---     'Vulkan.Core10.BaseType.TRUE' if
+--     'Vulkan.Core10.FundamentalTypes.TRUE' if
 --     'DisplayNativeHdrSurfaceCapabilitiesAMD'::@localDimmingSupport@ is
 --     supported
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data SwapchainDisplayNativeHdrCreateInfoAMD = SwapchainDisplayNativeHdrCreateInfoAMD
   { -- | @localDimmingEnable@ specifies whether local dimming is enabled for the
diff --git a/src/Vulkan/Extensions/VK_AMD_pipeline_compiler_control.hs b/src/Vulkan/Extensions/VK_AMD_pipeline_compiler_control.hs
--- a/src/Vulkan/Extensions/VK_AMD_pipeline_compiler_control.hs
+++ b/src/Vulkan/Extensions/VK_AMD_pipeline_compiler_control.hs
@@ -32,7 +32,7 @@
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
diff --git a/src/Vulkan/Extensions/VK_AMD_shader_core_properties2.hs b/src/Vulkan/Extensions/VK_AMD_shader_core_properties2.hs
--- a/src/Vulkan/Extensions/VK_AMD_shader_core_properties2.hs
+++ b/src/Vulkan/Extensions/VK_AMD_shader_core_properties2.hs
@@ -33,7 +33,7 @@
 import Data.Word (Word32)
 import Text.Read.Lex (Lexeme(Ident))
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
diff --git a/src/Vulkan/Extensions/VK_AMD_texture_gather_bias_lod.hs b/src/Vulkan/Extensions/VK_AMD_texture_gather_bias_lod.hs
--- a/src/Vulkan/Extensions/VK_AMD_texture_gather_bias_lod.hs
+++ b/src/Vulkan/Extensions/VK_AMD_texture_gather_bias_lod.hs
@@ -18,9 +18,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -36,7 +36,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data TextureLODGatherFormatPropertiesAMD = TextureLODGatherFormatPropertiesAMD
   { -- | @supportsTextureGatherLODBiasAMD@ tells if the image format can be used
diff --git a/src/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs b/src/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs
--- a/src/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs
+++ b/src/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs
@@ -47,7 +47,6 @@
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
 import Vulkan.CStruct.Extends (forgetExtensions)
-import Vulkan.Extensions.WSITypes (AHardwareBuffer)
 import Vulkan.CStruct.Extends (Chain)
 import Vulkan.Core11.Enums.ChromaLocation (ChromaLocation)
 import Vulkan.Core10.ImageView (ComponentMapping)
@@ -56,7 +55,7 @@
 import Vulkan.Dynamic (DeviceCmds(pVkGetAndroidHardwareBufferPropertiesANDROID))
 import Vulkan.Dynamic (DeviceCmds(pVkGetMemoryAndroidHardwareBufferANDROID))
 import Vulkan.Core10.Handles (DeviceMemory)
-import Vulkan.Core10.BaseType (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
 import Vulkan.Core10.Handles (Device_T)
 import Vulkan.CStruct.Extends (Extends)
 import Vulkan.CStruct.Extends (Extendss)
@@ -86,7 +85,6 @@
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-import Vulkan.Extensions.WSITypes (AHardwareBuffer)
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -122,8 +120,7 @@
                                              -- one of the @AHARDWAREBUFFER_USAGE_GPU_@* flags in its
                                              -- @AHardwareBuffer_Desc@::@usage@
                                              --
-                                             -- @buffer@ /must/ be a valid pointer to a valid
-                                             -- 'Vulkan.Extensions.WSITypes.AHardwareBuffer' value
+                                             -- @buffer@ /must/ be a valid pointer to a valid 'AHardwareBuffer' value
                                              (Ptr AHardwareBuffer)
                                           -> io (AndroidHardwareBufferPropertiesANDROID a)
 getAndroidHardwareBufferPropertiesANDROID device buffer = liftIO . evalContT $ do
@@ -234,8 +231,7 @@
 -- -   @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID'
 --
--- -   @buffer@ /must/ be a valid pointer to an
---     'Vulkan.Extensions.WSITypes.AHardwareBuffer' value
+-- -   @buffer@ /must/ be a valid pointer to an 'AHardwareBuffer' value
 --
 -- = See Also
 --
@@ -371,11 +367,11 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.DeviceSize',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'getAndroidHardwareBufferPropertiesANDROID'
 data AndroidHardwareBufferPropertiesANDROID (es :: [Type]) = AndroidHardwareBufferPropertiesANDROID
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @allocationSize@ is the size of the external memory
     allocationSize :: DeviceSize
@@ -766,4 +762,7 @@
 -- No documentation found for TopLevel "VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME"
 pattern ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
 pattern ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME = "VK_ANDROID_external_memory_android_hardware_buffer"
+
+
+data AHardwareBuffer
 
diff --git a/src/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs-boot b/src/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs-boot
--- a/src/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs-boot
+++ b/src/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs-boot
@@ -5,6 +5,7 @@
                                                                              , ExternalFormatANDROID
                                                                              , ImportAndroidHardwareBufferInfoANDROID
                                                                              , MemoryGetAndroidHardwareBufferInfoANDROID
+                                                                             , AHardwareBuffer
                                                                              ) where
 
 import Data.Kind (Type)
@@ -61,4 +62,7 @@
 instance Show MemoryGetAndroidHardwareBufferInfoANDROID
 
 instance FromCStruct MemoryGetAndroidHardwareBufferInfoANDROID
+
+
+data AHardwareBuffer
 
diff --git a/src/Vulkan/Extensions/VK_EXT_acquire_xlib_display.hs b/src/Vulkan/Extensions/VK_EXT_acquire_xlib_display.hs
--- a/src/Vulkan/Extensions/VK_EXT_acquire_xlib_display.hs
+++ b/src/Vulkan/Extensions/VK_EXT_acquire_xlib_display.hs
@@ -5,9 +5,9 @@
                                                       , pattern EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION
                                                       , EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME
                                                       , pattern EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME
+                                                      , RROutput
                                                       , DisplayKHR(..)
                                                       , Display
-                                                      , RROutput
                                                       ) where
 
 import Control.Exception.Base (bracket)
@@ -27,9 +27,10 @@
 import GHC.IO.Exception (IOException(..))
 import Foreign.Ptr (FunPtr)
 import Foreign.Ptr (Ptr)
+import Data.Word (Word64)
 import Control.Monad.Trans.Cont (ContT(..))
 import Vulkan.NamedType ((:::))
-import Vulkan.Extensions.WSITypes (Display)
+import Vulkan.Extensions.VK_KHR_xlib_surface (Display)
 import Vulkan.Extensions.Handles (DisplayKHR)
 import Vulkan.Extensions.Handles (DisplayKHR(..))
 import Vulkan.Dynamic (InstanceCmds(pVkAcquireXlibDisplayEXT))
@@ -37,14 +38,12 @@
 import Vulkan.Core10.Handles (PhysicalDevice)
 import Vulkan.Core10.Handles (PhysicalDevice(..))
 import Vulkan.Core10.Handles (PhysicalDevice_T)
-import Vulkan.Extensions.WSITypes (RROutput)
 import Vulkan.Core10.Enums.Result (Result)
 import Vulkan.Core10.Enums.Result (Result(..))
 import Vulkan.Exception (VulkanException(..))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-import Vulkan.Extensions.WSITypes (Display)
+import Vulkan.Extensions.VK_KHR_xlib_surface (Display)
 import Vulkan.Extensions.Handles (DisplayKHR(..))
-import Vulkan.Extensions.WSITypes (RROutput)
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -97,7 +96,7 @@
                       -> -- | @dpy@ A connection to the X11 server that currently owns @display@.
                          --
                          -- @dpy@ /must/ be a valid pointer to a
-                         -- 'Vulkan.Extensions.WSITypes.Display' value
+                         -- 'Vulkan.Extensions.VK_KHR_xlib_surface.Display' value
                          ("dpy" ::: Ptr Display)
                       -> -- | @display@ The display the caller wishes to control in Vulkan.
                          --
@@ -153,7 +152,7 @@
                          -> -- | @dpy@ A connection to the X11 server from which @rrOutput@ was queried.
                             --
                             -- @dpy@ /must/ be a valid pointer to a
-                            -- 'Vulkan.Extensions.WSITypes.Display' value
+                            -- 'Vulkan.Extensions.VK_KHR_xlib_surface.Display' value
                             ("dpy" ::: Ptr Display)
                          -> -- | @rrOutput@ An X11 RandR output ID.
                             RROutput
@@ -181,4 +180,7 @@
 -- No documentation found for TopLevel "VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME"
 pattern EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
 pattern EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_xlib_display"
+
+
+type RROutput = Word64
 
diff --git a/src/Vulkan/Extensions/VK_EXT_acquire_xlib_display.hs-boot b/src/Vulkan/Extensions/VK_EXT_acquire_xlib_display.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_acquire_xlib_display.hs-boot
@@ -0,0 +1,7 @@
+{-# language CPP #-}
+module Vulkan.Extensions.VK_EXT_acquire_xlib_display  (RROutput) where
+
+import Data.Word (Word64)
+
+type RROutput = Word64
+
diff --git a/src/Vulkan/Extensions/VK_EXT_astc_decode_mode.hs b/src/Vulkan/Extensions/VK_EXT_astc_decode_mode.hs
--- a/src/Vulkan/Extensions/VK_EXT_astc_decode_mode.hs
+++ b/src/Vulkan/Extensions/VK_EXT_astc_decode_mode.hs
@@ -19,9 +19,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Enums.Format (Format)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
@@ -157,7 +157,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceASTCDecodeFeaturesEXT = PhysicalDeviceASTCDecodeFeaturesEXT
   { -- | @decodeModeSharedExponent@ indicates whether the implementation supports
diff --git a/src/Vulkan/Extensions/VK_EXT_blend_operation_advanced.hs b/src/Vulkan/Extensions/VK_EXT_blend_operation_advanced.hs
--- a/src/Vulkan/Extensions/VK_EXT_blend_operation_advanced.hs
+++ b/src/Vulkan/Extensions/VK_EXT_blend_operation_advanced.hs
@@ -38,9 +38,9 @@
 import Data.Word (Word32)
 import Text.Read.Lex (Lexeme(Ident))
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -73,19 +73,19 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceBlendOperationAdvancedFeaturesEXT = PhysicalDeviceBlendOperationAdvancedFeaturesEXT
   { -- | @advancedBlendCoherentOperations@ specifies whether blending using
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operations>
     -- is guaranteed to execute atomically and in
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-order primitive order>.
-    -- If this is 'Vulkan.Core10.BaseType.TRUE',
+    -- If this is 'Vulkan.Core10.FundamentalTypes.TRUE',
     -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT'
     -- is treated the same as
     -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_READ_BIT',
     -- and advanced blending needs no additional synchronization over basic
-    -- blending. If this is 'Vulkan.Core10.BaseType.FALSE', then memory
+    -- blending. If this is 'Vulkan.Core10.FundamentalTypes.FALSE', then memory
     -- dependencies are required to guarantee order between two advanced
     -- blending operations that occur on the same sample.
     advancedBlendCoherentOperations :: Bool }
@@ -147,7 +147,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceBlendOperationAdvancedPropertiesEXT = PhysicalDeviceBlendOperationAdvancedPropertiesEXT
   { -- | @advancedBlendMaxColorAttachments@ is one greater than the highest color
@@ -160,19 +160,19 @@
     advancedBlendIndependentBlend :: Bool
   , -- | @advancedBlendNonPremultipliedSrcColor@ specifies whether the source
     -- color /can/ be treated as non-premultiplied. If this is
-    -- 'Vulkan.Core10.BaseType.FALSE', then
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE', then
     -- 'PipelineColorBlendAdvancedStateCreateInfoEXT'::@srcPremultiplied@
-    -- /must/ be 'Vulkan.Core10.BaseType.TRUE'.
+    -- /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'.
     advancedBlendNonPremultipliedSrcColor :: Bool
   , -- | @advancedBlendNonPremultipliedDstColor@ specifies whether the
     -- destination color /can/ be treated as non-premultiplied. If this is
-    -- 'Vulkan.Core10.BaseType.FALSE', then
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE', then
     -- 'PipelineColorBlendAdvancedStateCreateInfoEXT'::@dstPremultiplied@
-    -- /must/ be 'Vulkan.Core10.BaseType.TRUE'.
+    -- /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'.
     advancedBlendNonPremultipliedDstColor :: Bool
   , -- | @advancedBlendCorrelatedOverlap@ specifies whether the overlap mode
     -- /can/ be treated as correlated. If this is
-    -- 'Vulkan.Core10.BaseType.FALSE', then
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE', then
     -- 'PipelineColorBlendAdvancedStateCreateInfoEXT'::@blendOverlap@ /must/ be
     -- 'BLEND_OVERLAP_UNCORRELATED_EXT'.
     advancedBlendCorrelatedOverlap :: Bool
@@ -246,20 +246,20 @@
 --
 -- If this structure is not present, @srcPremultiplied@ and
 -- @dstPremultiplied@ are both considered to be
--- 'Vulkan.Core10.BaseType.TRUE', and @blendOverlap@ is considered to be
--- 'BLEND_OVERLAP_UNCORRELATED_EXT'.
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', and @blendOverlap@ is considered
+-- to be 'BLEND_OVERLAP_UNCORRELATED_EXT'.
 --
 -- == Valid Usage
 --
 -- -   If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendNonPremultipliedSrcColor non-premultiplied source color>
 --     property is not supported, @srcPremultiplied@ /must/ be
---     'Vulkan.Core10.BaseType.TRUE'
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
 --
 -- -   If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendNonPremultipliedDstColor non-premultiplied destination color>
 --     property is not supported, @dstPremultiplied@ /must/ be
---     'Vulkan.Core10.BaseType.TRUE'
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
 --
 -- -   If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendCorrelatedOverlap correlated overlap>
@@ -275,7 +275,7 @@
 --
 -- = See Also
 --
--- 'BlendOverlapEXT', 'Vulkan.Core10.BaseType.Bool32',
+-- 'BlendOverlapEXT', 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PipelineColorBlendAdvancedStateCreateInfoEXT = PipelineColorBlendAdvancedStateCreateInfoEXT
   { -- | @srcPremultiplied@ specifies whether the source color of the blend
diff --git a/src/Vulkan/Extensions/VK_EXT_buffer_device_address.hs b/src/Vulkan/Extensions/VK_EXT_buffer_device_address.hs
--- a/src/Vulkan/Extensions/VK_EXT_buffer_device_address.hs
+++ b/src/Vulkan/Extensions/VK_EXT_buffer_device_address.hs
@@ -27,12 +27,12 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (getBufferDeviceAddress)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (BufferDeviceAddressInfo)
-import Vulkan.Core10.BaseType (DeviceAddress)
+import Vulkan.Core10.FundamentalTypes (DeviceAddress)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -105,7 +105,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceBufferDeviceAddressFeaturesEXT = PhysicalDeviceBufferDeviceAddressFeaturesEXT
   { -- | @bufferDeviceAddress@ indicates that the implementation supports
@@ -191,7 +191,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.DeviceAddress',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data BufferDeviceAddressCreateInfoEXT = BufferDeviceAddressCreateInfoEXT
   { -- | @deviceAddress@ is the device address requested for the buffer.
diff --git a/src/Vulkan/Extensions/VK_EXT_conditional_rendering.hs b/src/Vulkan/Extensions/VK_EXT_conditional_rendering.hs
--- a/src/Vulkan/Extensions/VK_EXT_conditional_rendering.hs
+++ b/src/Vulkan/Extensions/VK_EXT_conditional_rendering.hs
@@ -50,17 +50,17 @@
 import Text.Read.Lex (Lexeme(Ident))
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Handles (Buffer)
 import Vulkan.Core10.Handles (CommandBuffer)
 import Vulkan.Core10.Handles (CommandBuffer(..))
 import Vulkan.Core10.Handles (CommandBuffer_T)
 import Vulkan.Dynamic (DeviceCmds(pVkCmdBeginConditionalRenderingEXT))
 import Vulkan.Dynamic (DeviceCmds(pVkCmdEndConditionalRenderingEXT))
-import Vulkan.Core10.BaseType (DeviceSize)
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -268,7 +268,7 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.Buffer', 'ConditionalRenderingFlagsEXT',
--- 'Vulkan.Core10.BaseType.DeviceSize',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'cmdBeginConditionalRenderingEXT'
 data ConditionalRenderingBeginInfoEXT = ConditionalRenderingBeginInfoEXT
@@ -332,14 +332,14 @@
 -- = Description
 --
 -- If this structure is not present, the behavior is as if
--- @conditionalRenderingEnable@ is 'Vulkan.Core10.BaseType.FALSE'.
+-- @conditionalRenderingEnable@ is 'Vulkan.Core10.FundamentalTypes.FALSE'.
 --
 -- == Valid Usage
 --
 -- -   If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedConditionalRendering inherited conditional rendering>
 --     feature is not enabled, @conditionalRenderingEnable@ /must/ be
---     'Vulkan.Core10.BaseType.FALSE'
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- == Valid Usage (Implicit)
 --
@@ -348,16 +348,16 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data CommandBufferInheritanceConditionalRenderingInfoEXT = CommandBufferInheritanceConditionalRenderingInfoEXT
   { -- | @conditionalRenderingEnable@ specifies whether the command buffer /can/
     -- be executed while conditional rendering is active in the primary command
-    -- buffer. If this is 'Vulkan.Core10.BaseType.TRUE', then this command
-    -- buffer /can/ be executed whether the primary command buffer has active
-    -- conditional rendering or not. If this is 'Vulkan.Core10.BaseType.FALSE',
-    -- then the primary command buffer /must/ not have conditional rendering
-    -- active.
+    -- buffer. If this is 'Vulkan.Core10.FundamentalTypes.TRUE', then this
+    -- command buffer /can/ be executed whether the primary command buffer has
+    -- active conditional rendering or not. If this is
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE', then the primary command buffer
+    -- /must/ not have conditional rendering active.
     conditionalRenderingEnable :: Bool }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
@@ -415,7 +415,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceConditionalRenderingFeaturesEXT = PhysicalDeviceConditionalRenderingFeaturesEXT
   { -- | @conditionalRendering@ specifies whether conditional rendering is
diff --git a/src/Vulkan/Extensions/VK_EXT_conservative_rasterization.hs b/src/Vulkan/Extensions/VK_EXT_conservative_rasterization.hs
--- a/src/Vulkan/Extensions/VK_EXT_conservative_rasterization.hs
+++ b/src/Vulkan/Extensions/VK_EXT_conservative_rasterization.hs
@@ -41,10 +41,10 @@
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -75,7 +75,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceConservativeRasterizationPropertiesEXT = PhysicalDeviceConservativeRasterizationPropertiesEXT
   { -- | @primitiveOverestimationSize@ is the size in pixels the generating
@@ -139,9 +139,10 @@
     -- implementation supports conservative rasterization with the
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-fragment-earlytest-postdepthcoverage PostDepthCoverage>
     -- execution mode enabled. When supported the
-    -- 'Vulkan.Core10.BaseType.SampleMask' built-in input variable will reflect
-    -- the coverage after the early per-fragment depth and stencil tests are
-    -- applied even when conservative rasterization is enabled. Otherwise
+    -- 'Vulkan.Core10.FundamentalTypes.SampleMask' built-in input variable will
+    -- reflect the coverage after the early per-fragment depth and stencil
+    -- tests are applied even when conservative rasterization is enabled.
+    -- Otherwise
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-fragment-earlytest-postdepthcoverage PostDepthCoverage>
     -- execution mode /must/ not be used when conservative rasterization is
     -- enabled.
diff --git a/src/Vulkan/Extensions/VK_EXT_custom_border_color.hs b/src/Vulkan/Extensions/VK_EXT_custom_border_color.hs
--- a/src/Vulkan/Extensions/VK_EXT_custom_border_color.hs
+++ b/src/Vulkan/Extensions/VK_EXT_custom_border_color.hs
@@ -24,10 +24,10 @@
 import Data.Word (Word32)
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
-import Vulkan.Core10.SharedTypes (ClearColorValue)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.CommandBufferBuilding (ClearColorValue)
 import Vulkan.Core10.Enums.Format (Format)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
@@ -70,12 +70,13 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.SharedTypes.ClearColorValue',
+-- 'Vulkan.Core10.CommandBufferBuilding.ClearColorValue',
 -- 'Vulkan.Core10.Enums.Format.Format',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data SamplerCustomBorderColorCreateInfoEXT = SamplerCustomBorderColorCreateInfoEXT
-  { -- | @customBorderColor@ is a 'Vulkan.Core10.SharedTypes.ClearColorValue'
-    -- representing the desired custom sampler border color.
+  { -- | @customBorderColor@ is a
+    -- 'Vulkan.Core10.CommandBufferBuilding.ClearColorValue' representing the
+    -- desired custom sampler border color.
     customBorderColor :: ClearColorValue
   , -- | @format@ is a 'Vulkan.Core10.Enums.Format.Format' representing the
     -- format of the sampled image view(s). This field may be
@@ -180,7 +181,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceCustomBorderColorFeaturesEXT = PhysicalDeviceCustomBorderColorFeaturesEXT
   { -- | @customBorderColors@ indicates that the implementation supports
diff --git a/src/Vulkan/Extensions/VK_EXT_debug_marker.hs b/src/Vulkan/Extensions/VK_EXT_debug_marker.hs
--- a/src/Vulkan/Extensions/VK_EXT_debug_marker.hs
+++ b/src/Vulkan/Extensions/VK_EXT_debug_marker.hs
@@ -207,6 +207,8 @@
 --
 -- == Host Synchronization
 --
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
 -- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
 --     @commandBuffer@ was allocated from /must/ be externally synchronized
 --
@@ -285,6 +287,8 @@
 --
 -- == Host Synchronization
 --
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
 -- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
 --     @commandBuffer@ was allocated from /must/ be externally synchronized
 --
@@ -341,6 +345,8 @@
 --     allocated from /must/ support graphics, or compute operations
 --
 -- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
 --
 -- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
 --     @commandBuffer@ was allocated from /must/ be externally synchronized
diff --git a/src/Vulkan/Extensions/VK_EXT_debug_report.hs b/src/Vulkan/Extensions/VK_EXT_debug_report.hs
--- a/src/Vulkan/Extensions/VK_EXT_debug_report.hs
+++ b/src/Vulkan/Extensions/VK_EXT_debug_report.hs
@@ -110,10 +110,10 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Vulkan.NamedType ((:::))
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Extensions.Handles (DebugReportCallbackEXT)
 import Vulkan.Extensions.Handles (DebugReportCallbackEXT(..))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Handles (Instance)
@@ -802,10 +802,11 @@
 --
 -- The callback /must/ not call 'destroyDebugReportCallbackEXT'.
 --
--- The callback returns a 'Vulkan.Core10.BaseType.Bool32', which is
+-- The callback returns a 'Vulkan.Core10.FundamentalTypes.Bool32', which is
 -- interpreted in a layer-specified manner. The application /should/ always
--- return 'Vulkan.Core10.BaseType.FALSE'. The 'Vulkan.Core10.BaseType.TRUE'
--- value is reserved for use in layer development.
+-- return 'Vulkan.Core10.FundamentalTypes.FALSE'. The
+-- 'Vulkan.Core10.FundamentalTypes.TRUE' value is reserved for use in layer
+-- development.
 --
 -- @object@ /must/ be a Vulkan object or
 -- 'Vulkan.Core10.APIConstants.NULL_HANDLE'. If @objectType@ is not
diff --git a/src/Vulkan/Extensions/VK_EXT_debug_utils.hs b/src/Vulkan/Extensions/VK_EXT_debug_utils.hs
--- a/src/Vulkan/Extensions/VK_EXT_debug_utils.hs
+++ b/src/Vulkan/Extensions/VK_EXT_debug_utils.hs
@@ -101,7 +101,7 @@
 import Vulkan.CStruct.Utils (lowerArrayPtr)
 import Vulkan.NamedType ((:::))
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Handles (CommandBuffer)
 import Vulkan.Core10.Handles (CommandBuffer(..))
 import Vulkan.Core10.Handles (CommandBuffer_T)
@@ -118,7 +118,7 @@
 import Vulkan.Dynamic (DeviceCmds(pVkSetDebugUtilsObjectNameEXT))
 import Vulkan.Dynamic (DeviceCmds(pVkSetDebugUtilsObjectTagEXT))
 import Vulkan.Core10.Handles (Device_T)
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Handles (Instance)
@@ -427,6 +427,8 @@
 --
 -- == Host Synchronization
 --
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
 -- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
 --     @commandBuffer@ was allocated from /must/ be externally synchronized
 --
@@ -514,6 +516,8 @@
 --
 -- == Host Synchronization
 --
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
 -- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
 --     @commandBuffer@ was allocated from /must/ be externally synchronized
 --
@@ -571,6 +575,8 @@
 --
 -- == Host Synchronization
 --
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
 -- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
 --     @commandBuffer@ was allocated from /must/ be externally synchronized
 --
@@ -1407,7 +1413,16 @@
            mempty
 
 
--- No documentation found for TopLevel "VkDebugUtilsMessengerCreateFlagsEXT"
+-- | VkDebugUtilsMessengerCreateFlagsEXT - Reserved for future use
+--
+-- = Description
+--
+-- 'DebugUtilsMessengerCreateFlagsEXT' is a bitmask type for setting a
+-- mask, but is currently reserved for future use.
+--
+-- = See Also
+--
+-- 'DebugUtilsMessengerCreateInfoEXT'
 newtype DebugUtilsMessengerCreateFlagsEXT = DebugUtilsMessengerCreateFlagsEXT Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits)
 
@@ -1426,7 +1441,16 @@
                        pure (DebugUtilsMessengerCreateFlagsEXT v)))
 
 
--- No documentation found for TopLevel "VkDebugUtilsMessengerCallbackDataFlagsEXT"
+-- | VkDebugUtilsMessengerCallbackDataFlagsEXT - Reserved for future use
+--
+-- = Description
+--
+-- 'DebugUtilsMessengerCallbackDataFlagsEXT' is a bitmask type for setting
+-- a mask, but is currently reserved for future use.
+--
+-- = See Also
+--
+-- 'DebugUtilsMessengerCallbackDataEXT'
 newtype DebugUtilsMessengerCallbackDataFlagsEXT = DebugUtilsMessengerCallbackDataFlagsEXT Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits)
 
@@ -1549,10 +1573,11 @@
 --
 -- The callback /must/ not call 'destroyDebugUtilsMessengerEXT'.
 --
--- The callback returns a 'Vulkan.Core10.BaseType.Bool32', which is
+-- The callback returns a 'Vulkan.Core10.FundamentalTypes.Bool32', which is
 -- interpreted in a layer-specified manner. The application /should/ always
--- return 'Vulkan.Core10.BaseType.FALSE'. The 'Vulkan.Core10.BaseType.TRUE'
--- value is reserved for use in layer development.
+-- return 'Vulkan.Core10.FundamentalTypes.FALSE'. The
+-- 'Vulkan.Core10.FundamentalTypes.TRUE' value is reserved for use in layer
+-- development.
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_depth_clip_enable.hs b/src/Vulkan/Extensions/VK_EXT_depth_clip_enable.hs
--- a/src/Vulkan/Extensions/VK_EXT_depth_clip_enable.hs
+++ b/src/Vulkan/Extensions/VK_EXT_depth_clip_enable.hs
@@ -32,10 +32,10 @@
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -67,7 +67,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceDepthClipEnableFeaturesEXT = PhysicalDeviceDepthClipEnableFeaturesEXT
   { -- | @depthClipEnable@ indicates that the implementation supports setting the
@@ -75,7 +75,7 @@
     -- 'PipelineRasterizationDepthClipStateCreateInfoEXT' pipeline state.
     -- Otherwise depth clipping is only enabled when
     -- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@depthClampEnable@
-    -- is set to 'Vulkan.Core10.BaseType.FALSE'.
+    -- is set to 'Vulkan.Core10.FundamentalTypes.FALSE'.
     depthClipEnable :: Bool }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
@@ -122,7 +122,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'PipelineRasterizationDepthClipStateCreateFlagsEXT',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PipelineRasterizationDepthClipStateCreateInfoEXT = PipelineRasterizationDepthClipStateCreateInfoEXT
diff --git a/src/Vulkan/Extensions/VK_EXT_discard_rectangles.hs b/src/Vulkan/Extensions/VK_EXT_discard_rectangles.hs
--- a/src/Vulkan/Extensions/VK_EXT_discard_rectangles.hs
+++ b/src/Vulkan/Extensions/VK_EXT_discard_rectangles.hs
@@ -35,7 +35,6 @@
 import Data.Vector (generateM)
 import qualified Data.Vector (imapM_)
 import qualified Data.Vector (length)
-import qualified Data.Vector (null)
 import Control.Monad.IO.Class (MonadIO)
 import Data.Bits (Bits)
 import Data.String (IsString)
@@ -62,10 +61,10 @@
 import Vulkan.Core10.Handles (CommandBuffer(..))
 import Vulkan.Core10.Handles (CommandBuffer_T)
 import Vulkan.Dynamic (DeviceCmds(pVkCmdSetDiscardRectangleEXT))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.Core10.CommandBufferBuilding (Rect2D)
+import Vulkan.Core10.FundamentalTypes (Rect2D)
 import Vulkan.Core10.Enums.StructureType (StructureType)
 import Vulkan.CStruct (ToCStruct)
 import Vulkan.CStruct (ToCStruct(..))
@@ -101,16 +100,16 @@
 --     'PhysicalDeviceDiscardRectanglePropertiesEXT'::@maxDiscardRectangles@
 --
 -- -   The @x@ and @y@ member of @offset@ in each
---     'Vulkan.Core10.CommandBufferBuilding.Rect2D' element of
+--     'Vulkan.Core10.FundamentalTypes.Rect2D' element of
 --     @pDiscardRectangles@ /must/ be greater than or equal to @0@
 --
 -- -   Evaluation of (@offset.x@ + @extent.width@) in each
---     'Vulkan.Core10.CommandBufferBuilding.Rect2D' element of
+--     'Vulkan.Core10.FundamentalTypes.Rect2D' element of
 --     @pDiscardRectangles@ /must/ not cause a signed integer addition
 --     overflow
 --
 -- -   Evaluation of (@offset.y@ + @extent.height@) in each
---     'Vulkan.Core10.CommandBufferBuilding.Rect2D' element of
+--     'Vulkan.Core10.FundamentalTypes.Rect2D' element of
 --     @pDiscardRectangles@ /must/ not cause a signed integer addition
 --     overflow
 --
@@ -120,7 +119,7 @@
 --     'Vulkan.Core10.Handles.CommandBuffer' handle
 --
 -- -   @pDiscardRectangles@ /must/ be a valid pointer to an array of
---     @discardRectangleCount@ 'Vulkan.Core10.CommandBufferBuilding.Rect2D'
+--     @discardRectangleCount@ 'Vulkan.Core10.FundamentalTypes.Rect2D'
 --     structures
 --
 -- -   @commandBuffer@ /must/ be in the
@@ -152,7 +151,7 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.CommandBufferBuilding.Rect2D'
+-- 'Vulkan.Core10.FundamentalTypes.Rect2D'
 cmdSetDiscardRectangleEXT :: forall io
                            . (MonadIO io)
                           => -- | @commandBuffer@ is the command buffer into which the command will be
@@ -162,8 +161,8 @@
                              -- whose state is updated by the command.
                              ("firstDiscardRectangle" ::: Word32)
                           -> -- | @pDiscardRectangles@ is a pointer to an array of
-                             -- 'Vulkan.Core10.CommandBufferBuilding.Rect2D' structures specifying
-                             -- discard rectangles.
+                             -- 'Vulkan.Core10.FundamentalTypes.Rect2D' structures specifying discard
+                             -- rectangles.
                              ("discardRectangles" ::: Vector Rect2D)
                           -> io ()
 cmdSetDiscardRectangleEXT commandBuffer firstDiscardRectangle discardRectangles = liftIO . evalContT $ do
@@ -261,7 +260,7 @@
 --
 -- 'DiscardRectangleModeEXT',
 -- 'PipelineDiscardRectangleStateCreateFlagsEXT',
--- 'Vulkan.Core10.CommandBufferBuilding.Rect2D',
+-- 'Vulkan.Core10.FundamentalTypes.Rect2D',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PipelineDiscardRectangleStateCreateInfoEXT = PipelineDiscardRectangleStateCreateInfoEXT
   { -- | @flags@ is reserved for future use.
@@ -273,13 +272,8 @@
     --
     -- @discardRectangleMode@ /must/ be a valid 'DiscardRectangleModeEXT' value
     discardRectangleMode :: DiscardRectangleModeEXT
-  , -- | @discardRectangleCount@ is the number of discard rectangles to use.
-    --
-    -- @discardRectangleCount@ /must/ be less than or equal to
-    -- 'PhysicalDeviceDiscardRectanglePropertiesEXT'::@maxDiscardRectangles@
-    discardRectangleCount :: Word32
   , -- | @pDiscardRectangles@ is a pointer to an array of
-    -- 'Vulkan.Core10.CommandBufferBuilding.Rect2D' structures defining discard
+    -- 'Vulkan.Core10.FundamentalTypes.Rect2D' structures defining discard
     -- rectangles.
     discardRectangles :: Vector Rect2D
   }
@@ -296,29 +290,21 @@
     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
     lift $ poke ((p `plusPtr` 16 :: Ptr PipelineDiscardRectangleStateCreateFlagsEXT)) (flags)
     lift $ poke ((p `plusPtr` 20 :: Ptr DiscardRectangleModeEXT)) (discardRectangleMode)
-    let pDiscardRectanglesLength = Data.Vector.length $ (discardRectangles)
-    discardRectangleCount'' <- lift $ if (discardRectangleCount) == 0
-      then pure $ fromIntegral pDiscardRectanglesLength
-      else do
-        unless (fromIntegral pDiscardRectanglesLength == (discardRectangleCount) || pDiscardRectanglesLength == 0) $
-          throwIO $ IOError Nothing InvalidArgument "" "pDiscardRectangles must be empty or have 'discardRectangleCount' elements" Nothing Nothing
-        pure (discardRectangleCount)
-    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (discardRectangleCount'')
-    pDiscardRectangles'' <- if Data.Vector.null (discardRectangles)
-      then pure nullPtr
-      else do
-        pPDiscardRectangles <- ContT $ allocaBytesAligned @Rect2D (((Data.Vector.length (discardRectangles))) * 16) 4
-        Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPDiscardRectangles `plusPtr` (16 * (i)) :: Ptr Rect2D) (e) . ($ ())) ((discardRectangles))
-        pure $ pPDiscardRectangles
-    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Rect2D))) pDiscardRectangles''
+    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (discardRectangles)) :: Word32))
+    pPDiscardRectangles' <- ContT $ allocaBytesAligned @Rect2D ((Data.Vector.length (discardRectangles)) * 16) 4
+    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPDiscardRectangles' `plusPtr` (16 * (i)) :: Ptr Rect2D) (e) . ($ ())) (discardRectangles)
+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Rect2D))) (pPDiscardRectangles')
     lift $ f
   cStructSize = 40
   cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 20 :: Ptr DiscardRectangleModeEXT)) (zero)
-    f
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 20 :: Ptr DiscardRectangleModeEXT)) (zero)
+    pPDiscardRectangles' <- ContT $ allocaBytesAligned @Rect2D ((Data.Vector.length (mempty)) * 16) 4
+    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPDiscardRectangles' `plusPtr` (16 * (i)) :: Ptr Rect2D) (e) . ($ ())) (mempty)
+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Rect2D))) (pPDiscardRectangles')
+    lift $ f
 
 instance FromCStruct PipelineDiscardRectangleStateCreateInfoEXT where
   peekCStruct p = do
@@ -326,14 +312,12 @@
     discardRectangleMode <- peek @DiscardRectangleModeEXT ((p `plusPtr` 20 :: Ptr DiscardRectangleModeEXT))
     discardRectangleCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
     pDiscardRectangles <- peek @(Ptr Rect2D) ((p `plusPtr` 32 :: Ptr (Ptr Rect2D)))
-    let pDiscardRectanglesLength = if pDiscardRectangles == nullPtr then 0 else (fromIntegral discardRectangleCount)
-    pDiscardRectangles' <- generateM pDiscardRectanglesLength (\i -> peekCStruct @Rect2D ((pDiscardRectangles `advancePtrBytes` (16 * (i)) :: Ptr Rect2D)))
+    pDiscardRectangles' <- generateM (fromIntegral discardRectangleCount) (\i -> peekCStruct @Rect2D ((pDiscardRectangles `advancePtrBytes` (16 * (i)) :: Ptr Rect2D)))
     pure $ PipelineDiscardRectangleStateCreateInfoEXT
-             flags discardRectangleMode discardRectangleCount pDiscardRectangles'
+             flags discardRectangleMode pDiscardRectangles'
 
 instance Zero PipelineDiscardRectangleStateCreateInfoEXT where
   zero = PipelineDiscardRectangleStateCreateInfoEXT
-           zero
            zero
            zero
            mempty
diff --git a/src/Vulkan/Extensions/VK_EXT_display_surface_counter.hs b/src/Vulkan/Extensions/VK_EXT_display_surface_counter.hs
--- a/src/Vulkan/Extensions/VK_EXT_display_surface_counter.hs
+++ b/src/Vulkan/Extensions/VK_EXT_display_surface_counter.hs
@@ -54,8 +54,8 @@
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
 import Vulkan.Extensions.VK_KHR_surface (CompositeAlphaFlagsKHR)
-import Vulkan.Core10.SharedTypes (Extent2D)
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Extent2D)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)
@@ -95,7 +95,7 @@
 --
 -- 'getPhysicalDeviceSurfaceCapabilities2EXT' behaves similarly to
 -- 'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR',
--- with the ability to return extended information by adding extension
+-- with the ability to return extended information by adding extending
 -- structures to the @pNext@ chain of its @pSurfaceCapabilities@ parameter.
 --
 -- == Valid Usage (Implicit)
@@ -171,7 +171,7 @@
 -- = See Also
 --
 -- 'Vulkan.Extensions.VK_KHR_surface.CompositeAlphaFlagsKHR',
--- 'Vulkan.Core10.SharedTypes.Extent2D',
+-- 'Vulkan.Core10.FundamentalTypes.Extent2D',
 -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlags',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'SurfaceCounterFlagsEXT',
diff --git a/src/Vulkan/Extensions/VK_EXT_external_memory_host.hs b/src/Vulkan/Extensions/VK_EXT_external_memory_host.hs
--- a/src/Vulkan/Extensions/VK_EXT_external_memory_host.hs
+++ b/src/Vulkan/Extensions/VK_EXT_external_memory_host.hs
@@ -38,7 +38,7 @@
 import Vulkan.Core10.Handles (Device)
 import Vulkan.Core10.Handles (Device(..))
 import Vulkan.Dynamic (DeviceCmds(pVkGetMemoryHostPointerPropertiesEXT))
-import Vulkan.Core10.BaseType (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
 import Vulkan.Core10.Handles (Device_T)
 import Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits)
 import Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits(..))
@@ -320,7 +320,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.DeviceSize',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceExternalMemoryHostPropertiesEXT = PhysicalDeviceExternalMemoryHostPropertiesEXT
   { -- | @minImportedHostPointerAlignment@ is the minimum /required/ alignment,
diff --git a/src/Vulkan/Extensions/VK_EXT_filter_cubic.hs b/src/Vulkan/Extensions/VK_EXT_filter_cubic.hs
--- a/src/Vulkan/Extensions/VK_EXT_filter_cubic.hs
+++ b/src/Vulkan/Extensions/VK_EXT_filter_cubic.hs
@@ -21,9 +21,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.ImageViewType (ImageViewType)
@@ -119,7 +119,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data FilterCubicImageViewImageFormatPropertiesEXT = FilterCubicImageViewImageFormatPropertiesEXT
   { -- | @filterCubic@ tells if image format, image type and image view type
diff --git a/src/Vulkan/Extensions/VK_EXT_fragment_density_map.hs b/src/Vulkan/Extensions/VK_EXT_fragment_density_map.hs
--- a/src/Vulkan/Extensions/VK_EXT_fragment_density_map.hs
+++ b/src/Vulkan/Extensions/VK_EXT_fragment_density_map.hs
@@ -23,11 +23,11 @@
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.Core10.Pass (AttachmentReference)
-import Vulkan.Core10.BaseType (Bool32)
-import Vulkan.Core10.SharedTypes (Extent2D)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (Extent2D)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -59,7 +59,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceFragmentDensityMapFeaturesEXT = PhysicalDeviceFragmentDensityMapFeaturesEXT
   { -- | @fragmentDensityMap@ specifies whether the implementation supports
@@ -151,7 +151,8 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32', 'Vulkan.Core10.SharedTypes.Extent2D',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Extent2D',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceFragmentDensityMapPropertiesEXT = PhysicalDeviceFragmentDensityMapPropertiesEXT
   { -- | @minFragmentDensityTexelSize@ is the minimum
diff --git a/src/Vulkan/Extensions/VK_EXT_fragment_shader_interlock.hs b/src/Vulkan/Extensions/VK_EXT_fragment_shader_interlock.hs
--- a/src/Vulkan/Extensions/VK_EXT_fragment_shader_interlock.hs
+++ b/src/Vulkan/Extensions/VK_EXT_fragment_shader_interlock.hs
@@ -18,9 +18,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -51,7 +51,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceFragmentShaderInterlockFeaturesEXT = PhysicalDeviceFragmentShaderInterlockFeaturesEXT
   { -- | @fragmentShaderSampleInterlock@ indicates that the implementation
diff --git a/src/Vulkan/Extensions/VK_EXT_full_screen_exclusive.hs b/src/Vulkan/Extensions/VK_EXT_full_screen_exclusive.hs
--- a/src/Vulkan/Extensions/VK_EXT_full_screen_exclusive.hs
+++ b/src/Vulkan/Extensions/VK_EXT_full_screen_exclusive.hs
@@ -16,13 +16,13 @@
                                                        , pattern EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION
                                                        , EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME
                                                        , pattern EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME
+                                                       , HMONITOR
                                                        , SurfaceKHR(..)
                                                        , SwapchainKHR(..)
                                                        , PhysicalDeviceSurfaceInfo2KHR(..)
                                                        , PresentModeKHR(..)
                                                        , DeviceGroupPresentModeFlagBitsKHR(..)
                                                        , DeviceGroupPresentModeFlagsKHR
-                                                       , HMONITOR
                                                        ) where
 
 import Control.Exception.Base (bracket)
@@ -68,11 +68,11 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
 import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.CStruct.Extends (forgetExtensions)
 import Vulkan.NamedType ((:::))
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Handles (Device)
 import Vulkan.Core10.Handles (Device(..))
 import Vulkan.Dynamic (DeviceCmds(pVkAcquireFullScreenExclusiveModeEXT))
@@ -84,7 +84,6 @@
 import Vulkan.CStruct.Extends (Extendss)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.Extensions.WSITypes (HMONITOR)
 import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceSurfacePresentModes2EXT))
 import Vulkan.Core10.Handles (PhysicalDevice)
 import Vulkan.Core10.Handles (PhysicalDevice(..))
@@ -110,7 +109,6 @@
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
 import Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentModeFlagBitsKHR(..))
 import Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentModeFlagsKHR)
-import Vulkan.Extensions.WSITypes (HMONITOR)
 import Vulkan.Extensions.VK_KHR_get_surface_capabilities2 (PhysicalDeviceSurfaceInfo2KHR(..))
 import Vulkan.Extensions.VK_KHR_surface (PresentModeKHR(..))
 import Vulkan.Extensions.Handles (SurfaceKHR(..))
@@ -483,10 +481,10 @@
 --
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data SurfaceFullScreenExclusiveWin32InfoEXT = SurfaceFullScreenExclusiveWin32InfoEXT
-  { -- | @hmonitor@ is the Win32 'Vulkan.Extensions.WSITypes.HMONITOR' handle
-    -- identifying the display to create the surface with.
+  { -- | @hmonitor@ is the Win32 'HMONITOR' handle identifying the display to
+    -- create the surface with.
     --
-    -- @hmonitor@ /must/ be a valid 'Vulkan.Extensions.WSITypes.HMONITOR'
+    -- @hmonitor@ /must/ be a valid 'HMONITOR'
     hmonitor :: HMONITOR }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
@@ -534,19 +532,20 @@
 -- This structure /can/ be included in the @pNext@ chain of
 -- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR'
 -- to determine support for exclusive full-screen access. If
--- @fullScreenExclusiveSupported@ is 'Vulkan.Core10.BaseType.FALSE', it
--- indicates that exclusive full-screen access is not obtainable for this
--- surface.
+-- @fullScreenExclusiveSupported@ is
+-- 'Vulkan.Core10.FundamentalTypes.FALSE', it indicates that exclusive
+-- full-screen access is not obtainable for this surface.
 --
 -- Applications /must/ not attempt to create swapchains with
 -- 'FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT' set if
--- @fullScreenExclusiveSupported@ is 'Vulkan.Core10.BaseType.FALSE'.
+-- @fullScreenExclusiveSupported@ is
+-- 'Vulkan.Core10.FundamentalTypes.FALSE'.
 --
 -- == Valid Usage (Implicit)
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data SurfaceCapabilitiesFullScreenExclusiveEXT = SurfaceCapabilitiesFullScreenExclusiveEXT
   { -- No documentation found for Nested "VkSurfaceCapabilitiesFullScreenExclusiveEXT" "fullScreenExclusiveSupported"
@@ -655,4 +654,7 @@
 -- No documentation found for TopLevel "VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME"
 pattern EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
 pattern EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME = "VK_EXT_full_screen_exclusive"
+
+
+type HMONITOR = Ptr ()
 
diff --git a/src/Vulkan/Extensions/VK_EXT_headless_surface.hs b/src/Vulkan/Extensions/VK_EXT_headless_surface.hs
--- a/src/Vulkan/Extensions/VK_EXT_headless_surface.hs
+++ b/src/Vulkan/Extensions/VK_EXT_headless_surface.hs
@@ -50,7 +50,7 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Vulkan.NamedType ((:::))
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Handles (Instance)
@@ -191,7 +191,16 @@
            zero
 
 
--- No documentation found for TopLevel "VkHeadlessSurfaceCreateFlagsEXT"
+-- | VkHeadlessSurfaceCreateFlagsEXT - Reserved for future use
+--
+-- = Description
+--
+-- 'HeadlessSurfaceCreateFlagsEXT' is a bitmask type for setting a mask,
+-- but is currently reserved for future use.
+--
+-- = See Also
+--
+-- 'HeadlessSurfaceCreateInfoEXT'
 newtype HeadlessSurfaceCreateFlagsEXT = HeadlessSurfaceCreateFlagsEXT Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits)
 
diff --git a/src/Vulkan/Extensions/VK_EXT_index_type_uint8.hs b/src/Vulkan/Extensions/VK_EXT_index_type_uint8.hs
--- a/src/Vulkan/Extensions/VK_EXT_index_type_uint8.hs
+++ b/src/Vulkan/Extensions/VK_EXT_index_type_uint8.hs
@@ -18,9 +18,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -50,7 +50,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceIndexTypeUint8FeaturesEXT = PhysicalDeviceIndexTypeUint8FeaturesEXT
   { -- | @indexTypeUint8@ indicates that
diff --git a/src/Vulkan/Extensions/VK_EXT_inline_uniform_block.hs b/src/Vulkan/Extensions/VK_EXT_inline_uniform_block.hs
--- a/src/Vulkan/Extensions/VK_EXT_inline_uniform_block.hs
+++ b/src/Vulkan/Extensions/VK_EXT_inline_uniform_block.hs
@@ -22,9 +22,9 @@
 import Foreign.Ptr (Ptr)
 import Data.Word (Word32)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -57,7 +57,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceInlineUniformBlockFeaturesEXT = PhysicalDeviceInlineUniformBlockFeaturesEXT
   { -- | @inlineUniformBlock@ indicates whether the implementation supports
diff --git a/src/Vulkan/Extensions/VK_EXT_line_rasterization.hs b/src/Vulkan/Extensions/VK_EXT_line_rasterization.hs
--- a/src/Vulkan/Extensions/VK_EXT_line_rasterization.hs
+++ b/src/Vulkan/Extensions/VK_EXT_line_rasterization.hs
@@ -49,10 +49,10 @@
 import Data.Word (Word32)
 import Text.Read.Lex (Lexeme(Ident))
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.NamedType ((:::))
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Handles (CommandBuffer)
 import Vulkan.Core10.Handles (CommandBuffer(..))
 import Vulkan.Core10.Handles (CommandBuffer_T)
@@ -155,7 +155,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceLineRasterizationFeaturesEXT = PhysicalDeviceLineRasterizationFeaturesEXT
   { -- | @rectangularLines@ indicates whether the implementation supports
@@ -172,7 +172,7 @@
     -- with 'LINE_RASTERIZATION_MODE_RECTANGULAR_EXT' lines, or with
     -- 'LINE_RASTERIZATION_MODE_DEFAULT_EXT' lines if
     -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
-    -- is 'Vulkan.Core10.BaseType.TRUE'.
+    -- is 'Vulkan.Core10.FundamentalTypes.TRUE'.
     stippledRectangularLines :: Bool
   , -- | @stippledBresenhamLines@ indicates whether the implementation supports
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-stipple stippled line rasterization>
@@ -324,31 +324,31 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bresenhamLines smoothLines>
 --     feature /must/ be enabled
 --
--- -   If @stippledLineEnable@ is 'Vulkan.Core10.BaseType.TRUE' and
+-- -   If @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' and
 --     @lineRasterizationMode@ is
 --     'LINE_RASTERIZATION_MODE_RECTANGULAR_EXT', then the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
 --     feature /must/ be enabled
 --
--- -   If @stippledLineEnable@ is 'Vulkan.Core10.BaseType.TRUE' and
+-- -   If @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' and
 --     @lineRasterizationMode@ is 'LINE_RASTERIZATION_MODE_BRESENHAM_EXT',
 --     then the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
 --     feature /must/ be enabled
 --
--- -   If @stippledLineEnable@ is 'Vulkan.Core10.BaseType.TRUE' and
+-- -   If @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' and
 --     @lineRasterizationMode@ is
 --     'LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT', then the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
 --     feature /must/ be enabled
 --
--- -   If @stippledLineEnable@ is 'Vulkan.Core10.BaseType.TRUE' and
+-- -   If @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' and
 --     @lineRasterizationMode@ is 'LINE_RASTERIZATION_MODE_DEFAULT_EXT',
 --     then the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
 --     feature /must/ be enabled and
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
---     /must/ be 'Vulkan.Core10.BaseType.TRUE'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
 --
 -- == Valid Usage (Implicit)
 --
@@ -360,7 +360,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32', 'LineRasterizationModeEXT',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32', 'LineRasterizationModeEXT',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PipelineRasterizationLineStateCreateInfoEXT = PipelineRasterizationLineStateCreateInfoEXT
   { -- | @lineRasterizationMode@ is a 'LineRasterizationModeEXT' value selecting
@@ -435,7 +435,7 @@
 -- | 'LINE_RASTERIZATION_MODE_DEFAULT_EXT' is equivalent to
 -- 'LINE_RASTERIZATION_MODE_RECTANGULAR_EXT' if
 -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
--- is 'Vulkan.Core10.BaseType.TRUE', otherwise lines are drawn as
+-- is 'Vulkan.Core10.FundamentalTypes.TRUE', otherwise lines are drawn as
 -- non-@strictLines@ parallelograms. Both of these modes are defined in
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-basic Basic Line Segment Rasterization>.
 pattern LINE_RASTERIZATION_MODE_DEFAULT_EXT = LineRasterizationModeEXT 0
diff --git a/src/Vulkan/Extensions/VK_EXT_memory_budget.hs b/src/Vulkan/Extensions/VK_EXT_memory_budget.hs
--- a/src/Vulkan/Extensions/VK_EXT_memory_budget.hs
+++ b/src/Vulkan/Extensions/VK_EXT_memory_budget.hs
@@ -29,7 +29,7 @@
 import Data.Vector (Vector)
 import Vulkan.CStruct.Utils (advancePtrBytes)
 import Vulkan.CStruct.Utils (lowerArrayPtr)
-import Vulkan.Core10.BaseType (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.APIConstants (MAX_MEMORY_HEAPS)
@@ -57,21 +57,22 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.DeviceSize',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceMemoryBudgetPropertiesEXT = PhysicalDeviceMemoryBudgetPropertiesEXT
   { -- | @heapBudget@ is an array of
     -- 'Vulkan.Core10.APIConstants.MAX_MEMORY_HEAPS'
-    -- 'Vulkan.Core10.BaseType.DeviceSize' values in which memory budgets are
-    -- returned, with one element for each memory heap. A heap’s budget is a
-    -- rough estimate of how much memory the process /can/ allocate from that
-    -- heap before allocations /may/ fail or cause performance degradation. The
-    -- budget includes any currently allocated device memory.
+    -- 'Vulkan.Core10.FundamentalTypes.DeviceSize' values in which memory
+    -- budgets are returned, with one element for each memory heap. A heap’s
+    -- budget is a rough estimate of how much memory the process /can/ allocate
+    -- from that heap before allocations /may/ fail or cause performance
+    -- degradation. The budget includes any currently allocated device memory.
     heapBudget :: Vector DeviceSize
   , -- | @heapUsage@ is an array of 'Vulkan.Core10.APIConstants.MAX_MEMORY_HEAPS'
-    -- 'Vulkan.Core10.BaseType.DeviceSize' values in which memory usages are
-    -- returned, with one element for each memory heap. A heap’s usage is an
-    -- estimate of how much memory the process is currently using in that heap.
+    -- 'Vulkan.Core10.FundamentalTypes.DeviceSize' values in which memory
+    -- usages are returned, with one element for each memory heap. A heap’s
+    -- usage is an estimate of how much memory the process is currently using
+    -- in that heap.
     heapUsage :: Vector DeviceSize
   }
   deriving (Typeable)
diff --git a/src/Vulkan/Extensions/VK_EXT_memory_priority.hs b/src/Vulkan/Extensions/VK_EXT_memory_priority.hs
--- a/src/Vulkan/Extensions/VK_EXT_memory_priority.hs
+++ b/src/Vulkan/Extensions/VK_EXT_memory_priority.hs
@@ -21,9 +21,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -54,7 +54,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceMemoryPriorityFeaturesEXT = PhysicalDeviceMemoryPriorityFeaturesEXT
   { -- | @memoryPriority@ indicates that the implementation supports memory
diff --git a/src/Vulkan/Extensions/VK_EXT_metal_surface.hs b/src/Vulkan/Extensions/VK_EXT_metal_surface.hs
--- a/src/Vulkan/Extensions/VK_EXT_metal_surface.hs
+++ b/src/Vulkan/Extensions/VK_EXT_metal_surface.hs
@@ -6,8 +6,8 @@
                                                , pattern EXT_METAL_SURFACE_SPEC_VERSION
                                                , EXT_METAL_SURFACE_EXTENSION_NAME
                                                , pattern EXT_METAL_SURFACE_EXTENSION_NAME
-                                               , SurfaceKHR(..)
                                                , CAMetalLayer
+                                               , SurfaceKHR(..)
                                                ) where
 
 import Control.Exception.Base (bracket)
@@ -51,8 +51,7 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Vulkan.NamedType ((:::))
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Extensions.WSITypes (CAMetalLayer)
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Handles (Instance)
@@ -71,7 +70,6 @@
 import Vulkan.Zero (Zero(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-import Vulkan.Extensions.WSITypes (CAMetalLayer)
 import Vulkan.Extensions.Handles (SurfaceKHR(..))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
@@ -158,8 +156,8 @@
     --
     -- @flags@ /must/ be @0@
     flags :: MetalSurfaceCreateFlagsEXT
-  , -- | @pLayer@ is a reference to a 'Vulkan.Extensions.WSITypes.CAMetalLayer'
-    -- object representing a renderable surface.
+  , -- | @pLayer@ is a reference to a 'CAMetalLayer' object representing a
+    -- renderable surface.
     layer :: Ptr CAMetalLayer
   }
   deriving (Typeable, Eq)
@@ -203,7 +201,16 @@
            zero
 
 
--- No documentation found for TopLevel "VkMetalSurfaceCreateFlagsEXT"
+-- | VkMetalSurfaceCreateFlagsEXT - Reserved for future use
+--
+-- = Description
+--
+-- 'MetalSurfaceCreateFlagsEXT' is a bitmask type for setting a mask, but
+-- is currently reserved for future use.
+--
+-- = See Also
+--
+-- 'MetalSurfaceCreateInfoEXT'
 newtype MetalSurfaceCreateFlagsEXT = MetalSurfaceCreateFlagsEXT Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits)
 
@@ -234,4 +241,7 @@
 -- No documentation found for TopLevel "VK_EXT_METAL_SURFACE_EXTENSION_NAME"
 pattern EXT_METAL_SURFACE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
 pattern EXT_METAL_SURFACE_EXTENSION_NAME = "VK_EXT_metal_surface"
+
+
+data CAMetalLayer
 
diff --git a/src/Vulkan/Extensions/VK_EXT_pipeline_creation_cache_control.hs b/src/Vulkan/Extensions/VK_EXT_pipeline_creation_cache_control.hs
--- a/src/Vulkan/Extensions/VK_EXT_pipeline_creation_cache_control.hs
+++ b/src/Vulkan/Extensions/VK_EXT_pipeline_creation_cache_control.hs
@@ -19,9 +19,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -58,7 +58,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDevicePipelineCreationCacheControlFeaturesEXT = PhysicalDevicePipelineCreationCacheControlFeaturesEXT
   { -- | @pipelineCreationCacheControl@ indicates that the implementation
diff --git a/src/Vulkan/Extensions/VK_EXT_pipeline_creation_feedback.hs b/src/Vulkan/Extensions/VK_EXT_pipeline_creation_feedback.hs
--- a/src/Vulkan/Extensions/VK_EXT_pipeline_creation_feedback.hs
+++ b/src/Vulkan/Extensions/VK_EXT_pipeline_creation_feedback.hs
@@ -39,7 +39,7 @@
 import Data.Word (Word64)
 import Text.Read.Lex (Lexeme(Ident))
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
diff --git a/src/Vulkan/Extensions/VK_EXT_private_data.hs b/src/Vulkan/Extensions/VK_EXT_private_data.hs
--- a/src/Vulkan/Extensions/VK_EXT_private_data.hs
+++ b/src/Vulkan/Extensions/VK_EXT_private_data.hs
@@ -57,11 +57,11 @@
 import Text.Read.Lex (Lexeme(Ident))
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.NamedType ((:::))
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Handles (Device)
 import Vulkan.Core10.Handles (Device(..))
 import Vulkan.Dynamic (DeviceCmds(pVkCreatePrivateDataSlotEXT))
@@ -69,7 +69,7 @@
 import Vulkan.Dynamic (DeviceCmds(pVkGetPrivateDataEXT))
 import Vulkan.Dynamic (DeviceCmds(pVkSetPrivateDataEXT))
 import Vulkan.Core10.Handles (Device_T)
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.ObjectType (ObjectType)
@@ -177,6 +177,35 @@
 
 -- | vkDestroyPrivateDataSlotEXT - Destroy a private data slot
 --
+-- == Valid Usage
+--
+-- -   If 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
+--     provided when @privateDataSlot@ was created, a compatible set of
+--     callbacks /must/ be provided here
+--
+-- -   If no 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
+--     provided when @privateDataSlot@ was created, @pAllocator@ /must/ be
+--     @NULL@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   If @privateDataSlot@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @privateDataSlot@ /must/
+--     be a valid 'Vulkan.Extensions.Handles.PrivateDataSlotEXT' handle
+--
+-- -   If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid
+--     pointer to a valid
+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure
+--
+-- -   If @privateDataSlot@ is a valid handle, it /must/ have been created,
+--     allocated, or retrieved from @device@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @privateDataSlot@ /must/ be externally synchronized
+--
 -- = See Also
 --
 -- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
@@ -461,7 +490,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDevicePrivateDataFeaturesEXT = PhysicalDevicePrivateDataFeaturesEXT
   { -- | @privateData@ indicates whether the implementation supports private
diff --git a/src/Vulkan/Extensions/VK_EXT_robustness2.hs b/src/Vulkan/Extensions/VK_EXT_robustness2.hs
--- a/src/Vulkan/Extensions/VK_EXT_robustness2.hs
+++ b/src/Vulkan/Extensions/VK_EXT_robustness2.hs
@@ -19,10 +19,10 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
-import Vulkan.Core10.BaseType (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -82,7 +82,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceRobustness2FeaturesEXT = PhysicalDeviceRobustness2FeaturesEXT
   { -- No documentation found for Nested "VkPhysicalDeviceRobustness2FeaturesEXT" "robustBufferAccess2"
@@ -157,7 +157,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.DeviceSize',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceRobustness2PropertiesEXT = PhysicalDeviceRobustness2PropertiesEXT
   { -- | @robustStorageBufferAccessSizeAlignment@ is the number of bytes that the
diff --git a/src/Vulkan/Extensions/VK_EXT_sample_locations.hs b/src/Vulkan/Extensions/VK_EXT_sample_locations.hs
--- a/src/Vulkan/Extensions/VK_EXT_sample_locations.hs
+++ b/src/Vulkan/Extensions/VK_EXT_sample_locations.hs
@@ -47,16 +47,16 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
 import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.CStruct.Utils (lowerArrayPtr)
 import Vulkan.NamedType ((:::))
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Handles (CommandBuffer)
 import Vulkan.Core10.Handles (CommandBuffer(..))
 import Vulkan.Core10.Handles (CommandBuffer_T)
 import Vulkan.Dynamic (DeviceCmds(pVkCmdSetSampleLocationsEXT))
-import Vulkan.Core10.SharedTypes (Extent2D)
+import Vulkan.Core10.FundamentalTypes (Extent2D)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceMultisamplePropertiesEXT))
@@ -93,8 +93,8 @@
 --
 -- -   If
 --     'PhysicalDeviceSampleLocationsPropertiesEXT'::@variableSampleLocations@
---     is 'Vulkan.Core10.BaseType.FALSE' then the current render pass
---     /must/ have been begun by specifying a
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE' then the current render
+--     pass /must/ have been begun by specifying a
 --     'RenderPassSampleLocationsBeginInfoEXT' structure whose
 --     @pPostSubpassSampleLocations@ member contains an element with a
 --     @subpassIndex@ matching the current subpass index and the
@@ -303,7 +303,8 @@
 --
 -- = See Also
 --
--- 'AttachmentSampleLocationsEXT', 'Vulkan.Core10.SharedTypes.Extent2D',
+-- 'AttachmentSampleLocationsEXT',
+-- 'Vulkan.Core10.FundamentalTypes.Extent2D',
 -- 'PipelineSampleLocationsStateCreateInfoEXT',
 -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits',
 -- 'SampleLocationEXT', 'Vulkan.Core10.Enums.StructureType.StructureType',
@@ -442,7 +443,7 @@
 -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
 -- or if the subpass does not use a depth\/stencil attachment, and
 -- 'PhysicalDeviceSampleLocationsPropertiesEXT'::@variableSampleLocations@
--- is 'Vulkan.Core10.BaseType.TRUE' then the values specified in
+-- is 'Vulkan.Core10.FundamentalTypes.TRUE' then the values specified in
 -- @sampleLocationsInfo@ are ignored.
 --
 -- == Valid Usage (Implicit)
@@ -545,12 +546,12 @@
     -- or to the final layout of the attachment in case the specified subpass
     -- is the last subpass using that attachment. In addition, if
     -- 'PhysicalDeviceSampleLocationsPropertiesEXT'::@variableSampleLocations@
-    -- is 'Vulkan.Core10.BaseType.FALSE', each element of
+    -- is 'Vulkan.Core10.FundamentalTypes.FALSE', each element of
     -- @pPostSubpassSampleLocations@ /must/ specify the sample location state
     -- that matches the sample locations used by all pipelines that will be
     -- bound to a command buffer during the specified subpass. If
-    -- @variableSampleLocations@ is 'Vulkan.Core10.BaseType.TRUE', the sample
-    -- locations used for rasterization do not depend on
+    -- @variableSampleLocations@ is 'Vulkan.Core10.FundamentalTypes.TRUE', the
+    -- sample locations used for rasterization do not depend on
     -- @pPostSubpassSampleLocations@.
     postSubpassSampleLocations :: Vector SubpassSampleLocationsEXT
   }
@@ -611,18 +612,18 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32', 'SampleLocationsInfoEXT',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32', 'SampleLocationsInfoEXT',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PipelineSampleLocationsStateCreateInfoEXT = PipelineSampleLocationsStateCreateInfoEXT
   { -- | @sampleLocationsEnable@ controls whether custom sample locations are
-    -- used. If @sampleLocationsEnable@ is 'Vulkan.Core10.BaseType.FALSE', the
-    -- default sample locations are used and the values specified in
-    -- @sampleLocationsInfo@ are ignored.
+    -- used. If @sampleLocationsEnable@ is
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE', the default sample locations are
+    -- used and the values specified in @sampleLocationsInfo@ are ignored.
     sampleLocationsEnable :: Bool
   , -- | @sampleLocationsInfo@ is the sample locations to use during
     -- rasterization if @sampleLocationsEnable@ is
-    -- 'Vulkan.Core10.BaseType.TRUE' and the graphics pipeline is not created
-    -- with
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' and the graphics pipeline is not
+    -- created with
     -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'.
     --
     -- @sampleLocationsInfo@ /must/ be a valid 'SampleLocationsInfoEXT'
@@ -684,7 +685,8 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32', 'Vulkan.Core10.SharedTypes.Extent2D',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Extent2D',
 -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlags',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceSampleLocationsPropertiesEXT = PhysicalDeviceSampleLocationsPropertiesEXT
@@ -704,10 +706,10 @@
     sampleLocationSubPixelBits :: Word32
   , -- | @variableSampleLocations@ specifies whether the sample locations used by
     -- all pipelines that will be bound to a command buffer during a subpass
-    -- /must/ match. If set to 'Vulkan.Core10.BaseType.TRUE', the
+    -- /must/ match. If set to 'Vulkan.Core10.FundamentalTypes.TRUE', the
     -- implementation supports variable sample locations in a subpass. If set
-    -- to 'Vulkan.Core10.BaseType.FALSE', then the sample locations /must/ stay
-    -- constant in each subpass.
+    -- to 'Vulkan.Core10.FundamentalTypes.FALSE', then the sample locations
+    -- /must/ stay constant in each subpass.
     variableSampleLocations :: Bool
   }
   deriving (Typeable)
@@ -775,7 +777,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.SharedTypes.Extent2D',
+-- 'Vulkan.Core10.FundamentalTypes.Extent2D',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'getPhysicalDeviceMultisamplePropertiesEXT'
 data MultisamplePropertiesEXT = MultisamplePropertiesEXT
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_demote_to_helper_invocation.hs b/src/Vulkan/Extensions/VK_EXT_shader_demote_to_helper_invocation.hs
--- a/src/Vulkan/Extensions/VK_EXT_shader_demote_to_helper_invocation.hs
+++ b/src/Vulkan/Extensions/VK_EXT_shader_demote_to_helper_invocation.hs
@@ -18,9 +18,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -52,7 +52,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT
   { -- | @shaderDemoteToHelperInvocation@ indicates whether the implementation
diff --git a/src/Vulkan/Extensions/VK_EXT_subgroup_size_control.hs b/src/Vulkan/Extensions/VK_EXT_subgroup_size_control.hs
--- a/src/Vulkan/Extensions/VK_EXT_subgroup_size_control.hs
+++ b/src/Vulkan/Extensions/VK_EXT_subgroup_size_control.hs
@@ -21,9 +21,9 @@
 import Foreign.Ptr (Ptr)
 import Data.Word (Word32)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
@@ -74,7 +74,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceSubgroupSizeControlFeaturesEXT = PhysicalDeviceSubgroupSizeControlFeaturesEXT
   { -- | @subgroupSizeControl@ indicates whether the implementation supports
diff --git a/src/Vulkan/Extensions/VK_EXT_texel_buffer_alignment.hs b/src/Vulkan/Extensions/VK_EXT_texel_buffer_alignment.hs
--- a/src/Vulkan/Extensions/VK_EXT_texel_buffer_alignment.hs
+++ b/src/Vulkan/Extensions/VK_EXT_texel_buffer_alignment.hs
@@ -19,10 +19,10 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
-import Vulkan.Core10.BaseType (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -54,7 +54,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceTexelBufferAlignmentFeaturesEXT = PhysicalDeviceTexelBufferAlignmentFeaturesEXT
   { -- | @texelBufferAlignment@ indicates whether the implementation uses more
@@ -116,11 +116,12 @@
 -- it is filled with the implementation-dependent limits.
 --
 -- If the single texel alignment property is
--- 'Vulkan.Core10.BaseType.FALSE', then the buffer view’s offset /must/ be
--- aligned to the corresponding byte alignment value. If the single texel
--- alignment property is 'Vulkan.Core10.BaseType.TRUE', then the buffer
--- view’s offset /must/ be aligned to the lesser of the corresponding byte
--- alignment value or the size of a single texel, based on
+-- 'Vulkan.Core10.FundamentalTypes.FALSE', then the buffer view’s offset
+-- /must/ be aligned to the corresponding byte alignment value. If the
+-- single texel alignment property is
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', then the buffer view’s offset
+-- /must/ be aligned to the lesser of the corresponding byte alignment
+-- value or the size of a single texel, based on
 -- 'Vulkan.Core10.BufferView.BufferViewCreateInfo'::@format@. If the size
 -- of a single texel is a multiple of three bytes, then the size of a
 -- single component of the format is used instead.
@@ -135,7 +136,8 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32', 'Vulkan.Core10.BaseType.DeviceSize',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceTexelBufferAlignmentPropertiesEXT = PhysicalDeviceTexelBufferAlignmentPropertiesEXT
   { -- | @storageTexelBufferOffsetAlignmentBytes@ is a byte alignment that is
diff --git a/src/Vulkan/Extensions/VK_EXT_texture_compression_astc_hdr.hs b/src/Vulkan/Extensions/VK_EXT_texture_compression_astc_hdr.hs
--- a/src/Vulkan/Extensions/VK_EXT_texture_compression_astc_hdr.hs
+++ b/src/Vulkan/Extensions/VK_EXT_texture_compression_astc_hdr.hs
@@ -18,9 +18,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -50,7 +50,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT
   { -- | @textureCompressionASTC_HDR@ indicates whether all of the ASTC HDR
diff --git a/src/Vulkan/Extensions/VK_EXT_tooling_info.hs b/src/Vulkan/Extensions/VK_EXT_tooling_info.hs
--- a/src/Vulkan/Extensions/VK_EXT_tooling_info.hs
+++ b/src/Vulkan/Extensions/VK_EXT_tooling_info.hs
@@ -66,7 +66,7 @@
 import Vulkan.CStruct.Utils (lowerArrayPtr)
 import Vulkan.CStruct.Utils (pokeFixedLengthNullTerminatedByteString)
 import Vulkan.NamedType ((:::))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceToolPropertiesEXT))
diff --git a/src/Vulkan/Extensions/VK_EXT_transform_feedback.hs b/src/Vulkan/Extensions/VK_EXT_transform_feedback.hs
--- a/src/Vulkan/Extensions/VK_EXT_transform_feedback.hs
+++ b/src/Vulkan/Extensions/VK_EXT_transform_feedback.hs
@@ -57,10 +57,10 @@
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.NamedType ((:::))
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Handles (Buffer)
 import Vulkan.Core10.Handles (Buffer(..))
 import Vulkan.Core10.Handles (CommandBuffer)
@@ -72,8 +72,8 @@
 import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawIndirectByteCountEXT))
 import Vulkan.Dynamic (DeviceCmds(pVkCmdEndQueryIndexedEXT))
 import Vulkan.Dynamic (DeviceCmds(pVkCmdEndTransformFeedbackEXT))
-import Vulkan.Core10.BaseType (DeviceSize)
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.QueryControlFlagBits (QueryControlFlagBits(..))
@@ -156,7 +156,7 @@
 --     valid 'Vulkan.Core10.Handles.Buffer' handles
 --
 -- -   @pOffsets@ /must/ be a valid pointer to an array of @bindingCount@
---     'Vulkan.Core10.BaseType.DeviceSize' values
+--     'Vulkan.Core10.FundamentalTypes.DeviceSize' values
 --
 -- -   @commandBuffer@ /must/ be in the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>
@@ -191,7 +191,7 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.BaseType.DeviceSize'
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
 cmdBindTransformFeedbackBuffersEXT :: forall io
                                     . (MonadIO io)
                                    => -- | @commandBuffer@ is the command buffer into which the command is
@@ -296,8 +296,8 @@
 --
 -- -   If @counterBufferCount@ is not @0@, and @pCounterBufferOffsets@ is
 --     not @NULL@, @pCounterBufferOffsets@ /must/ be a valid pointer to an
---     array of @counterBufferCount@ 'Vulkan.Core10.BaseType.DeviceSize'
---     values
+--     array of @counterBufferCount@
+--     'Vulkan.Core10.FundamentalTypes.DeviceSize' values
 --
 -- -   @commandBuffer@ /must/ be in the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>
@@ -333,7 +333,7 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.BaseType.DeviceSize'
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
 cmdBeginTransformFeedbackEXT :: forall io
                               . (MonadIO io)
                              => -- | @commandBuffer@ is the command buffer into which the command is
@@ -443,8 +443,8 @@
 --
 -- -   If @counterBufferCount@ is not @0@, and @pCounterBufferOffsets@ is
 --     not @NULL@, @pCounterBufferOffsets@ /must/ be a valid pointer to an
---     array of @counterBufferCount@ 'Vulkan.Core10.BaseType.DeviceSize'
---     values
+--     array of @counterBufferCount@
+--     'Vulkan.Core10.FundamentalTypes.DeviceSize' values
 --
 -- -   @commandBuffer@ /must/ be in the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>
@@ -480,7 +480,7 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.BaseType.DeviceSize'
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
 cmdEndTransformFeedbackEXT :: forall io
                             . (MonadIO io)
                            => -- | @commandBuffer@ is the command buffer into which the command is
@@ -1020,9 +1020,9 @@
 --
 -- -   If the bound graphics pipeline was created with
 --     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
---     set to 'Vulkan.Core10.BaseType.TRUE' and the current subpass has a
---     depth\/stencil attachment, then that attachment /must/ have been
---     created with the
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE' and the current subpass
+--     has a depth\/stencil attachment, then that attachment /must/ have
+--     been created with the
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
 --     bit set
 --
@@ -1098,7 +1098,7 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.BaseType.DeviceSize'
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
 cmdDrawIndirectByteCountEXT :: forall io
                              . (MonadIO io)
                             => -- | @commandBuffer@ is the command buffer into which the command is
@@ -1155,7 +1155,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceTransformFeedbackFeaturesEXT = PhysicalDeviceTransformFeedbackFeaturesEXT
   { -- | @transformFeedback@ indicates whether the implementation supports
@@ -1227,7 +1227,8 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32', 'Vulkan.Core10.BaseType.DeviceSize',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceTransformFeedbackPropertiesEXT = PhysicalDeviceTransformFeedbackPropertiesEXT
   { -- | @maxTransformFeedbackStreams@ is the maximum number of vertex streams
@@ -1379,7 +1380,7 @@
     --
     -- @rasterizationStream@ /must/ be zero if
     -- 'PhysicalDeviceTransformFeedbackPropertiesEXT'::@transformFeedbackRasterizationStreamSelect@
-    -- is 'Vulkan.Core10.BaseType.FALSE'
+    -- is 'Vulkan.Core10.FundamentalTypes.FALSE'
     rasterizationStream :: Word32
   }
   deriving (Typeable, Eq)
diff --git a/src/Vulkan/Extensions/VK_EXT_validation_cache.hs b/src/Vulkan/Extensions/VK_EXT_validation_cache.hs
--- a/src/Vulkan/Extensions/VK_EXT_validation_cache.hs
+++ b/src/Vulkan/Extensions/VK_EXT_validation_cache.hs
@@ -79,7 +79,7 @@
 import Vulkan.Dynamic (DeviceCmds(pVkGetValidationCacheDataEXT))
 import Vulkan.Dynamic (DeviceCmds(pVkMergeValidationCachesEXT))
 import Vulkan.Core10.Handles (Device_T)
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.Result (Result)
diff --git a/src/Vulkan/Extensions/VK_EXT_vertex_attribute_divisor.hs b/src/Vulkan/Extensions/VK_EXT_vertex_attribute_divisor.hs
--- a/src/Vulkan/Extensions/VK_EXT_vertex_attribute_divisor.hs
+++ b/src/Vulkan/Extensions/VK_EXT_vertex_attribute_divisor.hs
@@ -30,9 +30,9 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
 import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -265,7 +265,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceVertexAttributeDivisorFeaturesEXT = PhysicalDeviceVertexAttributeDivisorFeaturesEXT
   { -- | @vertexAttributeInstanceRateDivisor@ specifies whether vertex attribute
diff --git a/src/Vulkan/Extensions/VK_EXT_ycbcr_image_arrays.hs b/src/Vulkan/Extensions/VK_EXT_ycbcr_image_arrays.hs
--- a/src/Vulkan/Extensions/VK_EXT_ycbcr_image_arrays.hs
+++ b/src/Vulkan/Extensions/VK_EXT_ycbcr_image_arrays.hs
@@ -18,9 +18,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -51,7 +51,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceYcbcrImageArraysFeaturesEXT = PhysicalDeviceYcbcrImageArraysFeaturesEXT
   { -- | @ycbcrImageArrays@ indicates that the implementation supports creating
diff --git a/src/Vulkan/Extensions/VK_FUCHSIA_imagepipe_surface.hs b/src/Vulkan/Extensions/VK_FUCHSIA_imagepipe_surface.hs
--- a/src/Vulkan/Extensions/VK_FUCHSIA_imagepipe_surface.hs
+++ b/src/Vulkan/Extensions/VK_FUCHSIA_imagepipe_surface.hs
@@ -6,8 +6,8 @@
                                                        , pattern FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION
                                                        , FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME
                                                        , pattern FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME
-                                                       , SurfaceKHR(..)
                                                        , Zx_handle_t
+                                                       , SurfaceKHR(..)
                                                        ) where
 
 import Control.Exception.Base (bracket)
@@ -46,12 +46,13 @@
 import Foreign.Ptr (FunPtr)
 import Foreign.Ptr (Ptr)
 import GHC.Read (Read(readPrec))
+import Data.Word (Word32)
 import Text.Read.Lex (Lexeme(Ident))
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
 import Vulkan.NamedType ((:::))
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Handles (Instance)
@@ -68,11 +69,9 @@
 import Vulkan.Exception (VulkanException(..))
 import Vulkan.Zero (Zero)
 import Vulkan.Zero (Zero(..))
-import Vulkan.Extensions.WSITypes (Zx_handle_t)
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
 import Vulkan.Extensions.Handles (SurfaceKHR(..))
-import Vulkan.Extensions.WSITypes (Zx_handle_t)
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -205,7 +204,16 @@
            zero
 
 
--- No documentation found for TopLevel "VkImagePipeSurfaceCreateFlagsFUCHSIA"
+-- | VkImagePipeSurfaceCreateFlagsFUCHSIA - Reserved for future use
+--
+-- = Description
+--
+-- 'ImagePipeSurfaceCreateFlagsFUCHSIA' is a bitmask type for setting a
+-- mask, but is currently reserved for future use.
+--
+-- = See Also
+--
+-- 'ImagePipeSurfaceCreateInfoFUCHSIA'
 newtype ImagePipeSurfaceCreateFlagsFUCHSIA = ImagePipeSurfaceCreateFlagsFUCHSIA Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits)
 
@@ -236,4 +244,7 @@
 -- No documentation found for TopLevel "VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME"
 pattern FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
 pattern FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME = "VK_FUCHSIA_imagepipe_surface"
+
+
+type Zx_handle_t = Word32
 
diff --git a/src/Vulkan/Extensions/VK_GGP_frame_token.hs b/src/Vulkan/Extensions/VK_GGP_frame_token.hs
--- a/src/Vulkan/Extensions/VK_GGP_frame_token.hs
+++ b/src/Vulkan/Extensions/VK_GGP_frame_token.hs
@@ -18,16 +18,15 @@
 import qualified Foreign.Storable (Storable(..))
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
+import Data.Word (Word32)
 import Data.Kind (Type)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.Extensions.WSITypes (GgpFrameToken)
 import Vulkan.Core10.Enums.StructureType (StructureType)
 import Vulkan.CStruct (ToCStruct)
 import Vulkan.CStruct (ToCStruct(..))
 import Vulkan.Zero (Zero(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP))
-import Vulkan.Extensions.WSITypes (GgpFrameToken)
 -- | VkPresentFrameTokenGGP - The Google Games Platform frame token
 --
 -- == Valid Usage (Implicit)
@@ -38,8 +37,7 @@
 data PresentFrameTokenGGP = PresentFrameTokenGGP
   { -- | @frameToken@ is the Google Games Platform frame token.
     --
-    -- @frameToken@ /must/ be a valid
-    -- 'Vulkan.Extensions.WSITypes.GgpFrameToken'
+    -- @frameToken@ /must/ be a valid 'GgpFrameToken'
     frameToken :: GgpFrameToken }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
@@ -91,4 +89,7 @@
 -- No documentation found for TopLevel "VK_GGP_FRAME_TOKEN_EXTENSION_NAME"
 pattern GGP_FRAME_TOKEN_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
 pattern GGP_FRAME_TOKEN_EXTENSION_NAME = "VK_GGP_frame_token"
+
+
+type GgpFrameToken = Word32
 
diff --git a/src/Vulkan/Extensions/VK_GGP_stream_descriptor_surface.hs b/src/Vulkan/Extensions/VK_GGP_stream_descriptor_surface.hs
--- a/src/Vulkan/Extensions/VK_GGP_stream_descriptor_surface.hs
+++ b/src/Vulkan/Extensions/VK_GGP_stream_descriptor_surface.hs
@@ -6,8 +6,8 @@
                                                            , pattern GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION
                                                            , GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME
                                                            , pattern GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME
-                                                           , SurfaceKHR(..)
                                                            , GgpStreamDescriptor
+                                                           , SurfaceKHR(..)
                                                            ) where
 
 import Control.Exception.Base (bracket)
@@ -46,15 +46,15 @@
 import Foreign.Ptr (FunPtr)
 import Foreign.Ptr (Ptr)
 import GHC.Read (Read(readPrec))
+import Data.Word (Word32)
 import Text.Read.Lex (Lexeme(Ident))
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
 import Vulkan.NamedType ((:::))
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.Extensions.WSITypes (GgpStreamDescriptor)
 import Vulkan.Core10.Handles (Instance)
 import Vulkan.Core10.Handles (Instance(..))
 import Vulkan.Dynamic (InstanceCmds(pVkCreateStreamDescriptorSurfaceGGP))
@@ -71,7 +71,6 @@
 import Vulkan.Zero (Zero(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-import Vulkan.Extensions.WSITypes (GgpStreamDescriptor)
 import Vulkan.Extensions.Handles (SurfaceKHR(..))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
@@ -162,11 +161,10 @@
     --
     -- @flags@ /must/ be @0@
     flags :: StreamDescriptorSurfaceCreateFlagsGGP
-  , -- | @streamDescriptor@ is a 'Vulkan.Extensions.WSITypes.GgpStreamDescriptor'
-    -- referring to the GGP stream descriptor to associate with the surface.
+  , -- | @streamDescriptor@ is a 'GgpStreamDescriptor' referring to the GGP
+    -- stream descriptor to associate with the surface.
     --
-    -- @streamDescriptor@ /must/ be a valid
-    -- 'Vulkan.Extensions.WSITypes.GgpStreamDescriptor'
+    -- @streamDescriptor@ /must/ be a valid 'GgpStreamDescriptor'
     streamDescriptor :: GgpStreamDescriptor
   }
   deriving (Typeable, Eq)
@@ -210,7 +208,16 @@
            zero
 
 
--- No documentation found for TopLevel "VkStreamDescriptorSurfaceCreateFlagsGGP"
+-- | VkStreamDescriptorSurfaceCreateFlagsGGP - Reserved for future use
+--
+-- = Description
+--
+-- 'StreamDescriptorSurfaceCreateFlagsGGP' is a bitmask type for setting a
+-- mask, but is currently reserved for future use.
+--
+-- = See Also
+--
+-- 'StreamDescriptorSurfaceCreateInfoGGP'
 newtype StreamDescriptorSurfaceCreateFlagsGGP = StreamDescriptorSurfaceCreateFlagsGGP Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits)
 
@@ -241,4 +248,7 @@
 -- No documentation found for TopLevel "VK_GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME"
 pattern GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
 pattern GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME = "VK_GGP_stream_descriptor_surface"
+
+
+type GgpStreamDescriptor = Word32
 
diff --git a/src/Vulkan/Extensions/VK_INTEL_performance_query.hs b/src/Vulkan/Extensions/VK_INTEL_performance_query.hs
--- a/src/Vulkan/Extensions/VK_INTEL_performance_query.hs
+++ b/src/Vulkan/Extensions/VK_INTEL_performance_query.hs
@@ -96,10 +96,10 @@
 import Data.ByteString (ByteString)
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.NamedType ((:::))
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Handles (CommandBuffer)
 import Vulkan.Core10.Handles (CommandBuffer(..))
 import Vulkan.Core10.Handles (CommandBuffer_T)
@@ -248,6 +248,8 @@
 --
 -- == Host Synchronization
 --
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
 -- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
 --     @commandBuffer@ was allocated from /must/ be externally synchronized
 --
@@ -321,6 +323,8 @@
 --
 -- == Host Synchronization
 --
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
 -- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
 --     @commandBuffer@ was allocated from /must/ be externally synchronized
 --
@@ -401,6 +405,8 @@
 --
 -- == Host Synchronization
 --
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
 -- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
 --     @commandBuffer@ was allocated from /must/ be externally synchronized
 --
@@ -678,6 +684,12 @@
 --
 -- == Valid Usage (Implicit)
 --
+-- -   @type@ /must/ be a valid 'PerformanceValueTypeINTEL' value
+--
+-- -   If @type@ is 'PERFORMANCE_VALUE_TYPE_STRING_INTEL', the
+--     @valueString@ member of @data@ /must/ be a null-terminated UTF-8
+--     string
+--
 -- = See Also
 --
 -- 'PerformanceValueDataINTEL', 'PerformanceValueTypeINTEL',
@@ -685,13 +697,9 @@
 data PerformanceValueINTEL = PerformanceValueINTEL
   { -- | @type@ is a 'PerformanceValueTypeINTEL' value specifying the type of the
     -- returned data.
-    --
-    -- @type@ /must/ be a valid 'PerformanceValueTypeINTEL' value
     type' :: PerformanceValueTypeINTEL
   , -- | @data@ is a 'PerformanceValueDataINTEL' union specifying the value of
     -- the returned data.
-    --
-    -- @data@ /must/ be a valid 'PerformanceValueDataINTEL' union
     data' :: PerformanceValueDataINTEL
   }
   deriving (Typeable)
@@ -957,7 +965,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32', 'PerformanceOverrideTypeINTEL',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32', 'PerformanceOverrideTypeINTEL',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'cmdSetPerformanceOverrideINTEL'
 data PerformanceOverrideInfoINTEL = PerformanceOverrideInfoINTEL
diff --git a/src/Vulkan/Extensions/VK_INTEL_shader_integer_functions2.hs b/src/Vulkan/Extensions/VK_INTEL_shader_integer_functions2.hs
--- a/src/Vulkan/Extensions/VK_INTEL_shader_integer_functions2.hs
+++ b/src/Vulkan/Extensions/VK_INTEL_shader_integer_functions2.hs
@@ -18,9 +18,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -51,7 +51,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL = PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL
   { -- | @shaderIntegerFunctions2@ indicates that the implementation supports the
diff --git a/src/Vulkan/Extensions/VK_KHR_android_surface.hs b/src/Vulkan/Extensions/VK_KHR_android_surface.hs
--- a/src/Vulkan/Extensions/VK_KHR_android_surface.hs
+++ b/src/Vulkan/Extensions/VK_KHR_android_surface.hs
@@ -6,8 +6,8 @@
                                                  , pattern KHR_ANDROID_SURFACE_SPEC_VERSION
                                                  , KHR_ANDROID_SURFACE_EXTENSION_NAME
                                                  , pattern KHR_ANDROID_SURFACE_EXTENSION_NAME
-                                                 , SurfaceKHR(..)
                                                  , ANativeWindow
+                                                 , SurfaceKHR(..)
                                                  ) where
 
 import Control.Exception.Base (bracket)
@@ -50,9 +50,8 @@
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
 import Vulkan.NamedType ((:::))
-import Vulkan.Extensions.WSITypes (ANativeWindow)
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Handles (Instance)
@@ -71,7 +70,6 @@
 import Vulkan.Zero (Zero(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-import Vulkan.Extensions.WSITypes (ANativeWindow)
 import Vulkan.Extensions.Handles (SurfaceKHR(..))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
@@ -87,11 +85,9 @@
 -- = Description
 --
 -- During the lifetime of a surface created using a particular
--- 'Vulkan.Extensions.WSITypes.ANativeWindow' handle any attempts to create
--- another surface for the same 'Vulkan.Extensions.WSITypes.ANativeWindow'
--- and any attempts to connect to the same
--- 'Vulkan.Extensions.WSITypes.ANativeWindow' through other platform
--- mechanisms will fail.
+-- 'ANativeWindow' handle any attempts to create another surface for the
+-- same 'ANativeWindow' and any attempts to connect to the same
+-- 'ANativeWindow' through other platform mechanisms will fail.
 --
 -- Note
 --
@@ -101,7 +97,7 @@
 -- @EGLSurface@ simultaneously.
 --
 -- If successful, 'createAndroidSurfaceKHR' increments the
--- 'Vulkan.Extensions.WSITypes.ANativeWindow'’s reference count, and
+-- 'ANativeWindow'’s reference count, and
 -- 'Vulkan.Extensions.VK_KHR_surface.destroySurfaceKHR' will decrement it.
 --
 -- On Android, when a swapchain’s @imageExtent@ does not match the
@@ -187,11 +183,10 @@
     --
     -- @flags@ /must/ be @0@
     flags :: AndroidSurfaceCreateFlagsKHR
-  , -- | @window@ is a pointer to the 'Vulkan.Extensions.WSITypes.ANativeWindow'
-    -- to associate the surface with.
+  , -- | @window@ is a pointer to the 'ANativeWindow' to associate the surface
+    -- with.
     --
-    -- @window@ /must/ point to a valid Android
-    -- 'Vulkan.Extensions.WSITypes.ANativeWindow'
+    -- @window@ /must/ point to a valid Android 'ANativeWindow'
     window :: Ptr ANativeWindow
   }
   deriving (Typeable, Eq)
@@ -235,7 +230,16 @@
            zero
 
 
--- No documentation found for TopLevel "VkAndroidSurfaceCreateFlagsKHR"
+-- | VkAndroidSurfaceCreateFlagsKHR - Reserved for future use
+--
+-- = Description
+--
+-- 'AndroidSurfaceCreateFlagsKHR' is a bitmask type for setting a mask, but
+-- is currently reserved for future use.
+--
+-- = See Also
+--
+-- 'AndroidSurfaceCreateInfoKHR'
 newtype AndroidSurfaceCreateFlagsKHR = AndroidSurfaceCreateFlagsKHR Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits)
 
@@ -266,4 +270,7 @@
 -- No documentation found for TopLevel "VK_KHR_ANDROID_SURFACE_EXTENSION_NAME"
 pattern KHR_ANDROID_SURFACE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
 pattern KHR_ANDROID_SURFACE_EXTENSION_NAME = "VK_KHR_android_surface"
+
+
+data ANativeWindow
 
diff --git a/src/Vulkan/Extensions/VK_KHR_deferred_host_operations.hs b/src/Vulkan/Extensions/VK_KHR_deferred_host_operations.hs
--- a/src/Vulkan/Extensions/VK_KHR_deferred_host_operations.hs
+++ b/src/Vulkan/Extensions/VK_KHR_deferred_host_operations.hs
@@ -222,20 +222,36 @@
 -- intended to be used to better schedule work onto available threads.
 -- Applications /can/ join any number of threads to the deferred operation
 -- and expect it to eventually complete, though excessive joins /may/
--- return 'Vulkan.Core10.Enums.Result.THREAD_IDLE_KHR' immediately,
+-- return 'Vulkan.Core10.Enums.Result.THREAD_DONE_KHR' immediately,
 -- performing no useful work.
 --
--- If the deferred operation is currently joined to any threads, the value
--- returned by this command /may/ immediately be out of date.
+-- If @operation@ is complete, 'getDeferredOperationMaxConcurrencyKHR'
+-- returns zero.
 --
--- Implementations /must/ not return zero.
+-- If @operation@ is currently joined to any threads, the value returned by
+-- this command /may/ immediately be out of date.
 --
+-- If @operation@ is pending, implementations /must/ not return zero unless
+-- at least one thread is currently executing 'deferredOperationJoinKHR' on
+-- @operation@. If there are such threads, the implementation /should/
+-- return an estimate of the number of additional threads which it could
+-- profitably use.
+--
 -- Implementations /may/ return 232-1 to indicate that the maximum
 -- concurrency is unknown and cannot be easily derived. Implementations
 -- /may/ return values larger than the maximum concurrency available on the
 -- host CPU. In these situations, an application /should/ clamp the return
 -- value rather than oversubscribing the machine.
 --
+-- Note
+--
+-- The recommended usage pattern for applications is to query this value
+-- once, after deferral, and schedule no more than the specified number of
+-- threads to join the operation. Each time a joined thread receives
+-- 'Vulkan.Core10.Enums.Result.THREAD_IDLE_KHR', the application should
+-- schedule an additional join at some point in the future, but is not
+-- required to do so.
+--
 -- == Valid Usage (Implicit)
 --
 -- = See Also
@@ -279,11 +295,17 @@
 -- = Description
 --
 -- If the deferred operation is pending, 'getDeferredOperationResultKHR'
--- returns 'Vulkan.Core10.Enums.Result.NOT_READY'. Otherwise, it returns
--- the result of the deferred operation. This value /must/ be one of the
--- 'Vulkan.Core10.Enums.Result.Result' values which could have been
--- returned by the original command if the operation had not been deferred.
+-- returns 'Vulkan.Core10.Enums.Result.NOT_READY'.
 --
+-- If no command has been deferred on @operation@,
+-- 'getDeferredOperationResultKHR' returns
+-- 'Vulkan.Core10.Enums.Result.SUCCESS'.
+--
+-- Otherwise, it returns the result of the previous deferred operation.
+-- This value /must/ be one of the 'Vulkan.Core10.Enums.Result.Result'
+-- values which could have been returned by the original command if the
+-- operation had not been deferred.
+--
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
@@ -540,11 +562,11 @@
            zero
 
 
-type KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 2
+type KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 3
 
 -- No documentation found for TopLevel "VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION"
 pattern KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION :: forall a . Integral a => a
-pattern KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 2
+pattern KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 3
 
 
 type KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations"
diff --git a/src/Vulkan/Extensions/VK_KHR_display.hs b/src/Vulkan/Extensions/VK_KHR_display.hs
--- a/src/Vulkan/Extensions/VK_KHR_display.hs
+++ b/src/Vulkan/Extensions/VK_KHR_display.hs
@@ -82,17 +82,17 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
 import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.NamedType ((:::))
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Extensions.Handles (DisplayKHR)
 import Vulkan.Extensions.Handles (DisplayKHR(..))
 import Vulkan.Extensions.Handles (DisplayModeKHR)
 import Vulkan.Extensions.Handles (DisplayModeKHR(..))
-import Vulkan.Core10.SharedTypes (Extent2D)
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Extent2D)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Handles (Instance)
@@ -105,7 +105,7 @@
 import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceDisplayPlanePropertiesKHR))
 import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceDisplayPropertiesKHR))
 import Vulkan.Core10.Handles (Instance_T)
-import Vulkan.Core10.SharedTypes (Offset2D)
+import Vulkan.Core10.FundamentalTypes (Offset2D)
 import Vulkan.Core10.Handles (PhysicalDevice)
 import Vulkan.Core10.Handles (PhysicalDevice(..))
 import Vulkan.Core10.Handles (PhysicalDevice_T)
@@ -695,9 +695,10 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32', 'Vulkan.Extensions.Handles.DisplayKHR',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Extensions.Handles.DisplayKHR',
 -- 'Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayProperties2KHR',
--- 'Vulkan.Core10.SharedTypes.Extent2D',
+-- 'Vulkan.Core10.FundamentalTypes.Extent2D',
 -- 'Vulkan.Extensions.VK_KHR_surface.SurfaceTransformFlagsKHR',
 -- 'getPhysicalDeviceDisplayPropertiesKHR'
 data DisplayPropertiesKHR = DisplayPropertiesKHR
@@ -721,9 +722,9 @@
     -- describing which transforms are supported by this display.
     supportedTransforms :: SurfaceTransformFlagsKHR
   , -- | @planeReorderPossible@ tells whether the planes on this display /can/
-    -- have their z order changed. If this is 'Vulkan.Core10.BaseType.TRUE',
-    -- the application /can/ re-arrange the planes on this display in any order
-    -- relative to each other.
+    -- have their z order changed. If this is
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE', the application /can/ re-arrange
+    -- the planes on this display in any order relative to each other.
     planeReorderPossible :: Bool
   , -- | @persistentContent@ tells whether the display supports
     -- self-refresh\/internal buffering. If this is true, the application /can/
@@ -860,7 +861,7 @@
 -- = See Also
 --
 -- 'DisplayModeCreateInfoKHR', 'DisplayModePropertiesKHR',
--- 'Vulkan.Core10.SharedTypes.Extent2D'
+-- 'Vulkan.Core10.FundamentalTypes.Extent2D'
 data DisplayModeParametersKHR = DisplayModeParametersKHR
   { -- | @visibleRegion@ is the 2D extents of the visible region.
     visibleRegion :: Extent2D
@@ -1046,8 +1047,9 @@
 --
 -- 'DisplayPlaneAlphaFlagsKHR',
 -- 'Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayPlaneCapabilities2KHR',
--- 'Vulkan.Core10.SharedTypes.Extent2D',
--- 'Vulkan.Core10.SharedTypes.Offset2D', 'getDisplayPlaneCapabilitiesKHR'
+-- 'Vulkan.Core10.FundamentalTypes.Extent2D',
+-- 'Vulkan.Core10.FundamentalTypes.Offset2D',
+-- 'getDisplayPlaneCapabilitiesKHR'
 data DisplayPlaneCapabilitiesKHR = DisplayPlaneCapabilitiesKHR
   { -- | @supportedAlpha@ is a bitmask of 'DisplayPlaneAlphaFlagBitsKHR'
     -- describing the supported alpha blending modes.
@@ -1160,8 +1162,8 @@
 -- -   If the @planeReorderPossible@ member of the 'DisplayPropertiesKHR'
 --     structure returned by 'getPhysicalDeviceDisplayPropertiesKHR' for
 --     the display corresponding to @displayMode@ is
---     'Vulkan.Core10.BaseType.TRUE' then @planeStackIndex@ /must/ be less
---     than the number of display planes supported by the device as
+--     'Vulkan.Core10.FundamentalTypes.TRUE' then @planeStackIndex@ /must/
+--     be less than the number of display planes supported by the device as
 --     determined by calling 'getPhysicalDeviceDisplayPlanePropertiesKHR';
 --     otherwise @planeStackIndex@ /must/ equal the @currentStackIndex@
 --     member of 'DisplayPlanePropertiesKHR' returned by
@@ -1201,7 +1203,7 @@
 --
 -- 'Vulkan.Extensions.Handles.DisplayModeKHR',
 -- 'DisplayPlaneAlphaFlagBitsKHR', 'DisplaySurfaceCreateFlagsKHR',
--- 'Vulkan.Core10.SharedTypes.Extent2D',
+-- 'Vulkan.Core10.FundamentalTypes.Extent2D',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'Vulkan.Extensions.VK_KHR_surface.SurfaceTransformFlagBitsKHR',
 -- 'createDisplayPlaneSurfaceKHR'
diff --git a/src/Vulkan/Extensions/VK_KHR_display_swapchain.hs b/src/Vulkan/Extensions/VK_KHR_display_swapchain.hs
--- a/src/Vulkan/Extensions/VK_KHR_display_swapchain.hs
+++ b/src/Vulkan/Extensions/VK_KHR_display_swapchain.hs
@@ -49,20 +49,20 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
 import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.CStruct.Extends (forgetExtensions)
 import Vulkan.CStruct.Extends (pokeSomeCStruct)
 import Vulkan.NamedType ((:::))
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Handles (Device)
 import Vulkan.Core10.Handles (Device(..))
 import Vulkan.Dynamic (DeviceCmds(pVkCreateSharedSwapchainsKHR))
 import Vulkan.Core10.Handles (Device_T)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.Core10.CommandBufferBuilding (Rect2D)
+import Vulkan.Core10.FundamentalTypes (Rect2D)
 import Vulkan.Core10.Enums.Result (Result)
 import Vulkan.Core10.Enums.Result (Result(..))
 import Vulkan.CStruct.Extends (SomeStruct)
@@ -221,7 +221,7 @@
 --     returned by
 --     'Vulkan.Extensions.VK_KHR_display.getPhysicalDeviceDisplayPropertiesKHR'
 --     for the display the present operation targets then @persistent@
---     /must/ be 'Vulkan.Core10.BaseType.FALSE'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- == Valid Usage (Implicit)
 --
@@ -230,8 +230,8 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
--- 'Vulkan.Core10.CommandBufferBuilding.Rect2D',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Rect2D',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data DisplayPresentInfoKHR = DisplayPresentInfoKHR
   { -- | @srcRect@ is a rectangular region of pixels to present. It /must/ be a
@@ -250,12 +250,12 @@
     -- rectangle are outside of the display’s visible region, pixels mapping
     -- only to those portions of the rectangle will be discarded.
     dstRect :: Rect2D
-  , -- | @persistent@: If this is 'Vulkan.Core10.BaseType.TRUE', the display
-    -- engine will enable buffered mode on displays that support it. This
-    -- allows the display engine to stop sending content to the display until a
-    -- new image is presented. The display will instead maintain a copy of the
-    -- last presented image. This allows less power to be used, but /may/
-    -- increase presentation latency. If 'DisplayPresentInfoKHR' is not
+  , -- | @persistent@: If this is 'Vulkan.Core10.FundamentalTypes.TRUE', the
+    -- display engine will enable buffered mode on displays that support it.
+    -- This allows the display engine to stop sending content to the display
+    -- until a new image is presented. The display will instead maintain a copy
+    -- of the last presented image. This allows less power to be used, but
+    -- /may/ increase presentation latency. If 'DisplayPresentInfoKHR' is not
     -- specified, persistent mode will not be used.
     persistent :: Bool
   }
diff --git a/src/Vulkan/Extensions/VK_KHR_external_fence_win32.hs b/src/Vulkan/Extensions/VK_KHR_external_fence_win32.hs
--- a/src/Vulkan/Extensions/VK_KHR_external_fence_win32.hs
+++ b/src/Vulkan/Extensions/VK_KHR_external_fence_win32.hs
@@ -41,7 +41,7 @@
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
-import Vulkan.Extensions.WSITypes (DWORD)
+import Vulkan.Extensions.VK_NV_external_memory_win32 (DWORD)
 import Vulkan.Core10.Handles (Device)
 import Vulkan.Core10.Handles (Device(..))
 import Vulkan.Dynamic (DeviceCmds(pVkGetFenceWin32HandleKHR))
@@ -52,11 +52,11 @@
 import Vulkan.Core11.Enums.FenceImportFlagBits (FenceImportFlags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.Extensions.WSITypes (HANDLE)
-import Vulkan.Extensions.WSITypes (LPCWSTR)
+import Vulkan.Extensions.VK_NV_external_memory_win32 (HANDLE)
+import Vulkan.Extensions.VK_KHR_external_memory_win32 (LPCWSTR)
 import Vulkan.Core10.Enums.Result (Result)
 import Vulkan.Core10.Enums.Result (Result(..))
-import Vulkan.Extensions.WSITypes (SECURITY_ATTRIBUTES)
+import Vulkan.Extensions.VK_NV_external_memory_win32 (SECURITY_ATTRIBUTES)
 import Vulkan.Core10.Enums.StructureType (StructureType)
 import Vulkan.CStruct (ToCStruct)
 import Vulkan.CStruct (ToCStruct(..))
@@ -66,10 +66,10 @@
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-import Vulkan.Extensions.WSITypes (DWORD)
-import Vulkan.Extensions.WSITypes (HANDLE)
-import Vulkan.Extensions.WSITypes (LPCWSTR)
-import Vulkan.Extensions.WSITypes (SECURITY_ATTRIBUTES)
+import Vulkan.Extensions.VK_NV_external_memory_win32 (DWORD)
+import Vulkan.Extensions.VK_NV_external_memory_win32 (HANDLE)
+import Vulkan.Extensions.VK_KHR_external_memory_win32 (LPCWSTR)
+import Vulkan.Extensions.VK_NV_external_memory_win32 (SECURITY_ATTRIBUTES)
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -370,7 +370,8 @@
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR'
 --
 -- -   If @pAttributes@ is not @NULL@, @pAttributes@ /must/ be a valid
---     pointer to a valid 'Vulkan.Extensions.WSITypes.SECURITY_ATTRIBUTES'
+--     pointer to a valid
+--     'Vulkan.Extensions.VK_NV_external_memory_win32.SECURITY_ATTRIBUTES'
 --     value
 --
 -- = See Also
@@ -378,11 +379,11 @@
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data ExportFenceWin32HandleInfoKHR = ExportFenceWin32HandleInfoKHR
   { -- | @pAttributes@ is a pointer to a Windows
-    -- 'Vulkan.Extensions.WSITypes.SECURITY_ATTRIBUTES' structure specifying
-    -- security attributes of the handle.
+    -- 'Vulkan.Extensions.VK_NV_external_memory_win32.SECURITY_ATTRIBUTES'
+    -- structure specifying security attributes of the handle.
     attributes :: Ptr SECURITY_ATTRIBUTES
-  , -- | @dwAccess@ is a 'Vulkan.Extensions.WSITypes.DWORD' specifying access
-    -- rights of the handle.
+  , -- | @dwAccess@ is a 'Vulkan.Extensions.VK_NV_external_memory_win32.DWORD'
+    -- specifying access rights of the handle.
     dwAccess :: DWORD
   , -- | @name@ is a null-terminated UTF-16 string to associate with the
     -- underlying synchronization primitive referenced by NT handles exported
diff --git a/src/Vulkan/Extensions/VK_KHR_external_memory_win32.hs b/src/Vulkan/Extensions/VK_KHR_external_memory_win32.hs
--- a/src/Vulkan/Extensions/VK_KHR_external_memory_win32.hs
+++ b/src/Vulkan/Extensions/VK_KHR_external_memory_win32.hs
@@ -9,9 +9,9 @@
                                                        , pattern KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION
                                                        , KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME
                                                        , pattern KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME
+                                                       , LPCWSTR
                                                        , HANDLE
                                                        , DWORD
-                                                       , LPCWSTR
                                                        , SECURITY_ATTRIBUTES
                                                        ) where
 
@@ -31,6 +31,7 @@
 import Control.Monad.IO.Class (MonadIO)
 import Data.String (IsString)
 import Data.Typeable (Typeable)
+import Foreign.C.Types (CWchar)
 import Foreign.Storable (Storable)
 import Foreign.Storable (Storable(peek))
 import Foreign.Storable (Storable(poke))
@@ -43,7 +44,7 @@
 import Data.Word (Word32)
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
-import Vulkan.Extensions.WSITypes (DWORD)
+import Vulkan.Extensions.VK_NV_external_memory_win32 (DWORD)
 import Vulkan.Core10.Handles (Device)
 import Vulkan.Core10.Handles (Device(..))
 import Vulkan.Dynamic (DeviceCmds(pVkGetMemoryWin32HandleKHR))
@@ -54,11 +55,10 @@
 import Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits(..))
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.Extensions.WSITypes (HANDLE)
-import Vulkan.Extensions.WSITypes (LPCWSTR)
+import Vulkan.Extensions.VK_NV_external_memory_win32 (HANDLE)
 import Vulkan.Core10.Enums.Result (Result)
 import Vulkan.Core10.Enums.Result (Result(..))
-import Vulkan.Extensions.WSITypes (SECURITY_ATTRIBUTES)
+import Vulkan.Extensions.VK_NV_external_memory_win32 (SECURITY_ATTRIBUTES)
 import Vulkan.Core10.Enums.StructureType (StructureType)
 import Vulkan.CStruct (ToCStruct)
 import Vulkan.CStruct (ToCStruct(..))
@@ -69,10 +69,9 @@
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-import Vulkan.Extensions.WSITypes (DWORD)
-import Vulkan.Extensions.WSITypes (HANDLE)
-import Vulkan.Extensions.WSITypes (LPCWSTR)
-import Vulkan.Extensions.WSITypes (SECURITY_ATTRIBUTES)
+import Vulkan.Extensions.VK_NV_external_memory_win32 (DWORD)
+import Vulkan.Extensions.VK_NV_external_memory_win32 (HANDLE)
+import Vulkan.Extensions.VK_NV_external_memory_win32 (SECURITY_ATTRIBUTES)
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -368,7 +367,8 @@
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR'
 --
 -- -   If @pAttributes@ is not @NULL@, @pAttributes@ /must/ be a valid
---     pointer to a valid 'Vulkan.Extensions.WSITypes.SECURITY_ATTRIBUTES'
+--     pointer to a valid
+--     'Vulkan.Extensions.VK_NV_external_memory_win32.SECURITY_ATTRIBUTES'
 --     value
 --
 -- = See Also
@@ -376,11 +376,11 @@
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data ExportMemoryWin32HandleInfoKHR = ExportMemoryWin32HandleInfoKHR
   { -- | @pAttributes@ is a pointer to a Windows
-    -- 'Vulkan.Extensions.WSITypes.SECURITY_ATTRIBUTES' structure specifying
-    -- security attributes of the handle.
+    -- 'Vulkan.Extensions.VK_NV_external_memory_win32.SECURITY_ATTRIBUTES'
+    -- structure specifying security attributes of the handle.
     attributes :: Ptr SECURITY_ATTRIBUTES
-  , -- | @dwAccess@ is a 'Vulkan.Extensions.WSITypes.DWORD' specifying access
-    -- rights of the handle.
+  , -- | @dwAccess@ is a 'Vulkan.Extensions.VK_NV_external_memory_win32.DWORD'
+    -- specifying access rights of the handle.
     dwAccess :: DWORD
   , -- | @name@ is a null-terminated UTF-16 string to associate with the
     -- underlying resource referenced by NT handles exported from the created
@@ -587,4 +587,7 @@
 -- No documentation found for TopLevel "VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME"
 pattern KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
 pattern KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME = "VK_KHR_external_memory_win32"
+
+
+type LPCWSTR = Ptr CWchar
 
diff --git a/src/Vulkan/Extensions/VK_KHR_external_semaphore_win32.hs b/src/Vulkan/Extensions/VK_KHR_external_semaphore_win32.hs
--- a/src/Vulkan/Extensions/VK_KHR_external_semaphore_win32.hs
+++ b/src/Vulkan/Extensions/VK_KHR_external_semaphore_win32.hs
@@ -50,7 +50,7 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
 import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Extensions.WSITypes (DWORD)
+import Vulkan.Extensions.VK_NV_external_memory_win32 (DWORD)
 import Vulkan.Core10.Handles (Device)
 import Vulkan.Core10.Handles (Device(..))
 import Vulkan.Dynamic (DeviceCmds(pVkGetSemaphoreWin32HandleKHR))
@@ -59,11 +59,11 @@
 import Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits (ExternalSemaphoreHandleTypeFlagBits)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.Extensions.WSITypes (HANDLE)
-import Vulkan.Extensions.WSITypes (LPCWSTR)
+import Vulkan.Extensions.VK_NV_external_memory_win32 (HANDLE)
+import Vulkan.Extensions.VK_KHR_external_memory_win32 (LPCWSTR)
 import Vulkan.Core10.Enums.Result (Result)
 import Vulkan.Core10.Enums.Result (Result(..))
-import Vulkan.Extensions.WSITypes (SECURITY_ATTRIBUTES)
+import Vulkan.Extensions.VK_NV_external_memory_win32 (SECURITY_ATTRIBUTES)
 import Vulkan.Core10.Handles (Semaphore)
 import Vulkan.Core11.Enums.SemaphoreImportFlagBits (SemaphoreImportFlags)
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -76,10 +76,10 @@
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-import Vulkan.Extensions.WSITypes (DWORD)
-import Vulkan.Extensions.WSITypes (HANDLE)
-import Vulkan.Extensions.WSITypes (LPCWSTR)
-import Vulkan.Extensions.WSITypes (SECURITY_ATTRIBUTES)
+import Vulkan.Extensions.VK_NV_external_memory_win32 (DWORD)
+import Vulkan.Extensions.VK_NV_external_memory_win32 (HANDLE)
+import Vulkan.Extensions.VK_KHR_external_memory_win32 (LPCWSTR)
+import Vulkan.Extensions.VK_NV_external_memory_win32 (SECURITY_ATTRIBUTES)
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -427,7 +427,8 @@
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR'
 --
 -- -   If @pAttributes@ is not @NULL@, @pAttributes@ /must/ be a valid
---     pointer to a valid 'Vulkan.Extensions.WSITypes.SECURITY_ATTRIBUTES'
+--     pointer to a valid
+--     'Vulkan.Extensions.VK_NV_external_memory_win32.SECURITY_ATTRIBUTES'
 --     value
 --
 -- = See Also
@@ -435,11 +436,11 @@
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data ExportSemaphoreWin32HandleInfoKHR = ExportSemaphoreWin32HandleInfoKHR
   { -- | @pAttributes@ is a pointer to a Windows
-    -- 'Vulkan.Extensions.WSITypes.SECURITY_ATTRIBUTES' structure specifying
-    -- security attributes of the handle.
+    -- 'Vulkan.Extensions.VK_NV_external_memory_win32.SECURITY_ATTRIBUTES'
+    -- structure specifying security attributes of the handle.
     attributes :: Ptr SECURITY_ATTRIBUTES
-  , -- | @dwAccess@ is a 'Vulkan.Extensions.WSITypes.DWORD' specifying access
-    -- rights of the handle.
+  , -- | @dwAccess@ is a 'Vulkan.Extensions.VK_NV_external_memory_win32.DWORD'
+    -- specifying access rights of the handle.
     dwAccess :: DWORD
   , -- | @name@ is a null-terminated UTF-16 string to associate with the
     -- underlying synchronization primitive referenced by NT handles exported
diff --git a/src/Vulkan/Extensions/VK_KHR_get_memory_requirements2.hs b/src/Vulkan/Extensions/VK_KHR_get_memory_requirements2.hs
--- a/src/Vulkan/Extensions/VK_KHR_get_memory_requirements2.hs
+++ b/src/Vulkan/Extensions/VK_KHR_get_memory_requirements2.hs
@@ -10,6 +10,7 @@
                                                           , BufferMemoryRequirementsInfo2KHR
                                                           , ImageMemoryRequirementsInfo2KHR
                                                           , ImageSparseMemoryRequirementsInfo2KHR
+                                                          , MemoryRequirements2KHR
                                                           , SparseImageMemoryRequirements2KHR
                                                           , KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION
                                                           , pattern KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION
@@ -24,6 +25,7 @@
 import Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (BufferMemoryRequirementsInfo2)
 import Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (ImageMemoryRequirementsInfo2)
 import Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (ImageSparseMemoryRequirementsInfo2)
+import Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2)
 import Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (SparseImageMemoryRequirements2)
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2))
@@ -72,6 +74,10 @@
 
 -- No documentation found for TopLevel "VkImageSparseMemoryRequirementsInfo2KHR"
 type ImageSparseMemoryRequirementsInfo2KHR = ImageSparseMemoryRequirementsInfo2
+
+
+-- No documentation found for TopLevel "VkMemoryRequirements2KHR"
+type MemoryRequirements2KHR = MemoryRequirements2
 
 
 -- No documentation found for TopLevel "VkSparseImageMemoryRequirements2KHR"
diff --git a/src/Vulkan/Extensions/VK_KHR_get_memory_requirements2.hs-boot b/src/Vulkan/Extensions/VK_KHR_get_memory_requirements2.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_get_memory_requirements2.hs-boot
@@ -0,0 +1,8 @@
+{-# language CPP #-}
+module Vulkan.Extensions.VK_KHR_get_memory_requirements2  (MemoryRequirements2KHR) where
+
+
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2)
+-- No documentation found for TopLevel "VkMemoryRequirements2KHR"
+type MemoryRequirements2KHR = MemoryRequirements2
+
diff --git a/src/Vulkan/Extensions/VK_KHR_get_surface_capabilities2.hs b/src/Vulkan/Extensions/VK_KHR_get_surface_capabilities2.hs
--- a/src/Vulkan/Extensions/VK_KHR_get_surface_capabilities2.hs
+++ b/src/Vulkan/Extensions/VK_KHR_get_surface_capabilities2.hs
@@ -343,7 +343,7 @@
 -- 'getPhysicalDeviceSurfaceFormats2KHR',
 -- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.getPhysicalDeviceSurfacePresentModes2EXT'
 data PhysicalDeviceSurfaceInfo2KHR (es :: [Type]) = PhysicalDeviceSurfaceInfo2KHR
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @surface@ is the surface that will be associated with the swapchain.
     surface :: SurfaceKHR
@@ -421,7 +421,7 @@
 -- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR',
 -- 'getPhysicalDeviceSurfaceCapabilities2KHR'
 data SurfaceCapabilities2KHR (es :: [Type]) = SurfaceCapabilities2KHR
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @surfaceCapabilities@ is a
     -- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR' structure
diff --git a/src/Vulkan/Extensions/VK_KHR_incremental_present.hs b/src/Vulkan/Extensions/VK_KHR_incremental_present.hs
--- a/src/Vulkan/Extensions/VK_KHR_incremental_present.hs
+++ b/src/Vulkan/Extensions/VK_KHR_incremental_present.hs
@@ -32,10 +32,10 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
 import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.SharedTypes (Extent2D)
+import Vulkan.Core10.FundamentalTypes (Extent2D)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.Core10.SharedTypes (Offset2D)
+import Vulkan.Core10.FundamentalTypes (Offset2D)
 import Vulkan.Core10.Enums.StructureType (StructureType)
 import Vulkan.CStruct (ToCStruct)
 import Vulkan.CStruct (ToCStruct(..))
@@ -216,8 +216,8 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.SharedTypes.Extent2D',
--- 'Vulkan.Core10.SharedTypes.Offset2D', 'PresentRegionKHR'
+-- 'Vulkan.Core10.FundamentalTypes.Extent2D',
+-- 'Vulkan.Core10.FundamentalTypes.Offset2D', 'PresentRegionKHR'
 data RectLayerKHR = RectLayerKHR
   { -- | @offset@ is the origin of the rectangle, in pixels.
     offset :: Offset2D
diff --git a/src/Vulkan/Extensions/VK_KHR_performance_query.hs b/src/Vulkan/Extensions/VK_KHR_performance_query.hs
--- a/src/Vulkan/Extensions/VK_KHR_performance_query.hs
+++ b/src/Vulkan/Extensions/VK_KHR_performance_query.hs
@@ -110,20 +110,20 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
 import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.CStruct.Utils (lowerArrayPtr)
 import Vulkan.CStruct.Utils (peekByteStringFromSizedVectorPtr)
 import Vulkan.CStruct.Utils (pokeFixedLengthByteString)
 import Vulkan.CStruct.Utils (pokeFixedLengthNullTerminatedByteString)
 import Vulkan.NamedType ((:::))
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Handles (Device)
 import Vulkan.Core10.Handles (Device(..))
 import Vulkan.Dynamic (DeviceCmds(pVkAcquireProfilingLockKHR))
 import Vulkan.Dynamic (DeviceCmds(pVkReleaseProfilingLockKHR))
 import Vulkan.Core10.Handles (Device_T)
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Dynamic (InstanceCmds(pVkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR))
@@ -399,15 +399,15 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDevicePerformanceQueryFeaturesKHR = PhysicalDevicePerformanceQueryFeaturesKHR
-  { -- | @performanceCounterQueryPools@ is 'Vulkan.Core10.BaseType.TRUE' if the
-    -- physical device supports performance counter query pools.
+  { -- | @performanceCounterQueryPools@ is 'Vulkan.Core10.FundamentalTypes.TRUE'
+    -- if the physical device supports performance counter query pools.
     performanceCounterQueryPools :: Bool
   , -- | @performanceCounterMultipleQueryPools@ is
-    -- 'Vulkan.Core10.BaseType.TRUE'\` if the physical device supports using
-    -- multiple performance query pools in a primary command buffer and
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE'\` if the physical device supports
+    -- using multiple performance query pools in a primary command buffer and
     -- secondary command buffers executed within it.
     performanceCounterMultipleQueryPools :: Bool
   }
@@ -470,11 +470,11 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDevicePerformanceQueryPropertiesKHR = PhysicalDevicePerformanceQueryPropertiesKHR
-  { -- | @allowCommandBufferQueryCopies@ is 'Vulkan.Core10.BaseType.TRUE' if the
-    -- performance query pools are allowed to be used with
+  { -- | @allowCommandBufferQueryCopies@ is 'Vulkan.Core10.FundamentalTypes.TRUE'
+    -- if the performance query pools are allowed to be used with
     -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults'.
     allowCommandBufferQueryCopies :: Bool }
   deriving (Typeable, Eq)
diff --git a/src/Vulkan/Extensions/VK_KHR_pipeline_executable_properties.hs b/src/Vulkan/Extensions/VK_KHR_pipeline_executable_properties.hs
--- a/src/Vulkan/Extensions/VK_KHR_pipeline_executable_properties.hs
+++ b/src/Vulkan/Extensions/VK_KHR_pipeline_executable_properties.hs
@@ -77,12 +77,12 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
 import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.CStruct.Utils (lowerArrayPtr)
 import Vulkan.CStruct.Utils (pokeFixedLengthNullTerminatedByteString)
 import Vulkan.NamedType ((:::))
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Handles (Device)
 import Vulkan.Core10.Handles (Device(..))
 import Vulkan.Dynamic (DeviceCmds(pVkGetPipelineExecutableInternalRepresentationsKHR))
@@ -422,7 +422,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDevicePipelineExecutablePropertiesFeaturesKHR = PhysicalDevicePipelineExecutablePropertiesFeaturesKHR
   { -- | @pipelineExecutableInfo@ indicates that the implementation supports
@@ -764,14 +764,15 @@
 -- representation data, at most @dataSize@ bytes of data will be written to
 -- @pData@ and 'getPipelineExecutableInternalRepresentationsKHR' will
 -- return 'Vulkan.Core10.Enums.Result.INCOMPLETE'. If @isText@ is
--- 'Vulkan.Core10.BaseType.TRUE' and @pData@ is not @NULL@ and @dataSize@
--- is not zero, the last byte written to @pData@ will be a null character.
+-- 'Vulkan.Core10.FundamentalTypes.TRUE' and @pData@ is not @NULL@ and
+-- @dataSize@ is not zero, the last byte written to @pData@ will be a null
+-- character.
 --
 -- == Valid Usage (Implicit)
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'getPipelineExecutableInternalRepresentationsKHR'
 data PipelineExecutableInternalRepresentationKHR = PipelineExecutableInternalRepresentationKHR
@@ -785,8 +786,9 @@
     -- this internal representation.
     description :: ByteString
   , -- | @isText@ specifies whether the returned data is text or opaque data. If
-    -- @isText@ is 'Vulkan.Core10.BaseType.TRUE' then the data returned in
-    -- @pData@ is text and is guaranteed to be a null-terminated UTF-8 string.
+    -- @isText@ is 'Vulkan.Core10.FundamentalTypes.TRUE' then the data returned
+    -- in @pData@ is text and is guaranteed to be a null-terminated UTF-8
+    -- string.
     isText :: Bool
   , -- | @dataSize@ is an integer related to the size, in bytes, of the internal
     -- representation data, as described below.
@@ -894,9 +896,9 @@
 
 -- | 'PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR' specifies that the
 -- statistic is returned as a 32-bit boolean value which /must/ be either
--- 'Vulkan.Core10.BaseType.TRUE' or 'Vulkan.Core10.BaseType.FALSE' and
--- /should/ be read from the @b32@ field of
--- 'PipelineExecutableStatisticValueKHR'.
+-- 'Vulkan.Core10.FundamentalTypes.TRUE' or
+-- 'Vulkan.Core10.FundamentalTypes.FALSE' and /should/ be read from the
+-- @b32@ field of 'PipelineExecutableStatisticValueKHR'.
 pattern PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = PipelineExecutableStatisticFormatKHR 0
 -- | 'PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR' specifies that the
 -- statistic is returned as a signed 64-bit integer and /should/ be read
diff --git a/src/Vulkan/Extensions/VK_KHR_ray_tracing.hs b/src/Vulkan/Extensions/VK_KHR_ray_tracing.hs
--- a/src/Vulkan/Extensions/VK_KHR_ray_tracing.hs
+++ b/src/Vulkan/Extensions/VK_KHR_ray_tracing.hs
@@ -183,8 +183,8 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
 import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.CStruct.Extends (forgetExtensions)
 import Vulkan.CStruct.Utils (lowerArrayPtr)
 import Vulkan.CStruct.Extends (peekSomeCStruct)
@@ -193,7 +193,7 @@
 import Vulkan.Extensions.Handles (AccelerationStructureKHR)
 import Vulkan.Extensions.Handles (AccelerationStructureKHR(..))
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Handles (Buffer)
 import Vulkan.Core10.Handles (Buffer(..))
 import Vulkan.CStruct.Extends (Chain)
@@ -203,7 +203,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_deferred_host_operations (DeferredOperationInfoKHR)
 import Vulkan.Core10.Handles (Device)
 import Vulkan.Core10.Handles (Device(..))
-import Vulkan.Core10.BaseType (DeviceAddress)
+import Vulkan.Core10.FundamentalTypes (DeviceAddress)
 import Vulkan.Dynamic (DeviceCmds(pVkBindAccelerationStructureMemoryKHR))
 import Vulkan.Dynamic (DeviceCmds(pVkBuildAccelerationStructureKHR))
 import Vulkan.Dynamic (DeviceCmds(pVkCmdBuildAccelerationStructureIndirectKHR))
@@ -227,12 +227,12 @@
 import Vulkan.Dynamic (DeviceCmds(pVkGetRayTracingShaderGroupHandlesKHR))
 import Vulkan.Dynamic (DeviceCmds(pVkWriteAccelerationStructuresPropertiesKHR))
 import Vulkan.Core10.Handles (DeviceMemory)
-import Vulkan.Core10.BaseType (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
 import Vulkan.Core10.Handles (Device_T)
 import Vulkan.CStruct.Extends (Extends)
 import Vulkan.CStruct.Extends (Extendss)
 import Vulkan.CStruct.Extends (Extensible(..))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Core10.Enums.Format (Format)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
@@ -264,7 +264,7 @@
 import Vulkan.Exception (VulkanException(..))
 import Vulkan.Zero (Zero)
 import Vulkan.Zero (Zero(..))
-import Vulkan.Core10.BaseType (Bool32(FALSE))
+import Vulkan.Core10.FundamentalTypes (Bool32(FALSE))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR))
@@ -495,6 +495,8 @@
 --
 -- == Host Synchronization
 --
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
 -- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
 --     @commandBuffer@ was allocated from /must/ be externally synchronized
 --
@@ -705,6 +707,8 @@
 --
 -- == Host Synchronization
 --
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
 -- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
 --     @commandBuffer@ was allocated from /must/ be externally synchronized
 --
@@ -904,6 +908,8 @@
 --
 -- == Host Synchronization
 --
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
 -- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
 --     @commandBuffer@ was allocated from /must/ be externally synchronized
 --
@@ -1090,6 +1096,8 @@
 --
 -- == Host Synchronization
 --
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
 -- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
 --     @commandBuffer@ was allocated from /must/ be externally synchronized
 --
@@ -1180,20 +1188,22 @@
 -- -   If @queryType@ is
 --     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR',
 --     then @stride@ /must/ be a multiple of the size of
---     'Vulkan.Core10.BaseType.DeviceSize'
+--     'Vulkan.Core10.FundamentalTypes.DeviceSize'
 --
 -- -   If @queryType@ is
 --     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR',
---     then @data@ /must/ point to a 'Vulkan.Core10.BaseType.DeviceSize'
+--     then @data@ /must/ point to a
+--     'Vulkan.Core10.FundamentalTypes.DeviceSize'
 --
 -- -   If @queryType@ is
 --     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR',
 --     then @stride@ /must/ be a multiple of the size of
---     'Vulkan.Core10.BaseType.DeviceSize'
+--     'Vulkan.Core10.FundamentalTypes.DeviceSize'
 --
 -- -   If @queryType@ is
 --     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR',
---     then @data@ /must/ point to a 'Vulkan.Core10.BaseType.DeviceSize'
+--     then @data@ /must/ point to a
+--     'Vulkan.Core10.FundamentalTypes.DeviceSize'
 --
 -- -   @dataSize@ /must/ be greater than or equal to
 --     @accelerationStructureCount@*@stride@
@@ -1616,6 +1626,8 @@
 --
 -- == Host Synchronization
 --
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
 -- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
 --     @commandBuffer@ was allocated from /must/ be externally synchronized
 --
@@ -1682,9 +1694,12 @@
 --
 -- == Valid Usage
 --
--- -   The sum of @firstGroup@ and @groupCount@ /must/ be less than the
---     number of shader groups in @pipeline@
+-- -   @firstGroup@ /must/ be less than the number of shader groups in
+--     @pipeline@
 --
+-- -   The sum of @firstGroup@ and @groupCount@ /must/ be less than or
+--     equal to the number of shader groups in @pipeline@
+--
 -- -   @dataSize@ /must/ be at least
 --     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupHandleSize@ ×
 --     @groupCount@
@@ -1760,9 +1775,12 @@
 --
 -- == Valid Usage
 --
--- -   The sum of @firstGroup@ and @groupCount@ /must/ be less than the
---     number of shader groups in @pipeline@
+-- -   @firstGroup@ /must/ be less than the number of shader groups in
+--     @pipeline@
 --
+-- -   The sum of @firstGroup@ and @groupCount@ /must/ be less than or
+--     equal to the number of shader groups in @pipeline@
+--
 -- -   @dataSize@ /must/ be at least
 --     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupHandleCaptureReplaySize@
 --     × @groupCount@
@@ -2294,6 +2312,8 @@
 --
 -- == Host Synchronization
 --
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
 -- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
 --     @commandBuffer@ was allocated from /must/ be externally synchronized
 --
@@ -2311,7 +2331,7 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.BaseType.DeviceSize', 'StridedBufferRegionKHR'
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize', 'StridedBufferRegionKHR'
 cmdTraceRaysIndirectKHR :: forall io
                          . (MonadIO io)
                         => -- | @commandBuffer@ is the command buffer into which the command will be
@@ -2589,14 +2609,16 @@
 --     'AccelerationStructureGeometryTrianglesDataKHR'::@transformData@ is
 --     both 0 or both non-zero, and all other parameters are the same
 --
--- -   For each @pInfos@[i], if @update@ is 'Vulkan.Core10.BaseType.TRUE',
---     then objects that were previously active for that acceleration
---     structure /must/ not be made inactive as per
+-- -   For each @pInfos@[i], if @update@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then objects that were
+--     previously active for that acceleration structure /must/ not be made
+--     inactive as per
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims ???>
 --
--- -   For each @pInfos@[i], if @update@ is 'Vulkan.Core10.BaseType.TRUE',
---     then objects that were previously inactive for that acceleration
---     structure /must/ not be made active as per
+-- -   For each @pInfos@[i], if @update@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then objects that were
+--     previously inactive for that acceleration structure /must/ not be
+--     made active as per
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims ???>
 --
 -- -   Any acceleration structure instance in any top level build in this
@@ -2614,9 +2636,9 @@
 --     between memory bound to any top level, bottom level, or instance
 --     acceleration structure accessed by this command
 --
--- -   If @update@ is 'Vulkan.Core10.BaseType.FALSE', all addresses between
---     @pInfos@[i].@scratchData@ and @pInfos@[i].@scratchData@ + N - 1
---     /must/ be in the buffer device address range of the same buffer,
+-- -   If @update@ is 'Vulkan.Core10.FundamentalTypes.FALSE', all addresses
+--     between @pInfos@[i].@scratchData@ and @pInfos@[i].@scratchData@ + N
+--     - 1 /must/ be in the buffer device address range of the same buffer,
 --     where N is given by the @size@ member of the
 --     'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure
 --     returned from a call to
@@ -2626,9 +2648,9 @@
 --     'AccelerationStructureMemoryRequirementsInfoKHR'::@type@ set to
 --     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR'
 --
--- -   If @update@ is 'Vulkan.Core10.BaseType.TRUE', all addresses between
---     @pInfos@[i].@scratchData@ and @pInfos@[i].@scratchData@ + N - 1
---     /must/ be in the buffer device address range of the same buffer,
+-- -   If @update@ is 'Vulkan.Core10.FundamentalTypes.TRUE', all addresses
+--     between @pInfos@[i].@scratchData@ and @pInfos@[i].@scratchData@ + N
+--     - 1 /must/ be in the buffer device address range of the same buffer,
 --     where N is given by the @size@ member of the
 --     'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure
 --     returned from a call to
@@ -2680,6 +2702,8 @@
 --
 -- == Host Synchronization
 --
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
 -- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
 --     @commandBuffer@ was allocated from /must/ be externally synchronized
 --
@@ -2789,6 +2813,8 @@
 --
 -- == Host Synchronization
 --
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
 -- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
 --     @commandBuffer@ was allocated from /must/ be externally synchronized
 --
@@ -2807,7 +2833,7 @@
 --
 -- 'AccelerationStructureBuildGeometryInfoKHR',
 -- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.BaseType.DeviceSize'
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
 cmdBuildAccelerationStructureIndirectKHR :: forall a io
                                           . (Extendss AccelerationStructureBuildGeometryInfoKHR a, PokeChain a, MonadIO io)
                                          => -- | @commandBuffer@ is the command buffer into which the command will be
@@ -2921,14 +2947,16 @@
 --     'AccelerationStructureGeometryTrianglesDataKHR'::@transformData@ is
 --     both 0 or both non-zero, and all other parameters are the same
 --
--- -   For each @pInfos@[i], if @update@ is 'Vulkan.Core10.BaseType.TRUE',
---     then objects that were previously active for that acceleration
---     structure /must/ not be made inactive as per
+-- -   For each @pInfos@[i], if @update@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then objects that were
+--     previously active for that acceleration structure /must/ not be made
+--     inactive as per
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims ???>
 --
--- -   For each @pInfos@[i], if @update@ is 'Vulkan.Core10.BaseType.TRUE',
---     then objects that were previously inactive for that acceleration
---     structure /must/ not be made active as per
+-- -   For each @pInfos@[i], if @update@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then objects that were
+--     previously inactive for that acceleration structure /must/ not be
+--     made active as per
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims ???>
 --
 -- -   Any acceleration structure instance in any top level build in this
@@ -3118,15 +3146,15 @@
 --
 -- -   If
 --     'PhysicalDeviceRayTracingFeaturesKHR'::@rayTracingShaderGroupHandleCaptureReplayMixed@
---     is 'Vulkan.Core10.BaseType.FALSE' then
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE' then
 --     @pShaderGroupCaptureReplayHandle@ /must/ not be provided if it has
 --     not been provided on a previous call to ray tracing pipeline
 --     creation
 --
 -- -   If
 --     'PhysicalDeviceRayTracingFeaturesKHR'::@rayTracingShaderGroupHandleCaptureReplayMixed@
---     is 'Vulkan.Core10.BaseType.FALSE' then the caller /must/ guarantee
---     that no ray tracing pipeline creation commands with
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE' then the caller /must/
+--     guarantee that no ray tracing pipeline creation commands with
 --     @pShaderGroupCaptureReplayHandle@ provided execute simultaneously
 --     with ray tracing pipeline creation commands without
 --     @pShaderGroupCaptureReplayHandle@ provided
@@ -3176,7 +3204,7 @@
   , -- | @pShaderGroupCaptureReplayHandle@ is an optional pointer to replay
     -- information for this shader group. Ignored if
     -- 'PhysicalDeviceRayTracingFeaturesKHR'::@rayTracingShaderGroupHandleCaptureReplay@
-    -- is 'Vulkan.Core10.BaseType.FALSE'.
+    -- is 'Vulkan.Core10.FundamentalTypes.FALSE'.
     shaderGroupCaptureReplayHandle :: Ptr ()
   }
   deriving (Typeable)
@@ -3434,7 +3462,7 @@
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'createRayTracingPipelinesKHR'
 data RayTracingPipelineCreateInfoKHR (es :: [Type]) = RayTracingPipelineCreateInfoKHR
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is a bitmask of
     -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'
@@ -3622,7 +3650,7 @@
 --
 -- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',
 -- 'Vulkan.Core10.Handles.DeviceMemory',
--- 'Vulkan.Core10.BaseType.DeviceSize',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'bindAccelerationStructureMemoryKHR',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.bindAccelerationStructureMemoryNV'
@@ -3866,9 +3894,9 @@
 -- -   @rayTracingShaderGroupHandleCaptureReplayMixed@ indicates whether
 --     the implementation supports reuse of shader group handles being
 --     arbitrarily mixed with creation of non-reused shader group handles.
---     If this is 'Vulkan.Core10.BaseType.FALSE', all reused shader group
---     handles /must/ be specified before any non-reused handles /may/ be
---     created.
+--     If this is 'Vulkan.Core10.FundamentalTypes.FALSE', all reused shader
+--     group handles /must/ be specified before any non-reused handles
+--     /may/ be created.
 --
 -- -   @rayTracingAccelerationStructureCaptureReplay@ indicates whether the
 --     implementation supports saving and reusing acceleration structure
@@ -3907,9 +3935,9 @@
 -- == Valid Usage
 --
 -- -   If @rayTracingShaderGroupHandleCaptureReplayMixed@ is
---     'Vulkan.Core10.BaseType.TRUE',
+--     'Vulkan.Core10.FundamentalTypes.TRUE',
 --     @rayTracingShaderGroupHandleCaptureReplay@ /must/ also be
---     'Vulkan.Core10.BaseType.TRUE'
+--     'Vulkan.Core10.FundamentalTypes.TRUE'
 --
 -- == Valid Usage (Implicit)
 --
@@ -3918,7 +3946,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceRayTracingFeaturesKHR = PhysicalDeviceRayTracingFeaturesKHR
   { -- No documentation found for Nested "VkPhysicalDeviceRayTracingFeaturesKHR" "rayTracing"
@@ -4145,8 +4173,9 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.BaseType.DeviceSize',
--- 'cmdTraceRaysIndirectKHR', 'cmdTraceRaysKHR'
+-- 'Vulkan.Core10.Handles.Buffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize', 'cmdTraceRaysIndirectKHR',
+-- 'cmdTraceRaysKHR'
 data StridedBufferRegionKHR = StridedBufferRegionKHR
   { -- | @buffer@ is the buffer containing this region.
     buffer :: Buffer
@@ -4301,7 +4330,7 @@
 -- = See Also
 --
 -- 'AccelerationStructureGeometryDataKHR', 'DeviceOrHostAddressConstKHR',
--- 'Vulkan.Core10.BaseType.DeviceSize',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Enums.Format.Format',
 -- 'Vulkan.Core10.Enums.IndexType.IndexType',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
@@ -4373,7 +4402,7 @@
 -- = See Also
 --
 -- 'AccelerationStructureGeometryDataKHR', 'DeviceOrHostAddressConstKHR',
--- 'Vulkan.Core10.BaseType.DeviceSize',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data AccelerationStructureGeometryAabbsDataKHR = AccelerationStructureGeometryAabbsDataKHR
   { -- | @data@ is a device or host address to memory containing
@@ -4439,8 +4468,8 @@
 --
 -- = See Also
 --
--- 'AccelerationStructureGeometryDataKHR', 'Vulkan.Core10.BaseType.Bool32',
--- 'DeviceOrHostAddressConstKHR',
+-- 'AccelerationStructureGeometryDataKHR',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32', 'DeviceOrHostAddressConstKHR',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data AccelerationStructureGeometryInstancesDataKHR = AccelerationStructureGeometryInstancesDataKHR
   { -- | @arrayOfPointers@ specifies whether @data@ is used as an array of
@@ -4448,8 +4477,8 @@
     arrayOfPointers :: Bool
   , -- | @data@ is either the address of an array of device or host addresses
     -- referencing individual 'AccelerationStructureInstanceKHR' structures if
-    -- @arrayOfPointers@ is 'Vulkan.Core10.BaseType.TRUE', or the address of an
-    -- array of 'AccelerationStructureInstanceKHR' structures.
+    -- @arrayOfPointers@ is 'Vulkan.Core10.FundamentalTypes.TRUE', or the
+    -- address of an array of 'AccelerationStructureInstanceKHR' structures.
     data' :: DeviceOrHostAddressConstKHR
   }
   deriving (Typeable)
@@ -4507,9 +4536,18 @@
 --
 -- -   @geometryType@ /must/ be a valid 'GeometryTypeKHR' value
 --
--- -   @geometry@ /must/ be a valid 'AccelerationStructureGeometryDataKHR'
---     union
+-- -   If @geometryType@ is 'GEOMETRY_TYPE_TRIANGLES_KHR', the @triangles@
+--     member of @geometry@ /must/ be a valid
+--     'AccelerationStructureGeometryTrianglesDataKHR' structure
 --
+-- -   If @geometryType@ is 'GEOMETRY_TYPE_AABBS_KHR', the @aabbs@ member
+--     of @geometry@ /must/ be a valid
+--     'AccelerationStructureGeometryAabbsDataKHR' structure
+--
+-- -   If @geometryType@ is 'GEOMETRY_TYPE_INSTANCES_KHR', the @instances@
+--     member of @geometry@ /must/ be a valid
+--     'AccelerationStructureGeometryInstancesDataKHR' structure
+--
 -- -   @flags@ /must/ be a valid combination of 'GeometryFlagBitsKHR'
 --     values
 --
@@ -4578,11 +4616,11 @@
 --
 -- == Valid Usage
 --
--- -   If @update@ is 'Vulkan.Core10.BaseType.TRUE',
+-- -   If @update@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
 --     @srcAccelerationStructure@ /must/ not be
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE'
 --
--- -   If @update@ is 'Vulkan.Core10.BaseType.TRUE',
+-- -   If @update@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
 --     @srcAccelerationStructure@ /must/ have been built before with
 --     'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR' set in
 --     'AccelerationStructureBuildGeometryInfoKHR'::@flags@
@@ -4591,7 +4629,7 @@
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_RAY_TRACING_BIT_KHR'
 --     usage flag
 --
--- -   If @update@ is 'Vulkan.Core10.BaseType.TRUE', the
+-- -   If @update@ is 'Vulkan.Core10.FundamentalTypes.TRUE', the
 --     @srcAccelerationStructure@ and @dstAccelerationStructure@ objects
 --     /must/ either be the same object or not have any
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing memory aliasing>
@@ -4631,14 +4669,14 @@
 --
 -- 'AccelerationStructureGeometryKHR',
 -- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',
--- 'AccelerationStructureTypeKHR', 'Vulkan.Core10.BaseType.Bool32',
+-- 'AccelerationStructureTypeKHR', 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'BuildAccelerationStructureFlagsKHR', 'DeviceOrHostAddressKHR',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'buildAccelerationStructureKHR',
 -- 'cmdBuildAccelerationStructureIndirectKHR',
 -- 'cmdBuildAccelerationStructureKHR'
 data AccelerationStructureBuildGeometryInfoKHR (es :: [Type]) = AccelerationStructureBuildGeometryInfoKHR
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @type@ is a 'AccelerationStructureTypeKHR' value specifying the type of
     -- acceleration structure being built.
@@ -4651,18 +4689,18 @@
     update :: Bool
   , -- | @srcAccelerationStructure@ points to an existing acceleration structure
     -- that is to be used to update the @dst@ acceleration structure when
-    -- @update@ is 'Vulkan.Core10.BaseType.TRUE'.
+    -- @update@ is 'Vulkan.Core10.FundamentalTypes.TRUE'.
     srcAccelerationStructure :: AccelerationStructureKHR
   , -- | @dstAccelerationStructure@ points to the target acceleration structure
     -- for the build.
     dstAccelerationStructure :: AccelerationStructureKHR
   , -- | @ppGeometries@ is either a pointer to an array of pointers to
     -- 'AccelerationStructureGeometryKHR' structures if
-    -- @geometryArrayOfPointers@ is 'Vulkan.Core10.BaseType.TRUE', or a pointer
-    -- to a pointer to an array of 'AccelerationStructureGeometryKHR'
-    -- structures if it is 'Vulkan.Core10.BaseType.FALSE'. Each element of the
-    -- array describes the data used to build each acceleration structure
-    -- geometry.
+    -- @geometryArrayOfPointers@ is 'Vulkan.Core10.FundamentalTypes.TRUE', or a
+    -- pointer to a pointer to an array of 'AccelerationStructureGeometryKHR'
+    -- structures if it is 'Vulkan.Core10.FundamentalTypes.FALSE'. Each element
+    -- of the array describes the data used to build each acceleration
+    -- structure geometry.
     geometries :: Vector AccelerationStructureGeometryKHR
   , -- | @scratchData@ is the device or host address to memory that will be used
     -- as scratch memory for the build.
@@ -4908,7 +4946,8 @@
 --
 -- = See Also
 --
--- 'AccelerationStructureCreateInfoKHR', 'Vulkan.Core10.BaseType.Bool32',
+-- 'AccelerationStructureCreateInfoKHR',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.Format.Format', 'GeometryTypeKHR',
 -- 'Vulkan.Core10.Enums.IndexType.IndexType',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
@@ -5054,7 +5093,7 @@
 --
 -- -   If @deviceAddress@ is not @0@,
 --     'PhysicalDeviceRayTracingFeaturesKHR'::@rayTracingAccelerationStructureCaptureReplay@
---     /must/ be 'Vulkan.Core10.BaseType.TRUE'
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
 --
 -- == Valid Usage (Implicit)
 --
@@ -5076,8 +5115,8 @@
 --
 -- 'AccelerationStructureCreateGeometryTypeInfoKHR',
 -- 'AccelerationStructureTypeKHR', 'BuildAccelerationStructureFlagsKHR',
--- 'Vulkan.Core10.BaseType.DeviceAddress',
--- 'Vulkan.Core10.BaseType.DeviceSize',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'createAccelerationStructureKHR'
 data AccelerationStructureCreateInfoKHR = AccelerationStructureCreateInfoKHR
@@ -6104,7 +6143,8 @@
 
 -- | 'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR' indicates that the
 -- specified acceleration structure /can/ be updated with @update@ of
--- 'Vulkan.Core10.BaseType.TRUE' in 'cmdBuildAccelerationStructureKHR' or
+-- 'Vulkan.Core10.FundamentalTypes.TRUE' in
+-- 'cmdBuildAccelerationStructureKHR' or
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV' .
 pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = BuildAccelerationStructureFlagBitsKHR 0x00000001
 -- | 'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR' indicates that
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_clock.hs b/src/Vulkan/Extensions/VK_KHR_shader_clock.hs
--- a/src/Vulkan/Extensions/VK_KHR_shader_clock.hs
+++ b/src/Vulkan/Extensions/VK_KHR_shader_clock.hs
@@ -18,9 +18,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -45,7 +45,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceShaderClockFeaturesKHR = PhysicalDeviceShaderClockFeaturesKHR
   { -- | @shaderSubgroupClock@ indicates whether shaders /can/ support @Subgroup@
diff --git a/src/Vulkan/Extensions/VK_KHR_surface.hs b/src/Vulkan/Extensions/VK_KHR_surface.hs
--- a/src/Vulkan/Extensions/VK_KHR_surface.hs
+++ b/src/Vulkan/Extensions/VK_KHR_surface.hs
@@ -103,13 +103,13 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
 import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.BaseType (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
 import Vulkan.NamedType ((:::))
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.BaseType (Bool32)
-import Vulkan.Core10.BaseType (Bool32(..))
-import Vulkan.Core10.SharedTypes (Extent2D)
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32(..))
+import Vulkan.Core10.FundamentalTypes (Extent2D)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Core10.Enums.Format (Format)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
@@ -235,7 +235,7 @@
 --     handle
 --
 -- -   @pSupported@ /must/ be a valid pointer to a
---     'Vulkan.Core10.BaseType.Bool32' value
+--     'Vulkan.Core10.FundamentalTypes.Bool32' value
 --
 -- -   Both of @physicalDevice@, and @surface@ /must/ have been created,
 --     allocated, or retrieved from the same
@@ -257,7 +257,8 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32', 'Vulkan.Core10.Handles.PhysicalDevice',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Handles.PhysicalDevice',
 -- 'Vulkan.Extensions.Handles.SurfaceKHR'
 getPhysicalDeviceSurfaceSupportKHR :: forall io
                                     . (MonadIO io)
@@ -566,7 +567,7 @@
 --
 -- = See Also
 --
--- 'CompositeAlphaFlagsKHR', 'Vulkan.Core10.SharedTypes.Extent2D',
+-- 'CompositeAlphaFlagsKHR', 'Vulkan.Core10.FundamentalTypes.Extent2D',
 -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlags',
 -- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR',
 -- 'SurfaceTransformFlagBitsKHR', 'SurfaceTransformFlagsKHR',
diff --git a/src/Vulkan/Extensions/VK_KHR_surface_protected_capabilities.hs b/src/Vulkan/Extensions/VK_KHR_surface_protected_capabilities.hs
--- a/src/Vulkan/Extensions/VK_KHR_surface_protected_capabilities.hs
+++ b/src/Vulkan/Extensions/VK_KHR_surface_protected_capabilities.hs
@@ -18,9 +18,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -35,14 +35,14 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data SurfaceProtectedCapabilitiesKHR = SurfaceProtectedCapabilitiesKHR
   { -- | @supportsProtected@ specifies whether a protected swapchain created from
     -- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR'::@surface@
     -- for a particular windowing system /can/ be displayed on screen or not.
-    -- If @supportsProtected@ is 'Vulkan.Core10.BaseType.TRUE', then creation
-    -- of swapchains with the
+    -- If @supportsProtected@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+    -- creation of swapchains with the
     -- 'Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_PROTECTED_BIT_KHR'
     -- flag set /must/ be supported for @surface@.
     supportsProtected :: Bool }
diff --git a/src/Vulkan/Extensions/VK_KHR_swapchain.hs b/src/Vulkan/Extensions/VK_KHR_swapchain.hs
--- a/src/Vulkan/Extensions/VK_KHR_swapchain.hs
+++ b/src/Vulkan/Extensions/VK_KHR_swapchain.hs
@@ -96,13 +96,13 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
 import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.CStruct.Extends (forgetExtensions)
 import Vulkan.CStruct.Utils (lowerArrayPtr)
 import Vulkan.NamedType ((:::))
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct.Extends (Chain)
 import Vulkan.Extensions.VK_KHR_surface (ColorSpaceKHR)
 import Vulkan.Extensions.VK_KHR_surface (CompositeAlphaFlagBitsKHR)
@@ -121,10 +121,10 @@
 import Vulkan.CStruct.Extends (Extends)
 import Vulkan.CStruct.Extends (Extendss)
 import Vulkan.CStruct.Extends (Extensible(..))
-import Vulkan.Core10.SharedTypes (Extent2D)
+import Vulkan.Core10.FundamentalTypes (Extent2D)
 import Vulkan.Core10.Handles (Fence)
 import Vulkan.Core10.Handles (Fence(..))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Core10.Enums.Format (Format)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
@@ -148,7 +148,7 @@
 import Vulkan.Core10.Handles (Queue)
 import Vulkan.Core10.Handles (Queue(..))
 import Vulkan.Core10.Handles (Queue_T)
-import Vulkan.Core10.CommandBufferBuilding (Rect2D)
+import Vulkan.Core10.FundamentalTypes (Rect2D)
 import Vulkan.Core10.Enums.Result (Result)
 import Vulkan.Core10.Enums.Result (Result(..))
 import Vulkan.Core10.Handles (Semaphore)
@@ -1111,7 +1111,7 @@
 --
 -- -   If the value referenced by @pRectCount@ is not @0@, and @pRects@ is
 --     not @NULL@, @pRects@ /must/ be a valid pointer to an array of
---     @pRectCount@ 'Vulkan.Core10.CommandBufferBuilding.Rect2D' structures
+--     @pRectCount@ 'Vulkan.Core10.FundamentalTypes.Rect2D' structures
 --
 -- -   Both of @physicalDevice@, and @surface@ /must/ have been created,
 --     allocated, or retrieved from the same
@@ -1138,7 +1138,7 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.PhysicalDevice',
--- 'Vulkan.Core10.CommandBufferBuilding.Rect2D',
+-- 'Vulkan.Core10.FundamentalTypes.Rect2D',
 -- 'Vulkan.Extensions.Handles.SurfaceKHR'
 getPhysicalDevicePresentRectanglesKHR :: forall io
                                        . (MonadIO io)
@@ -1219,28 +1219,29 @@
 --     discard rendering operations that affect regions of the surface that
 --     are not visible.
 --
---     -   If set to 'Vulkan.Core10.BaseType.TRUE', the presentable images
---         associated with the swapchain /may/ not own all of their pixels.
---         Pixels in the presentable images that correspond to regions of
---         the target surface obscured by another window on the desktop, or
---         subject to some other clipping mechanism will have undefined
---         content when read back. Fragment shaders /may/ not execute for
---         these pixels, and thus any side effects they would have had will
---         not occur. 'Vulkan.Core10.BaseType.TRUE' value does not
---         guarantee any clipping will occur, but allows more optimal
---         presentation methods to be used on some platforms.
+--     -   If set to 'Vulkan.Core10.FundamentalTypes.TRUE', the presentable
+--         images associated with the swapchain /may/ not own all of their
+--         pixels. Pixels in the presentable images that correspond to
+--         regions of the target surface obscured by another window on the
+--         desktop, or subject to some other clipping mechanism will have
+--         undefined content when read back. Fragment shaders /may/ not
+--         execute for these pixels, and thus any side effects they would
+--         have had will not occur. 'Vulkan.Core10.FundamentalTypes.TRUE'
+--         value does not guarantee any clipping will occur, but allows
+--         more optimal presentation methods to be used on some platforms.
 --
---     -   If set to 'Vulkan.Core10.BaseType.FALSE', presentable images
---         associated with the swapchain will own all of the pixels they
---         contain.
+--     -   If set to 'Vulkan.Core10.FundamentalTypes.FALSE', presentable
+--         images associated with the swapchain will own all of the pixels
+--         they contain.
 --
 -- Note
 --
--- Applications /should/ set this value to 'Vulkan.Core10.BaseType.TRUE' if
--- they do not expect to read back the content of presentable images before
--- presenting them or after reacquiring them, and if their fragment shaders
--- do not have any side effects that require them to run for all pixels in
--- the presentable image.
+-- Applications /should/ set this value to
+-- 'Vulkan.Core10.FundamentalTypes.TRUE' if they do not expect to read back
+-- the content of presentable images before presenting them or after
+-- reacquiring them, and if their fragment shaders do not have any side
+-- effects that require them to run for all pixels in the presentable
+-- image.
 --
 -- -   @oldSwapchain@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', or the
 --     existing non-retired swapchain currently associated with @surface@.
@@ -1415,7 +1416,7 @@
 --
 -- -   If @flags@ contains 'SWAPCHAIN_CREATE_PROTECTED_BIT_KHR', then
 --     'Vulkan.Extensions.VK_KHR_surface_protected_capabilities.SurfaceProtectedCapabilitiesKHR'::@supportsProtected@
---     /must/ be 'Vulkan.Core10.BaseType.TRUE' in the
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE' in the
 --     'Vulkan.Extensions.VK_KHR_surface_protected_capabilities.SurfaceProtectedCapabilitiesKHR'
 --     structure returned by
 --     'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR'
@@ -1490,10 +1491,10 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Extensions.VK_KHR_surface.ColorSpaceKHR',
 -- 'Vulkan.Extensions.VK_KHR_surface.CompositeAlphaFlagBitsKHR',
--- 'Vulkan.Core10.SharedTypes.Extent2D',
+-- 'Vulkan.Core10.FundamentalTypes.Extent2D',
 -- 'Vulkan.Core10.Enums.Format.Format',
 -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlags',
 -- 'Vulkan.Extensions.VK_KHR_surface.PresentModeKHR',
@@ -1505,7 +1506,7 @@
 -- 'Vulkan.Extensions.VK_KHR_display_swapchain.createSharedSwapchainsKHR',
 -- 'createSwapchainKHR'
 data SwapchainCreateInfoKHR (es :: [Type]) = SwapchainCreateInfoKHR
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is a bitmask of 'SwapchainCreateFlagBitsKHR' indicating
     -- parameters of the swapchain creation.
@@ -1743,7 +1744,7 @@
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'Vulkan.Extensions.Handles.SwapchainKHR', 'queuePresentKHR'
 data PresentInfoKHR (es :: [Type]) = PresentInfoKHR
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @pWaitSemaphores@ is @NULL@ or a pointer to an array of
     -- 'Vulkan.Core10.Handles.Semaphore' objects with @waitSemaphoreCount@
diff --git a/src/Vulkan/Extensions/VK_KHR_wayland_surface.hs b/src/Vulkan/Extensions/VK_KHR_wayland_surface.hs
--- a/src/Vulkan/Extensions/VK_KHR_wayland_surface.hs
+++ b/src/Vulkan/Extensions/VK_KHR_wayland_surface.hs
@@ -7,9 +7,9 @@
                                                  , pattern KHR_WAYLAND_SURFACE_SPEC_VERSION
                                                  , KHR_WAYLAND_SURFACE_EXTENSION_NAME
                                                  , pattern KHR_WAYLAND_SURFACE_EXTENSION_NAME
-                                                 , SurfaceKHR(..)
                                                  , Wl_display
                                                  , Wl_surface
+                                                 , SurfaceKHR(..)
                                                  ) where
 
 import Control.Exception.Base (bracket)
@@ -52,12 +52,12 @@
 import Text.Read.Lex (Lexeme(Ident))
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
-import Vulkan.Core10.BaseType (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
 import Vulkan.NamedType ((:::))
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.BaseType (Bool32)
-import Vulkan.Core10.BaseType (Bool32(..))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32(..))
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Handles (Instance)
@@ -76,15 +76,11 @@
 import Vulkan.CStruct (ToCStruct)
 import Vulkan.CStruct (ToCStruct(..))
 import Vulkan.Exception (VulkanException(..))
-import Vulkan.Extensions.WSITypes (Wl_display)
-import Vulkan.Extensions.WSITypes (Wl_surface)
 import Vulkan.Zero (Zero)
 import Vulkan.Zero (Zero(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
 import Vulkan.Extensions.Handles (SurfaceKHR(..))
-import Vulkan.Extensions.WSITypes (Wl_display)
-import Vulkan.Extensions.WSITypes (Wl_surface)
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -270,7 +266,16 @@
            zero
 
 
--- No documentation found for TopLevel "VkWaylandSurfaceCreateFlagsKHR"
+-- | VkWaylandSurfaceCreateFlagsKHR - Reserved for future use
+--
+-- = Description
+--
+-- 'WaylandSurfaceCreateFlagsKHR' is a bitmask type for setting a mask, but
+-- is currently reserved for future use.
+--
+-- = See Also
+--
+-- 'WaylandSurfaceCreateInfoKHR'
 newtype WaylandSurfaceCreateFlagsKHR = WaylandSurfaceCreateFlagsKHR Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits)
 
@@ -301,4 +306,10 @@
 -- No documentation found for TopLevel "VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME"
 pattern KHR_WAYLAND_SURFACE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
 pattern KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface"
+
+
+data Wl_display
+
+
+data Wl_surface
 
diff --git a/src/Vulkan/Extensions/VK_KHR_wayland_surface.hs-boot b/src/Vulkan/Extensions/VK_KHR_wayland_surface.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_wayland_surface.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_wayland_surface.hs-boot
@@ -1,5 +1,7 @@
 {-# language CPP #-}
-module Vulkan.Extensions.VK_KHR_wayland_surface  (WaylandSurfaceCreateInfoKHR) where
+module Vulkan.Extensions.VK_KHR_wayland_surface  ( WaylandSurfaceCreateInfoKHR
+                                                 , Wl_display
+                                                 ) where
 
 import Data.Kind (Type)
 import Vulkan.CStruct (FromCStruct)
@@ -10,4 +12,7 @@
 instance Show WaylandSurfaceCreateInfoKHR
 
 instance FromCStruct WaylandSurfaceCreateInfoKHR
+
+
+data Wl_display
 
diff --git a/src/Vulkan/Extensions/VK_KHR_win32_surface.hs b/src/Vulkan/Extensions/VK_KHR_win32_surface.hs
--- a/src/Vulkan/Extensions/VK_KHR_win32_surface.hs
+++ b/src/Vulkan/Extensions/VK_KHR_win32_surface.hs
@@ -7,9 +7,9 @@
                                                , pattern KHR_WIN32_SURFACE_SPEC_VERSION
                                                , KHR_WIN32_SURFACE_EXTENSION_NAME
                                                , pattern KHR_WIN32_SURFACE_EXTENSION_NAME
-                                               , SurfaceKHR(..)
                                                , HINSTANCE
                                                , HWND
+                                               , SurfaceKHR(..)
                                                ) where
 
 import Control.Exception.Base (bracket)
@@ -52,16 +52,14 @@
 import Text.Read.Lex (Lexeme(Ident))
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
-import Vulkan.Core10.BaseType (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
 import Vulkan.NamedType ((:::))
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.BaseType (Bool32)
-import Vulkan.Core10.BaseType (Bool32(..))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32(..))
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.Extensions.WSITypes (HINSTANCE)
-import Vulkan.Extensions.WSITypes (HWND)
 import Vulkan.Core10.Handles (Instance)
 import Vulkan.Core10.Handles (Instance(..))
 import Vulkan.Dynamic (InstanceCmds(pVkCreateWin32SurfaceKHR))
@@ -82,8 +80,6 @@
 import Vulkan.Zero (Zero(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-import Vulkan.Extensions.WSITypes (HINSTANCE)
-import Vulkan.Extensions.WSITypes (HWND)
 import Vulkan.Extensions.Handles (SurfaceKHR(..))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
@@ -212,16 +208,14 @@
     --
     -- @flags@ /must/ be @0@
     flags :: Win32SurfaceCreateFlagsKHR
-  , -- | @hinstance@ is the Win32 'Vulkan.Extensions.WSITypes.HINSTANCE' for the
-    -- window to associate the surface with.
+  , -- | @hinstance@ is the Win32 'HINSTANCE' for the window to associate the
+    -- surface with.
     --
-    -- @hinstance@ /must/ be a valid Win32
-    -- 'Vulkan.Extensions.WSITypes.HINSTANCE'
+    -- @hinstance@ /must/ be a valid Win32 'HINSTANCE'
     hinstance :: HINSTANCE
-  , -- | @hwnd@ is the Win32 'Vulkan.Extensions.WSITypes.HWND' for the window to
-    -- associate the surface with.
+  , -- | @hwnd@ is the Win32 'HWND' for the window to associate the surface with.
     --
-    -- @hwnd@ /must/ be a valid Win32 'Vulkan.Extensions.WSITypes.HWND'
+    -- @hwnd@ /must/ be a valid Win32 'HWND'
     hwnd :: HWND
   }
   deriving (Typeable, Eq)
@@ -309,4 +303,10 @@
 -- No documentation found for TopLevel "VK_KHR_WIN32_SURFACE_EXTENSION_NAME"
 pattern KHR_WIN32_SURFACE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
 pattern KHR_WIN32_SURFACE_EXTENSION_NAME = "VK_KHR_win32_surface"
+
+
+type HINSTANCE = Ptr ()
+
+
+type HWND = Ptr ()
 
diff --git a/src/Vulkan/Extensions/VK_KHR_xcb_surface.hs b/src/Vulkan/Extensions/VK_KHR_xcb_surface.hs
--- a/src/Vulkan/Extensions/VK_KHR_xcb_surface.hs
+++ b/src/Vulkan/Extensions/VK_KHR_xcb_surface.hs
@@ -7,10 +7,10 @@
                                              , pattern KHR_XCB_SURFACE_SPEC_VERSION
                                              , KHR_XCB_SURFACE_EXTENSION_NAME
                                              , pattern KHR_XCB_SURFACE_EXTENSION_NAME
-                                             , SurfaceKHR(..)
                                              , Xcb_visualid_t
                                              , Xcb_window_t
                                              , Xcb_connection_t
+                                             , SurfaceKHR(..)
                                              ) where
 
 import Control.Exception.Base (bracket)
@@ -53,12 +53,12 @@
 import Text.Read.Lex (Lexeme(Ident))
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
-import Vulkan.Core10.BaseType (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
 import Vulkan.NamedType ((:::))
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.BaseType (Bool32)
-import Vulkan.Core10.BaseType (Bool32(..))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32(..))
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Handles (Instance)
@@ -77,17 +77,11 @@
 import Vulkan.CStruct (ToCStruct)
 import Vulkan.CStruct (ToCStruct(..))
 import Vulkan.Exception (VulkanException(..))
-import Vulkan.Extensions.WSITypes (Xcb_connection_t)
-import Vulkan.Extensions.WSITypes (Xcb_visualid_t)
-import Vulkan.Extensions.WSITypes (Xcb_window_t)
 import Vulkan.Zero (Zero)
 import Vulkan.Zero (Zero(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
 import Vulkan.Extensions.Handles (SurfaceKHR(..))
-import Vulkan.Extensions.WSITypes (Xcb_connection_t)
-import Vulkan.Extensions.WSITypes (Xcb_visualid_t)
-import Vulkan.Extensions.WSITypes (Xcb_window_t)
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -276,7 +270,16 @@
            zero
 
 
--- No documentation found for TopLevel "VkXcbSurfaceCreateFlagsKHR"
+-- | VkXcbSurfaceCreateFlagsKHR - Reserved for future use
+--
+-- = Description
+--
+-- 'XcbSurfaceCreateFlagsKHR' is a bitmask type for setting a mask, but is
+-- currently reserved for future use.
+--
+-- = See Also
+--
+-- 'XcbSurfaceCreateInfoKHR'
 newtype XcbSurfaceCreateFlagsKHR = XcbSurfaceCreateFlagsKHR Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits)
 
@@ -307,4 +310,13 @@
 -- No documentation found for TopLevel "VK_KHR_XCB_SURFACE_EXTENSION_NAME"
 pattern KHR_XCB_SURFACE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
 pattern KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface"
+
+
+type Xcb_visualid_t = Word32
+
+
+type Xcb_window_t = Word32
+
+
+data Xcb_connection_t
 
diff --git a/src/Vulkan/Extensions/VK_KHR_xcb_surface.hs-boot b/src/Vulkan/Extensions/VK_KHR_xcb_surface.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_xcb_surface.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_xcb_surface.hs-boot
@@ -1,6 +1,10 @@
 {-# language CPP #-}
-module Vulkan.Extensions.VK_KHR_xcb_surface  (XcbSurfaceCreateInfoKHR) where
+module Vulkan.Extensions.VK_KHR_xcb_surface  ( XcbSurfaceCreateInfoKHR
+                                             , Xcb_connection_t
+                                             , Xcb_visualid_t
+                                             ) where
 
+import Data.Word (Word32)
 import Data.Kind (Type)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (ToCStruct)
@@ -10,4 +14,10 @@
 instance Show XcbSurfaceCreateInfoKHR
 
 instance FromCStruct XcbSurfaceCreateInfoKHR
+
+
+data Xcb_connection_t
+
+
+type Xcb_visualid_t = Word32
 
diff --git a/src/Vulkan/Extensions/VK_KHR_xlib_surface.hs b/src/Vulkan/Extensions/VK_KHR_xlib_surface.hs
--- a/src/Vulkan/Extensions/VK_KHR_xlib_surface.hs
+++ b/src/Vulkan/Extensions/VK_KHR_xlib_surface.hs
@@ -7,10 +7,10 @@
                                               , pattern KHR_XLIB_SURFACE_SPEC_VERSION
                                               , KHR_XLIB_SURFACE_EXTENSION_NAME
                                               , pattern KHR_XLIB_SURFACE_EXTENSION_NAME
-                                              , SurfaceKHR(..)
                                               , Display
                                               , VisualID
                                               , Window
+                                              , SurfaceKHR(..)
                                               ) where
 
 import Control.Exception.Base (bracket)
@@ -50,16 +50,16 @@
 import Foreign.Ptr (Ptr)
 import GHC.Read (Read(readPrec))
 import Data.Word (Word32)
+import Data.Word (Word64)
 import Text.Read.Lex (Lexeme(Ident))
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
-import Vulkan.Core10.BaseType (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
 import Vulkan.NamedType ((:::))
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.BaseType (Bool32)
-import Vulkan.Core10.BaseType (Bool32(..))
-import Vulkan.Extensions.WSITypes (Display)
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32(..))
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Handles (Instance)
@@ -77,17 +77,12 @@
 import Vulkan.Extensions.Handles (SurfaceKHR(..))
 import Vulkan.CStruct (ToCStruct)
 import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Extensions.WSITypes (VisualID)
 import Vulkan.Exception (VulkanException(..))
-import Vulkan.Extensions.WSITypes (Window)
 import Vulkan.Zero (Zero)
 import Vulkan.Zero (Zero(..))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-import Vulkan.Extensions.WSITypes (Display)
 import Vulkan.Extensions.Handles (SurfaceKHR(..))
-import Vulkan.Extensions.WSITypes (VisualID)
-import Vulkan.Extensions.WSITypes (Window)
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -191,11 +186,9 @@
                                                -- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceQueueFamilyProperties'
                                                -- for the given @physicalDevice@
                                                ("queueFamilyIndex" ::: Word32)
-                                            -> -- | @dpy@ is a pointer to an Xlib 'Vulkan.Extensions.WSITypes.Display'
-                                               -- connection to the server.
+                                            -> -- | @dpy@ is a pointer to an Xlib 'Display' connection to the server.
                                                --
-                                               -- @dpy@ /must/ be a valid pointer to a
-                                               -- 'Vulkan.Extensions.WSITypes.Display' value
+                                               -- @dpy@ /must/ be a valid pointer to a 'Display' value
                                                ("dpy" ::: Ptr Display)
                                             -> -- No documentation found for Nested "vkGetPhysicalDeviceXlibPresentationSupportKHR" "visualID"
                                                VisualID
@@ -223,15 +216,13 @@
     --
     -- @flags@ /must/ be @0@
     flags :: XlibSurfaceCreateFlagsKHR
-  , -- | @dpy@ is a pointer to an Xlib 'Vulkan.Extensions.WSITypes.Display'
-    -- connection to the X server.
+  , -- | @dpy@ is a pointer to an Xlib 'Display' connection to the X server.
     --
-    -- @dpy@ /must/ point to a valid Xlib 'Vulkan.Extensions.WSITypes.Display'
+    -- @dpy@ /must/ point to a valid Xlib 'Display'
     dpy :: Ptr Display
-  , -- | @window@ is an Xlib 'Vulkan.Extensions.WSITypes.Window' to associate the
-    -- surface with.
+  , -- | @window@ is an Xlib 'Window' to associate the surface with.
     --
-    -- @window@ /must/ be a valid Xlib 'Vulkan.Extensions.WSITypes.Window'
+    -- @window@ /must/ be a valid Xlib 'Window'
     window :: Window
   }
   deriving (Typeable, Eq)
@@ -279,7 +270,16 @@
            zero
 
 
--- No documentation found for TopLevel "VkXlibSurfaceCreateFlagsKHR"
+-- | VkXlibSurfaceCreateFlagsKHR - Reserved for future use
+--
+-- = Description
+--
+-- 'XlibSurfaceCreateFlagsKHR' is a bitmask type for setting a mask, but is
+-- currently reserved for future use.
+--
+-- = See Also
+--
+-- 'XlibSurfaceCreateInfoKHR'
 newtype XlibSurfaceCreateFlagsKHR = XlibSurfaceCreateFlagsKHR Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits)
 
@@ -310,4 +310,13 @@
 -- No documentation found for TopLevel "VK_KHR_XLIB_SURFACE_EXTENSION_NAME"
 pattern KHR_XLIB_SURFACE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
 pattern KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface"
+
+
+type Display = Ptr ()
+
+
+type VisualID = Word64
+
+
+type Window = Word64
 
diff --git a/src/Vulkan/Extensions/VK_KHR_xlib_surface.hs-boot b/src/Vulkan/Extensions/VK_KHR_xlib_surface.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_xlib_surface.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_xlib_surface.hs-boot
@@ -1,6 +1,11 @@
 {-# language CPP #-}
-module Vulkan.Extensions.VK_KHR_xlib_surface  (XlibSurfaceCreateInfoKHR) where
+module Vulkan.Extensions.VK_KHR_xlib_surface  ( XlibSurfaceCreateInfoKHR
+                                              , Display
+                                              , VisualID
+                                              ) where
 
+import Foreign.Ptr (Ptr)
+import Data.Word (Word64)
 import Data.Kind (Type)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (ToCStruct)
@@ -10,4 +15,10 @@
 instance Show XlibSurfaceCreateInfoKHR
 
 instance FromCStruct XlibSurfaceCreateInfoKHR
+
+
+type Display = Ptr ()
+
+
+type VisualID = Word64
 
diff --git a/src/Vulkan/Extensions/VK_MVK_ios_surface.hs b/src/Vulkan/Extensions/VK_MVK_ios_surface.hs
--- a/src/Vulkan/Extensions/VK_MVK_ios_surface.hs
+++ b/src/Vulkan/Extensions/VK_MVK_ios_surface.hs
@@ -50,7 +50,7 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Vulkan.NamedType ((:::))
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Handles (Instance)
@@ -156,10 +156,10 @@
     flags :: IOSSurfaceCreateFlagsMVK
   , -- | @pView@ is a reference to a @UIView@ object which will display this
     -- surface. This @UIView@ /must/ be backed by a @CALayer@ instance of type
-    -- 'Vulkan.Extensions.WSITypes.CAMetalLayer'.
+    -- 'Vulkan.Extensions.VK_EXT_metal_surface.CAMetalLayer'.
     --
     -- @pView@ /must/ be a valid @UIView@ and /must/ be backed by a @CALayer@
-    -- instance of type 'Vulkan.Extensions.WSITypes.CAMetalLayer'
+    -- instance of type 'Vulkan.Extensions.VK_EXT_metal_surface.CAMetalLayer'
     view :: Ptr ()
   }
   deriving (Typeable)
@@ -203,7 +203,16 @@
            zero
 
 
--- No documentation found for TopLevel "VkIOSSurfaceCreateFlagsMVK"
+-- | VkIOSSurfaceCreateFlagsMVK - Reserved for future use
+--
+-- = Description
+--
+-- 'IOSSurfaceCreateFlagsMVK' is a bitmask type for setting a mask, but is
+-- currently reserved for future use.
+--
+-- = See Also
+--
+-- 'IOSSurfaceCreateInfoMVK'
 newtype IOSSurfaceCreateFlagsMVK = IOSSurfaceCreateFlagsMVK Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits)
 
diff --git a/src/Vulkan/Extensions/VK_MVK_macos_surface.hs b/src/Vulkan/Extensions/VK_MVK_macos_surface.hs
--- a/src/Vulkan/Extensions/VK_MVK_macos_surface.hs
+++ b/src/Vulkan/Extensions/VK_MVK_macos_surface.hs
@@ -50,7 +50,7 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Vulkan.NamedType ((:::))
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Handles (Instance)
@@ -158,10 +158,10 @@
     flags :: MacOSSurfaceCreateFlagsMVK
   , -- | @pView@ is a reference to a @NSView@ object which will display this
     -- surface. This @NSView@ /must/ be backed by a @CALayer@ instance of type
-    -- 'Vulkan.Extensions.WSITypes.CAMetalLayer'.
+    -- 'Vulkan.Extensions.VK_EXT_metal_surface.CAMetalLayer'.
     --
     -- @pView@ /must/ be a valid @NSView@ and /must/ be backed by a @CALayer@
-    -- instance of type 'Vulkan.Extensions.WSITypes.CAMetalLayer'
+    -- instance of type 'Vulkan.Extensions.VK_EXT_metal_surface.CAMetalLayer'
     view :: Ptr ()
   }
   deriving (Typeable)
@@ -205,7 +205,16 @@
            zero
 
 
--- No documentation found for TopLevel "VkMacOSSurfaceCreateFlagsMVK"
+-- | VkMacOSSurfaceCreateFlagsMVK - Reserved for future use
+--
+-- = Description
+--
+-- 'MacOSSurfaceCreateFlagsMVK' is a bitmask type for setting a mask, but
+-- is currently reserved for future use.
+--
+-- = See Also
+--
+-- 'MacOSSurfaceCreateInfoMVK'
 newtype MacOSSurfaceCreateFlagsMVK = MacOSSurfaceCreateFlagsMVK Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits)
 
diff --git a/src/Vulkan/Extensions/VK_NN_vi_surface.hs b/src/Vulkan/Extensions/VK_NN_vi_surface.hs
--- a/src/Vulkan/Extensions/VK_NN_vi_surface.hs
+++ b/src/Vulkan/Extensions/VK_NN_vi_surface.hs
@@ -50,7 +50,7 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Vulkan.NamedType ((:::))
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Handles (Instance)
@@ -218,7 +218,16 @@
            zero
 
 
--- No documentation found for TopLevel "VkViSurfaceCreateFlagsNN"
+-- | VkViSurfaceCreateFlagsNN - Reserved for future use
+--
+-- = Description
+--
+-- 'ViSurfaceCreateFlagsNN' is a bitmask type for setting a mask, but is
+-- currently reserved for future use.
+--
+-- = See Also
+--
+-- 'ViSurfaceCreateInfoNN'
 newtype ViSurfaceCreateFlagsNN = ViSurfaceCreateFlagsNN Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits)
 
diff --git a/src/Vulkan/Extensions/VK_NVX_image_view_handle.hs b/src/Vulkan/Extensions/VK_NVX_image_view_handle.hs
--- a/src/Vulkan/Extensions/VK_NVX_image_view_handle.hs
+++ b/src/Vulkan/Extensions/VK_NVX_image_view_handle.hs
@@ -37,10 +37,10 @@
 import Vulkan.Core10.Enums.DescriptorType (DescriptorType)
 import Vulkan.Core10.Handles (Device)
 import Vulkan.Core10.Handles (Device(..))
-import Vulkan.Core10.BaseType (DeviceAddress)
+import Vulkan.Core10.FundamentalTypes (DeviceAddress)
 import Vulkan.Dynamic (DeviceCmds(pVkGetImageViewAddressNVX))
 import Vulkan.Dynamic (DeviceCmds(pVkGetImageViewHandleNVX))
-import Vulkan.Core10.BaseType (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
 import Vulkan.Core10.Handles (Device_T)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
@@ -261,8 +261,8 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.DeviceAddress',
--- 'Vulkan.Core10.BaseType.DeviceSize',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'getImageViewAddressNVX'
 data ImageViewAddressPropertiesNVX = ImageViewAddressPropertiesNVX
diff --git a/src/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs b/src/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs
--- a/src/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs
+++ b/src/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs
@@ -18,9 +18,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -48,11 +48,11 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-  { -- | @perViewPositionAllComponents@ is 'Vulkan.Core10.BaseType.TRUE' if the
-    -- implementation supports per-view position values that differ in
+  { -- | @perViewPositionAllComponents@ is 'Vulkan.Core10.FundamentalTypes.TRUE'
+    -- if the implementation supports per-view position values that differ in
     -- components other than the X component.
     perViewPositionAllComponents :: Bool }
   deriving (Typeable, Eq)
diff --git a/src/Vulkan/Extensions/VK_NV_clip_space_w_scaling.hs b/src/Vulkan/Extensions/VK_NV_clip_space_w_scaling.hs
--- a/src/Vulkan/Extensions/VK_NV_clip_space_w_scaling.hs
+++ b/src/Vulkan/Extensions/VK_NV_clip_space_w_scaling.hs
@@ -40,10 +40,10 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
 import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.NamedType ((:::))
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Handles (CommandBuffer)
 import Vulkan.Core10.Handles (CommandBuffer(..))
 import Vulkan.Core10.Handles (CommandBuffer_T)
@@ -198,7 +198,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'ViewportWScalingNV'
 data PipelineViewportWScalingStateCreateInfoNV = PipelineViewportWScalingStateCreateInfoNV
   { -- | @viewportWScalingEnable@ controls whether viewport __W__ scaling is
diff --git a/src/Vulkan/Extensions/VK_NV_compute_shader_derivatives.hs b/src/Vulkan/Extensions/VK_NV_compute_shader_derivatives.hs
--- a/src/Vulkan/Extensions/VK_NV_compute_shader_derivatives.hs
+++ b/src/Vulkan/Extensions/VK_NV_compute_shader_derivatives.hs
@@ -18,9 +18,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -55,7 +55,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceComputeShaderDerivativesFeaturesNV = PhysicalDeviceComputeShaderDerivativesFeaturesNV
   { -- | @computeDerivativeGroupQuads@ indicates that the implementation supports
diff --git a/src/Vulkan/Extensions/VK_NV_cooperative_matrix.hs b/src/Vulkan/Extensions/VK_NV_cooperative_matrix.hs
--- a/src/Vulkan/Extensions/VK_NV_cooperative_matrix.hs
+++ b/src/Vulkan/Extensions/VK_NV_cooperative_matrix.hs
@@ -71,10 +71,10 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
 import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.NamedType ((:::))
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceCooperativeMatrixPropertiesNV))
@@ -194,7 +194,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceCooperativeMatrixFeaturesNV = PhysicalDeviceCooperativeMatrixFeaturesNV
   { -- | @cooperativeMatrix@ indicates that the implementation supports the
diff --git a/src/Vulkan/Extensions/VK_NV_corner_sampled_image.hs b/src/Vulkan/Extensions/VK_NV_corner_sampled_image.hs
--- a/src/Vulkan/Extensions/VK_NV_corner_sampled_image.hs
+++ b/src/Vulkan/Extensions/VK_NV_corner_sampled_image.hs
@@ -18,9 +18,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -50,7 +50,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceCornerSampledImageFeaturesNV = PhysicalDeviceCornerSampledImageFeaturesNV
   { -- | @cornerSampledImage@ specifies whether images can be created with a
diff --git a/src/Vulkan/Extensions/VK_NV_coverage_reduction_mode.hs b/src/Vulkan/Extensions/VK_NV_coverage_reduction_mode.hs
--- a/src/Vulkan/Extensions/VK_NV_coverage_reduction_mode.hs
+++ b/src/Vulkan/Extensions/VK_NV_coverage_reduction_mode.hs
@@ -59,11 +59,11 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
 import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.NamedType ((:::))
-import Vulkan.Core10.BaseType (Bool32)
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV))
@@ -186,7 +186,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceCoverageReductionModeFeaturesNV = PhysicalDeviceCoverageReductionModeFeaturesNV
   { -- | @coverageReductionMode@ indicates whether the implementation supports
diff --git a/src/Vulkan/Extensions/VK_NV_dedicated_allocation.hs b/src/Vulkan/Extensions/VK_NV_dedicated_allocation.hs
--- a/src/Vulkan/Extensions/VK_NV_dedicated_allocation.hs
+++ b/src/Vulkan/Extensions/VK_NV_dedicated_allocation.hs
@@ -20,9 +20,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Handles (Buffer)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
@@ -46,7 +46,7 @@
 --
 -- == Valid Usage
 --
--- -   If @dedicatedAllocation@ is 'Vulkan.Core10.BaseType.TRUE',
+-- -   If @dedicatedAllocation@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
 --     'Vulkan.Core10.Image.ImageCreateInfo'::@flags@ /must/ not include
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT',
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT',
@@ -60,7 +60,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data DedicatedAllocationImageCreateInfoNV = DedicatedAllocationImageCreateInfoNV
   { -- | @dedicatedAllocation@ specifies whether the image will have a dedicated
@@ -111,7 +111,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data DedicatedAllocationBufferCreateInfoNV = DedicatedAllocationBufferCreateInfoNV
   { -- | @dedicatedAllocation@ specifies whether the buffer will have a dedicated
@@ -166,12 +166,12 @@
 -- -   If @image@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the
 --     image /must/ have been created with
 --     'DedicatedAllocationImageCreateInfoNV'::@dedicatedAllocation@ equal
---     to 'Vulkan.Core10.BaseType.TRUE'
+--     to 'Vulkan.Core10.FundamentalTypes.TRUE'
 --
 -- -   If @buffer@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the
 --     buffer /must/ have been created with
 --     'DedicatedAllocationBufferCreateInfoNV'::@dedicatedAllocation@ equal
---     to 'Vulkan.Core10.BaseType.TRUE'
+--     to 'Vulkan.Core10.FundamentalTypes.TRUE'
 --
 -- -   If @image@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
 --     'Vulkan.Core10.Memory.MemoryAllocateInfo'::@allocationSize@ /must/
diff --git a/src/Vulkan/Extensions/VK_NV_dedicated_allocation_image_aliasing.hs b/src/Vulkan/Extensions/VK_NV_dedicated_allocation_image_aliasing.hs
--- a/src/Vulkan/Extensions/VK_NV_dedicated_allocation_image_aliasing.hs
+++ b/src/Vulkan/Extensions/VK_NV_dedicated_allocation_image_aliasing.hs
@@ -18,9 +18,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -52,7 +52,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV
   { -- | @dedicatedAllocationImageAliasing@ indicates that the implementation
diff --git a/src/Vulkan/Extensions/VK_NV_device_diagnostic_checkpoints.hs b/src/Vulkan/Extensions/VK_NV_device_diagnostic_checkpoints.hs
--- a/src/Vulkan/Extensions/VK_NV_device_diagnostic_checkpoints.hs
+++ b/src/Vulkan/Extensions/VK_NV_device_diagnostic_checkpoints.hs
@@ -81,6 +81,8 @@
 --
 -- == Host Synchronization
 --
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
 -- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
 --     @commandBuffer@ was allocated from /must/ be externally synchronized
 --
@@ -233,11 +235,13 @@
 
 -- | VkCheckpointDataNV - return structure for command buffer checkpoint data
 --
--- == Valid Usage (Implicit)
+-- = Description
 --
--- Note that the stages at which a checkpoint marker /can/ be executed are
+-- The stages at which a checkpoint marker /can/ be executed are
 -- implementation-defined and /can/ be queried by calling
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceQueueFamilyProperties2'.
+--
+-- == Valid Usage (Implicit)
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_NV_device_diagnostics_config.hs b/src/Vulkan/Extensions/VK_NV_device_diagnostics_config.hs
--- a/src/Vulkan/Extensions/VK_NV_device_diagnostics_config.hs
+++ b/src/Vulkan/Extensions/VK_NV_device_diagnostics_config.hs
@@ -37,10 +37,10 @@
 import GHC.Read (Read(readPrec))
 import Text.Read.Lex (Lexeme(Ident))
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -73,7 +73,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceDiagnosticsConfigFeaturesNV = PhysicalDeviceDiagnosticsConfigFeaturesNV
   { -- | @diagnosticsConfig@ indicates whether the implementation supports the
diff --git a/src/Vulkan/Extensions/VK_NV_device_generated_commands.hs b/src/Vulkan/Extensions/VK_NV_device_generated_commands.hs
--- a/src/Vulkan/Extensions/VK_NV_device_generated_commands.hs
+++ b/src/Vulkan/Extensions/VK_NV_device_generated_commands.hs
@@ -95,33 +95,33 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
 import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.CStruct.Extends (forgetExtensions)
 import Vulkan.CStruct.Extends (peekSomeCStruct)
 import Vulkan.CStruct.Extends (pokeSomeCStruct)
 import Vulkan.CStruct.Extends (withSomeCStruct)
 import Vulkan.NamedType ((:::))
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.BaseType (Bool32)
-import Vulkan.Core10.BaseType (Bool32(..))
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32(..))
 import Vulkan.Core10.Handles (Buffer)
 import Vulkan.Core10.Handles (CommandBuffer)
 import Vulkan.Core10.Handles (CommandBuffer(..))
 import Vulkan.Core10.Handles (CommandBuffer_T)
 import Vulkan.Core10.Handles (Device)
 import Vulkan.Core10.Handles (Device(..))
-import Vulkan.Core10.BaseType (DeviceAddress)
+import Vulkan.Core10.FundamentalTypes (DeviceAddress)
 import Vulkan.Dynamic (DeviceCmds(pVkCmdBindPipelineShaderGroupNV))
 import Vulkan.Dynamic (DeviceCmds(pVkCmdExecuteGeneratedCommandsNV))
 import Vulkan.Dynamic (DeviceCmds(pVkCmdPreprocessGeneratedCommandsNV))
 import Vulkan.Dynamic (DeviceCmds(pVkCreateIndirectCommandsLayoutNV))
 import Vulkan.Dynamic (DeviceCmds(pVkDestroyIndirectCommandsLayoutNV))
 import Vulkan.Dynamic (DeviceCmds(pVkGetGeneratedCommandsMemoryRequirementsNV))
-import Vulkan.Core10.BaseType (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
 import Vulkan.Core10.Handles (Device_T)
 import Vulkan.CStruct.Extends (Extendss)
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.IndexType (IndexType)
@@ -348,9 +348,9 @@
 -- -   [[VUID-{refpage}-sampleLocationsEnable-02689]] If the bound graphics
 --     pipeline was created with
 --     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
---     set to 'Vulkan.Core10.BaseType.TRUE' and the current subpass has a
---     depth\/stencil attachment, then that attachment /must/ have been
---     created with the
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE' and the current subpass
+--     has a depth\/stencil attachment, then that attachment /must/ have
+--     been created with the
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
 --     bit set
 --
@@ -372,7 +372,7 @@
 --
 -- -   @commandBuffer@ /must/ not be a protected command buffer
 --
--- -   If @isPreprocessed@ is 'Vulkan.Core10.BaseType.TRUE' then
+-- -   If @isPreprocessed@ is 'Vulkan.Core10.FundamentalTypes.TRUE' then
 --     'cmdPreprocessGeneratedCommandsNV' /must/ have already been executed
 --     on the device, using the same @pGeneratedCommandsInfo@ content as
 --     well as the content of the input buffers it references (all except
@@ -426,16 +426,17 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'GeneratedCommandsInfoNV'
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'GeneratedCommandsInfoNV'
 cmdExecuteGeneratedCommandsNV :: forall io
                                . (MonadIO io)
                               => -- | @commandBuffer@ is the command buffer into which the command is
                                  -- recorded.
                                  CommandBuffer
                               -> -- | @isPreprocessed@ represents whether the input data has already been
-                                 -- preprocessed on the device. If it is 'Vulkan.Core10.BaseType.FALSE' this
-                                 -- command will implicitly trigger the preprocessing step, otherwise not.
+                                 -- preprocessed on the device. If it is
+                                 -- 'Vulkan.Core10.FundamentalTypes.FALSE' this command will implicitly
+                                 -- trigger the preprocessing step, otherwise not.
                                  ("isPreprocessed" ::: Bool)
                               -> -- | @pGeneratedCommandsInfo@ is a pointer to an instance of the
                                  -- 'GeneratedCommandsInfoNV' structure containing parameters affecting the
@@ -861,7 +862,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceDeviceGeneratedCommandsFeaturesNV = PhysicalDeviceDeviceGeneratedCommandsFeaturesNV
   { -- | @deviceGeneratedCommands@ indicates whether the implementation supports
@@ -1321,7 +1322,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.DeviceAddress',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
 -- 'Vulkan.Core10.Enums.IndexType.IndexType'
 data BindIndexBufferIndirectCommandNV = BindIndexBufferIndirectCommandNV
   { -- | @bufferAddress@ specifies a physical address of the
@@ -1396,7 +1397,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.DeviceAddress'
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress'
 data BindVertexBufferIndirectCommandNV = BindVertexBufferIndirectCommandNV
   { -- | @bufferAddress@ specifies a physical address of the
     -- 'Vulkan.Core10.Handles.Buffer' used as vertex input binding.
@@ -1521,8 +1522,8 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.BaseType.DeviceSize',
--- 'GeneratedCommandsInfoNV'
+-- 'Vulkan.Core10.Handles.Buffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize', 'GeneratedCommandsInfoNV'
 data IndirectCommandsStreamNV = IndirectCommandsStreamNV
   { -- | @buffer@ specifies the 'Vulkan.Core10.Handles.Buffer' storing the
     -- functional arguments for each sequence. These arguments /can/ be written
@@ -1648,7 +1649,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.IndexType.IndexType',
 -- 'IndirectCommandsLayoutCreateInfoNV', 'IndirectCommandsTokenTypeNV',
 -- 'IndirectStateFlagsNV', 'Vulkan.Core10.Handles.PipelineLayout',
@@ -2065,7 +2066,8 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.BaseType.DeviceSize',
+-- 'Vulkan.Core10.Handles.Buffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV',
 -- 'IndirectCommandsStreamNV', 'Vulkan.Core10.Handles.Pipeline',
 -- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint',
@@ -2093,8 +2095,8 @@
   , -- | @preprocessBuffer@ is the 'Vulkan.Core10.Handles.Buffer' that is used
     -- for preprocessing the input data for execution. If this structure is
     -- used with 'cmdExecuteGeneratedCommandsNV' with its @isPreprocessed@ set
-    -- to 'Vulkan.Core10.BaseType.TRUE', then the preprocessing step is skipped
-    -- and data is only read from this buffer.
+    -- to 'Vulkan.Core10.FundamentalTypes.TRUE', then the preprocessing step is
+    -- skipped and data is only read from this buffer.
     preprocessBuffer :: Buffer
   , -- | @preprocessOffset@ is the byte offset into @preprocessBuffer@ where the
     -- preprocessed data is stored.
@@ -2308,7 +2310,7 @@
 -- that the layout is always used with the manual preprocessing step
 -- through calling 'cmdPreprocessGeneratedCommandsNV' and executed by
 -- 'cmdExecuteGeneratedCommandsNV' with @isPreprocessed@ set to
--- 'Vulkan.Core10.BaseType.TRUE'.
+-- 'Vulkan.Core10.FundamentalTypes.TRUE'.
 pattern INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = IndirectCommandsLayoutUsageFlagBitsNV 0x00000001
 -- | 'INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV' specifies that
 -- the input data for the sequences is not implicitly indexed from
diff --git a/src/Vulkan/Extensions/VK_NV_external_memory_capabilities.hs b/src/Vulkan/Extensions/VK_NV_external_memory_capabilities.hs
--- a/src/Vulkan/Extensions/VK_NV_external_memory_capabilities.hs
+++ b/src/Vulkan/Extensions/VK_NV_external_memory_capabilities.hs
@@ -55,7 +55,7 @@
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
 import Vulkan.NamedType ((:::))
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Core10.Enums.Format (Format)
 import Vulkan.Core10.Enums.Format (Format(..))
 import Vulkan.CStruct (FromCStruct)
diff --git a/src/Vulkan/Extensions/VK_NV_external_memory_win32.hs b/src/Vulkan/Extensions/VK_NV_external_memory_win32.hs
--- a/src/Vulkan/Extensions/VK_NV_external_memory_win32.hs
+++ b/src/Vulkan/Extensions/VK_NV_external_memory_win32.hs
@@ -6,11 +6,11 @@
                                                       , pattern NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION
                                                       , NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME
                                                       , pattern NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME
-                                                      , ExternalMemoryHandleTypeFlagBitsNV(..)
-                                                      , ExternalMemoryHandleTypeFlagsNV
                                                       , HANDLE
                                                       , DWORD
                                                       , SECURITY_ATTRIBUTES
+                                                      , ExternalMemoryHandleTypeFlagBitsNV(..)
+                                                      , ExternalMemoryHandleTypeFlagsNV
                                                       ) where
 
 import Control.Exception.Base (bracket)
@@ -38,9 +38,9 @@
 import GHC.IO.Exception (IOException(..))
 import Foreign.Ptr (FunPtr)
 import Foreign.Ptr (Ptr)
+import Data.Word (Word32)
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
-import Vulkan.Extensions.WSITypes (DWORD)
 import Vulkan.Core10.Handles (Device)
 import Vulkan.Core10.Handles (Device(..))
 import Vulkan.Dynamic (DeviceCmds(pVkGetMemoryWin32HandleNV))
@@ -51,10 +51,8 @@
 import Vulkan.Extensions.VK_NV_external_memory_capabilities (ExternalMemoryHandleTypeFlagsNV)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.Extensions.WSITypes (HANDLE)
 import Vulkan.Core10.Enums.Result (Result)
 import Vulkan.Core10.Enums.Result (Result(..))
-import Vulkan.Extensions.WSITypes (SECURITY_ATTRIBUTES)
 import Vulkan.Core10.Enums.StructureType (StructureType)
 import Vulkan.CStruct (ToCStruct)
 import Vulkan.CStruct (ToCStruct(..))
@@ -63,11 +61,8 @@
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-import Vulkan.Extensions.WSITypes (DWORD)
 import Vulkan.Extensions.VK_NV_external_memory_capabilities (ExternalMemoryHandleTypeFlagBitsNV(..))
 import Vulkan.Extensions.VK_NV_external_memory_capabilities (ExternalMemoryHandleTypeFlagsNV)
-import Vulkan.Extensions.WSITypes (HANDLE)
-import Vulkan.Extensions.WSITypes (SECURITY_ATTRIBUTES)
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -158,8 +153,7 @@
     -- 'Vulkan.Extensions.VK_NV_external_memory_capabilities.ExternalMemoryHandleTypeFlagBitsNV'
     -- values
     handleType :: ExternalMemoryHandleTypeFlagsNV
-  , -- | @handle@ is a Windows 'Vulkan.Extensions.WSITypes.HANDLE' referring to
-    -- the memory.
+  , -- | @handle@ is a Windows 'HANDLE' referring to the memory.
     --
     -- @handle@ /must/ be a valid handle to memory, obtained as specified by
     -- @handleType@
@@ -228,19 +222,16 @@
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV'
 --
 -- -   If @pAttributes@ is not @NULL@, @pAttributes@ /must/ be a valid
---     pointer to a valid 'Vulkan.Extensions.WSITypes.SECURITY_ATTRIBUTES'
---     value
+--     pointer to a valid 'SECURITY_ATTRIBUTES' value
 --
 -- = See Also
 --
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data ExportMemoryWin32HandleInfoNV = ExportMemoryWin32HandleInfoNV
-  { -- | @pAttributes@ is a pointer to a Windows
-    -- 'Vulkan.Extensions.WSITypes.SECURITY_ATTRIBUTES' structure specifying
-    -- security attributes of the handle.
+  { -- | @pAttributes@ is a pointer to a Windows 'SECURITY_ATTRIBUTES' structure
+    -- specifying security attributes of the handle.
     attributes :: Ptr SECURITY_ATTRIBUTES
-  , -- | @dwAccess@ is a 'Vulkan.Extensions.WSITypes.DWORD' specifying access
-    -- rights of the handle.
+  , -- | @dwAccess@ is a 'DWORD' specifying access rights of the handle.
     dwAccess :: DWORD
   }
   deriving (Typeable, Eq)
@@ -295,4 +286,13 @@
 -- No documentation found for TopLevel "VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME"
 pattern NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
 pattern NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME = "VK_NV_external_memory_win32"
+
+
+type HANDLE = Ptr ()
+
+
+type DWORD = Word32
+
+
+data SECURITY_ATTRIBUTES
 
diff --git a/src/Vulkan/Extensions/VK_NV_external_memory_win32.hs-boot b/src/Vulkan/Extensions/VK_NV_external_memory_win32.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_external_memory_win32.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_external_memory_win32.hs-boot
@@ -1,8 +1,10 @@
 {-# language CPP #-}
 module Vulkan.Extensions.VK_NV_external_memory_win32  ( ExportMemoryWin32HandleInfoNV
                                                       , ImportMemoryWin32HandleInfoNV
+                                                      , HANDLE
                                                       ) where
 
+import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (ToCStruct)
@@ -20,4 +22,7 @@
 instance Show ImportMemoryWin32HandleInfoNV
 
 instance FromCStruct ImportMemoryWin32HandleInfoNV
+
+
+type HANDLE = Ptr ()
 
diff --git a/src/Vulkan/Extensions/VK_NV_fragment_coverage_to_color.hs b/src/Vulkan/Extensions/VK_NV_fragment_coverage_to_color.hs
--- a/src/Vulkan/Extensions/VK_NV_fragment_coverage_to_color.hs
+++ b/src/Vulkan/Extensions/VK_NV_fragment_coverage_to_color.hs
@@ -32,10 +32,10 @@
 import Data.Word (Word32)
 import Text.Read.Lex (Lexeme(Ident))
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -49,7 +49,7 @@
 --
 -- = Description
 --
--- If @coverageToColorEnable@ is 'Vulkan.Core10.BaseType.TRUE', the
+-- If @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', the
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask coverage mask>
 -- replaces the first component of the color value corresponding to the
 -- fragment shader output location with @Location@ equal to
@@ -59,14 +59,14 @@
 -- attachment format has more bits than the coverage mask, the high bits of
 -- the sample coverage mask are filled with zeros.
 --
--- If @coverageToColorEnable@ is 'Vulkan.Core10.BaseType.FALSE', these
--- operations are skipped. If this structure is not present, it is as if
--- @coverageToColorEnable@ is 'Vulkan.Core10.BaseType.FALSE'.
+-- If @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.FALSE',
+-- these operations are skipped. If this structure is not present, it is as
+-- if @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.FALSE'.
 --
 -- == Valid Usage
 --
--- -   If @coverageToColorEnable@ is 'Vulkan.Core10.BaseType.TRUE', then
---     the render pass subpass indicated by
+-- -   If @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the render pass subpass indicated by
 --     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
 --     and 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@subpass@
 --     /must/ have a color attachment at the location selected by
@@ -88,7 +88,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'PipelineCoverageToColorStateCreateFlagsNV',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PipelineCoverageToColorStateCreateInfoNV = PipelineCoverageToColorStateCreateInfoNV
diff --git a/src/Vulkan/Extensions/VK_NV_fragment_shader_barycentric.hs b/src/Vulkan/Extensions/VK_NV_fragment_shader_barycentric.hs
--- a/src/Vulkan/Extensions/VK_NV_fragment_shader_barycentric.hs
+++ b/src/Vulkan/Extensions/VK_NV_fragment_shader_barycentric.hs
@@ -18,9 +18,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -55,7 +55,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceFragmentShaderBarycentricFeaturesNV = PhysicalDeviceFragmentShaderBarycentricFeaturesNV
   { -- | @fragmentShaderBarycentric@ indicates that the implementation supports
diff --git a/src/Vulkan/Extensions/VK_NV_framebuffer_mixed_samples.hs b/src/Vulkan/Extensions/VK_NV_framebuffer_mixed_samples.hs
--- a/src/Vulkan/Extensions/VK_NV_framebuffer_mixed_samples.hs
+++ b/src/Vulkan/Extensions/VK_NV_framebuffer_mixed_samples.hs
@@ -54,10 +54,10 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
 import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -71,11 +71,12 @@
 --
 -- = Description
 --
--- If @coverageModulationTableEnable@ is 'Vulkan.Core10.BaseType.FALSE',
--- then for each color sample the associated bits of the fragment’s
--- coverage are counted and divided by the number of associated bits to
--- produce a modulation factor R in the range (0,1] (a value of zero would
--- have been killed due to a color coverage of 0). Specifically:
+-- If @coverageModulationTableEnable@ is
+-- 'Vulkan.Core10.FundamentalTypes.FALSE', then for each color sample the
+-- associated bits of the fragment’s coverage are counted and divided by
+-- the number of associated bits to produce a modulation factor R in the
+-- range (0,1] (a value of zero would have been killed due to a color
+-- coverage of 0). Specifically:
 --
 -- -   N = value of @rasterizationSamples@
 --
@@ -84,9 +85,10 @@
 --
 -- -   R = popcount(associated coverage bits) \/ (N \/ M)
 --
--- If @coverageModulationTableEnable@ is 'Vulkan.Core10.BaseType.TRUE', the
--- value R is computed using a programmable lookup table. The lookup table
--- has N \/ M elements, and the element of the table is selected by:
+-- If @coverageModulationTableEnable@ is
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', the value R is computed using a
+-- programmable lookup table. The lookup table has N \/ M elements, and the
+-- element of the table is selected by:
 --
 -- -   R = @pCoverageModulationTable@[popcount(associated coverage bits)-1]
 --
@@ -116,7 +118,8 @@
 --
 -- == Valid Usage
 --
--- -   If @coverageModulationTableEnable@ is 'Vulkan.Core10.BaseType.TRUE',
+-- -   If @coverageModulationTableEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE',
 --     @coverageModulationTableCount@ /must/ be equal to the number of
 --     rasterization samples divided by the number of color samples in the
 --     subpass
@@ -133,7 +136,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32', 'CoverageModulationModeNV',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32', 'CoverageModulationModeNV',
 -- 'PipelineCoverageModulationStateCreateFlagsNV',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PipelineCoverageModulationStateCreateInfoNV = PipelineCoverageModulationStateCreateInfoNV
diff --git a/src/Vulkan/Extensions/VK_NV_mesh_shader.hs b/src/Vulkan/Extensions/VK_NV_mesh_shader.hs
--- a/src/Vulkan/Extensions/VK_NV_mesh_shader.hs
+++ b/src/Vulkan/Extensions/VK_NV_mesh_shader.hs
@@ -34,11 +34,11 @@
 import Data.Word (Word32)
 import Data.Kind (Type)
 import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.CStruct.Utils (lowerArrayPtr)
 import Vulkan.NamedType ((:::))
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Handles (Buffer)
 import Vulkan.Core10.Handles (Buffer(..))
 import Vulkan.Core10.Handles (CommandBuffer)
@@ -47,7 +47,7 @@
 import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawMeshTasksIndirectCountNV))
 import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawMeshTasksIndirectNV))
 import Vulkan.Dynamic (DeviceCmds(pVkCmdDrawMeshTasksNV))
-import Vulkan.Core10.BaseType (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -236,9 +236,9 @@
 --
 -- -   If the bound graphics pipeline was created with
 --     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
---     set to 'Vulkan.Core10.BaseType.TRUE' and the current subpass has a
---     depth\/stencil attachment, then that attachment /must/ have been
---     created with the
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE' and the current subpass
+--     has a depth\/stencil attachment, then that attachment /must/ have
+--     been created with the
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
 --     bit set
 --
@@ -485,9 +485,9 @@
 --
 -- -   If the bound graphics pipeline was created with
 --     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
---     set to 'Vulkan.Core10.BaseType.TRUE' and the current subpass has a
---     depth\/stencil attachment, then that attachment /must/ have been
---     created with the
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE' and the current subpass
+--     has a depth\/stencil attachment, then that attachment /must/ have
+--     been created with the
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
 --     bit set
 --
@@ -560,7 +560,7 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.BaseType.DeviceSize'
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
 cmdDrawMeshTasksIndirectNV :: forall io
                             . (MonadIO io)
                            => -- | @commandBuffer@ is the command buffer into which the command is
@@ -768,9 +768,9 @@
 --
 -- -   If the bound graphics pipeline was created with
 --     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
---     set to 'Vulkan.Core10.BaseType.TRUE' and the current subpass has a
---     depth\/stencil attachment, then that attachment /must/ have been
---     created with the
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE' and the current subpass
+--     has a depth\/stencil attachment, then that attachment /must/ have
+--     been created with the
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
 --     bit set
 --
@@ -858,7 +858,7 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.BaseType.DeviceSize'
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
 cmdDrawMeshTasksIndirectCountNV :: forall io
                                  . (MonadIO io)
                                 => -- | @commandBuffer@ is the command buffer into which the command is
@@ -905,7 +905,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceMeshShaderFeaturesNV = PhysicalDeviceMeshShaderFeaturesNV
   { -- | @taskShader@ indicates whether the task shader stage is supported.
diff --git a/src/Vulkan/Extensions/VK_NV_ray_tracing.hs b/src/Vulkan/Extensions/VK_NV_ray_tracing.hs
--- a/src/Vulkan/Extensions/VK_NV_ray_tracing.hs
+++ b/src/Vulkan/Extensions/VK_NV_ray_tracing.hs
@@ -107,6 +107,7 @@
                                             , GeometryTypeKHR(..)
                                             , AccelerationStructureMemoryRequirementsTypeKHR(..)
                                             , RayTracingShaderGroupTypeKHR(..)
+                                            , MemoryRequirements2KHR
                                             , SHADER_UNUSED_KHR
                                             , pattern SHADER_UNUSED_KHR
                                             ) where
@@ -153,7 +154,7 @@
 import Data.Vector (Vector)
 import Vulkan.CStruct.Utils (advancePtrBytes)
 import Vulkan.Extensions.VK_KHR_ray_tracing (bindAccelerationStructureMemoryKHR)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.Extensions.VK_KHR_ray_tracing (cmdWriteAccelerationStructuresPropertiesKHR)
 import Vulkan.Extensions.VK_KHR_ray_tracing (destroyAccelerationStructureKHR)
 import Vulkan.CStruct.Extends (forgetExtensions)
@@ -169,8 +170,8 @@
 import Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureTypeKHR)
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
 import Vulkan.Extensions.VK_KHR_ray_tracing (BindAccelerationStructureMemoryInfoKHR)
-import Vulkan.Core10.BaseType (Bool32)
-import Vulkan.Core10.BaseType (Bool32(..))
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32(..))
 import Vulkan.Core10.Handles (Buffer)
 import Vulkan.Core10.Handles (Buffer(..))
 import Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagBitsKHR)
@@ -191,7 +192,7 @@
 import Vulkan.Dynamic (DeviceCmds(pVkCreateRayTracingPipelinesNV))
 import Vulkan.Dynamic (DeviceCmds(pVkGetAccelerationStructureHandleNV))
 import Vulkan.Dynamic (DeviceCmds(pVkGetAccelerationStructureMemoryRequirementsNV))
-import Vulkan.Core10.BaseType (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
 import Vulkan.Core10.Handles (Device_T)
 import Vulkan.CStruct.Extends (Extends)
 import Vulkan.CStruct.Extends (Extendss)
@@ -205,7 +206,7 @@
 import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagsKHR)
 import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryTypeKHR)
 import Vulkan.Core10.Enums.IndexType (IndexType)
-import Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2KHR)
+import Vulkan.Extensions.VK_KHR_get_memory_requirements2 (MemoryRequirements2KHR)
 import Vulkan.CStruct.Extends (PeekChain)
 import Vulkan.CStruct.Extends (PeekChain(..))
 import Vulkan.Core10.Handles (Pipeline)
@@ -323,6 +324,7 @@
 import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagBitsKHR(..))
 import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagsKHR)
 import Vulkan.Extensions.VK_KHR_ray_tracing (GeometryTypeKHR(..))
+import Vulkan.Extensions.VK_KHR_get_memory_requirements2 (MemoryRequirements2KHR)
 import Vulkan.Extensions.VK_KHR_ray_tracing (RayTracingShaderGroupTypeKHR(..))
 import Vulkan.Core10.APIConstants (SHADER_UNUSED_KHR)
 import Vulkan.Extensions.VK_KHR_ray_tracing (TransformMatrixKHR(..))
@@ -478,7 +480,7 @@
 --
 -- 'AccelerationStructureMemoryRequirementsInfoNV',
 -- 'Vulkan.Core10.Handles.Device',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2KHR'
+-- 'Vulkan.Extensions.VK_KHR_get_memory_requirements2.MemoryRequirements2KHR'
 getAccelerationStructureMemoryRequirementsNV :: forall a io
                                               . (Extendss MemoryRequirements2KHR a, PokeChain a, PeekChain a, MonadIO io)
                                              => -- | @device@ is the logical device on which the acceleration structure was
@@ -554,6 +556,8 @@
 --
 -- == Host Synchronization
 --
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
 -- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
 --     @commandBuffer@ was allocated from /must/ be externally synchronized
 --
@@ -620,16 +624,17 @@
 --     'AccelerationStructureInfoNV'::@pGeometries@ for @dst@ has greater
 --     than or equal to the number of vertices, indices, and AABBs
 --
--- -   If @update@ is 'Vulkan.Core10.BaseType.TRUE', @src@ /must/ not be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+-- -   If @update@ is 'Vulkan.Core10.FundamentalTypes.TRUE', @src@ /must/
+--     not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
 --
--- -   If @update@ is 'Vulkan.Core10.BaseType.TRUE', @src@ /must/ have been
---     built before with 'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV'
---     set in 'AccelerationStructureInfoNV'::@flags@
+-- -   If @update@ is 'Vulkan.Core10.FundamentalTypes.TRUE', @src@ /must/
+--     have been built before with
+--     'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV' set in
+--     'AccelerationStructureInfoNV'::@flags@
 --
--- -   If @update@ is 'Vulkan.Core10.BaseType.FALSE', the @size@ member of
---     the 'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure
---     returned from a call to
+-- -   If @update@ is 'Vulkan.Core10.FundamentalTypes.FALSE', the @size@
+--     member of the 'Vulkan.Core10.MemoryManagement.MemoryRequirements'
+--     structure returned from a call to
 --     'getAccelerationStructureMemoryRequirementsNV' with
 --     'AccelerationStructureMemoryRequirementsInfoNV'::@accelerationStructure@
 --     set to @dst@ and
@@ -638,9 +643,9 @@
 --     /must/ be less than or equal to the size of @scratch@ minus
 --     @scratchOffset@
 --
--- -   If @update@ is 'Vulkan.Core10.BaseType.TRUE', the @size@ member of
---     the 'Vulkan.Core10.MemoryManagement.MemoryRequirements' structure
---     returned from a call to
+-- -   If @update@ is 'Vulkan.Core10.FundamentalTypes.TRUE', the @size@
+--     member of the 'Vulkan.Core10.MemoryManagement.MemoryRequirements'
+--     structure returned from a call to
 --     'getAccelerationStructureMemoryRequirementsNV' with
 --     'AccelerationStructureMemoryRequirementsInfoNV'::@accelerationStructure@
 --     set to @dst@ and
@@ -656,16 +661,16 @@
 --     @instanceData@ /must/ have been created with
 --     'BUFFER_USAGE_RAY_TRACING_BIT_NV' usage flag
 --
--- -   If @update@ is 'Vulkan.Core10.BaseType.TRUE', then objects that were
---     previously active /must/ not be made inactive as per
+-- -   If @update@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then objects
+--     that were previously active /must/ not be made inactive as per
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims>
 --
--- -   If @update@ is 'Vulkan.Core10.BaseType.TRUE', then objects that were
---     previously inactive /must/ not be made active as per
+-- -   If @update@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then objects
+--     that were previously inactive /must/ not be made active as per
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims>
 --
--- -   If @update@ is 'Vulkan.Core10.BaseType.TRUE', the @src@ and @dst@
---     objects /must/ either be the same object or not have any
+-- -   If @update@ is 'Vulkan.Core10.FundamentalTypes.TRUE', the @src@ and
+--     @dst@ objects /must/ either be the same object or not have any
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing memory aliasing>
 --
 -- == Valid Usage (Implicit)
@@ -704,6 +709,8 @@
 --
 -- == Host Synchronization
 --
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
 -- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
 --     @commandBuffer@ was allocated from /must/ be externally synchronized
 --
@@ -722,9 +729,9 @@
 --
 -- 'AccelerationStructureInfoNV',
 -- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',
--- 'Vulkan.Core10.BaseType.Bool32', 'Vulkan.Core10.Handles.Buffer',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32', 'Vulkan.Core10.Handles.Buffer',
 -- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.BaseType.DeviceSize'
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
 cmdBuildAccelerationStructureNV :: forall io
                                  . (MonadIO io)
                                 => -- | @commandBuffer@ is the command buffer into which the command will be
@@ -1043,6 +1050,8 @@
 --
 -- == Host Synchronization
 --
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
 -- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
 --     @commandBuffer@ was allocated from /must/ be externally synchronized
 --
@@ -1060,7 +1069,7 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.BaseType.DeviceSize'
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
 cmdTraceRaysNV :: forall io
                 . (MonadIO io)
                => -- | @commandBuffer@ is the command buffer into which the command will be
@@ -1748,7 +1757,7 @@
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'createRayTracingPipelinesNV'
 data RayTracingPipelineCreateInfoNV (es :: [Type]) = RayTracingPipelineCreateInfoNV
-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @flags@ is a bitmask of
     -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'
@@ -1932,7 +1941,8 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.BaseType.DeviceSize',
+-- 'Vulkan.Core10.Handles.Buffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Enums.Format.Format', 'GeometryDataNV',
 -- 'Vulkan.Core10.Enums.IndexType.IndexType',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
@@ -2069,8 +2079,9 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.BaseType.DeviceSize',
--- 'GeometryDataNV', 'Vulkan.Core10.Enums.StructureType.StructureType'
+-- 'Vulkan.Core10.Handles.Buffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize', 'GeometryDataNV',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data GeometryAABBNV = GeometryAABBNV
   { -- | @aabbData@ is the buffer containing axis-aligned bounding box data.
     aabbData :: Buffer
@@ -2286,9 +2297,6 @@
 --     @geometryType@ member of each geometry in @pGeometries@ /must/ be
 --     the same
 --
--- -   @flags@ /must/ be a valid combination of
---     'BuildAccelerationStructureFlagBitsNV' values
---
 -- -   If @flags@ has the
 --     'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV' bit set,
 --     then it /must/ not have the
@@ -2310,7 +2318,8 @@
 --
 -- -   @type@ /must/ be a valid 'AccelerationStructureTypeNV' value
 --
--- -   @flags@ /must/ be @0@
+-- -   @flags@ /must/ be a valid combination of
+--     'BuildAccelerationStructureFlagBitsNV' values
 --
 -- -   If @geometryCount@ is not @0@, @pGeometries@ /must/ be a valid
 --     pointer to an array of @geometryCount@ valid 'GeometryNV' structures
@@ -2404,7 +2413,8 @@
 --
 -- = See Also
 --
--- 'AccelerationStructureInfoNV', 'Vulkan.Core10.BaseType.DeviceSize',
+-- 'AccelerationStructureInfoNV',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'createAccelerationStructureNV'
 data AccelerationStructureCreateInfoNV = AccelerationStructureCreateInfoNV
diff --git a/src/Vulkan/Extensions/VK_NV_representative_fragment_test.hs b/src/Vulkan/Extensions/VK_NV_representative_fragment_test.hs
--- a/src/Vulkan/Extensions/VK_NV_representative_fragment_test.hs
+++ b/src/Vulkan/Extensions/VK_NV_representative_fragment_test.hs
@@ -19,9 +19,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -53,7 +53,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceRepresentativeFragmentTestFeaturesNV = PhysicalDeviceRepresentativeFragmentTestFeaturesNV
   { -- | @representativeFragmentTest@ indicates whether the implementation
@@ -104,8 +104,8 @@
 -- = Description
 --
 -- If this structure is not present, @representativeFragmentTestEnable@ is
--- considered to be 'Vulkan.Core10.BaseType.FALSE', and the representative
--- fragment test is disabled.
+-- considered to be 'Vulkan.Core10.FundamentalTypes.FALSE', and the
+-- representative fragment test is disabled.
 --
 -- If
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-fragment-earlytest early fragment tests>
@@ -116,7 +116,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PipelineRepresentativeFragmentTestStateCreateInfoNV = PipelineRepresentativeFragmentTestStateCreateInfoNV
   { -- | @representativeFragmentTestEnable@ controls whether the representative
diff --git a/src/Vulkan/Extensions/VK_NV_scissor_exclusive.hs b/src/Vulkan/Extensions/VK_NV_scissor_exclusive.hs
--- a/src/Vulkan/Extensions/VK_NV_scissor_exclusive.hs
+++ b/src/Vulkan/Extensions/VK_NV_scissor_exclusive.hs
@@ -20,7 +20,6 @@
 import Data.Vector (generateM)
 import qualified Data.Vector (imapM_)
 import qualified Data.Vector (length)
-import qualified Data.Vector (null)
 import Control.Monad.IO.Class (MonadIO)
 import Data.String (IsString)
 import Data.Typeable (Typeable)
@@ -38,17 +37,17 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
 import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.NamedType ((:::))
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Handles (CommandBuffer)
 import Vulkan.Core10.Handles (CommandBuffer(..))
 import Vulkan.Core10.Handles (CommandBuffer_T)
 import Vulkan.Dynamic (DeviceCmds(pVkCmdSetExclusiveScissorNV))
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.Core10.CommandBufferBuilding (Rect2D)
+import Vulkan.Core10.FundamentalTypes (Rect2D)
 import Vulkan.Core10.Enums.StructureType (StructureType)
 import Vulkan.CStruct (ToCStruct)
 import Vulkan.CStruct (ToCStruct(..))
@@ -116,7 +115,7 @@
 --     'Vulkan.Core10.Handles.CommandBuffer' handle
 --
 -- -   @pExclusiveScissors@ /must/ be a valid pointer to an array of
---     @exclusiveScissorCount@ 'Vulkan.Core10.CommandBufferBuilding.Rect2D'
+--     @exclusiveScissorCount@ 'Vulkan.Core10.FundamentalTypes.Rect2D'
 --     structures
 --
 -- -   @commandBuffer@ /must/ be in the
@@ -148,7 +147,7 @@
 -- = See Also
 --
 -- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.CommandBufferBuilding.Rect2D'
+-- 'Vulkan.Core10.FundamentalTypes.Rect2D'
 cmdSetExclusiveScissorNV :: forall io
                           . (MonadIO io)
                          => -- | @commandBuffer@ is the command buffer into which the command will be
@@ -158,8 +157,8 @@
                             -- rectangle whose state is updated by the command.
                             ("firstExclusiveScissor" ::: Word32)
                          -> -- | @pExclusiveScissors@ is a pointer to an array of
-                            -- 'Vulkan.Core10.CommandBufferBuilding.Rect2D' structures defining
-                            -- exclusive scissor rectangles.
+                            -- 'Vulkan.Core10.FundamentalTypes.Rect2D' structures defining exclusive
+                            -- scissor rectangles.
                             ("exclusiveScissors" ::: Vector Rect2D)
                          -> io ()
 cmdSetExclusiveScissorNV commandBuffer firstExclusiveScissor exclusiveScissors = liftIO . evalContT $ do
@@ -199,7 +198,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceExclusiveScissorFeaturesNV = PhysicalDeviceExclusiveScissorFeaturesNV
   { -- | @exclusiveScissor@ indicates that the implementation supports the
@@ -272,34 +271,20 @@
 --     @viewportCount@ member of
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'
 --
--- -   If no element of the @pDynamicStates@ member of @pDynamicState@ is
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'
---     and @exclusiveScissorCount@ is not @0@, @pExclusiveScissors@ /must/
---     be a valid pointer to an array of @exclusiveScissorCount@
---     'Vulkan.Core10.CommandBufferBuilding.Rect2D' structures
---
 -- == Valid Usage (Implicit)
 --
 -- -   @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV'
 --
--- -   If @exclusiveScissorCount@ is not @0@, and @pExclusiveScissors@ is
---     not @NULL@, @pExclusiveScissors@ /must/ be a valid pointer to an
---     array of @exclusiveScissorCount@
---     'Vulkan.Core10.CommandBufferBuilding.Rect2D' structures
---
 -- = See Also
 --
--- 'Vulkan.Core10.CommandBufferBuilding.Rect2D',
+-- 'Vulkan.Core10.FundamentalTypes.Rect2D',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PipelineViewportExclusiveScissorStateCreateInfoNV = PipelineViewportExclusiveScissorStateCreateInfoNV
-  { -- | @exclusiveScissorCount@ is the number of exclusive scissor rectangles.
-    exclusiveScissorCount :: Word32
-  , -- | @pExclusiveScissors@ is a pointer to an array of
-    -- 'Vulkan.Core10.CommandBufferBuilding.Rect2D' structures defining
-    -- exclusive scissor rectangles.
-    exclusiveScissors :: Vector Rect2D
-  }
+  { -- | @pExclusiveScissors@ is a pointer to an array of
+    -- 'Vulkan.Core10.FundamentalTypes.Rect2D' structures defining exclusive
+    -- scissor rectangles.
+    exclusiveScissors :: Vector Rect2D }
   deriving (Typeable)
 #if defined(GENERIC_INSTANCES)
 deriving instance Generic (PipelineViewportExclusiveScissorStateCreateInfoNV)
@@ -311,41 +296,31 @@
   pokeCStruct p PipelineViewportExclusiveScissorStateCreateInfoNV{..} f = evalContT $ do
     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV)
     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    let pExclusiveScissorsLength = Data.Vector.length $ (exclusiveScissors)
-    exclusiveScissorCount'' <- lift $ if (exclusiveScissorCount) == 0
-      then pure $ fromIntegral pExclusiveScissorsLength
-      else do
-        unless (fromIntegral pExclusiveScissorsLength == (exclusiveScissorCount) || pExclusiveScissorsLength == 0) $
-          throwIO $ IOError Nothing InvalidArgument "" "pExclusiveScissors must be empty or have 'exclusiveScissorCount' elements" Nothing Nothing
-        pure (exclusiveScissorCount)
-    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (exclusiveScissorCount'')
-    pExclusiveScissors'' <- if Data.Vector.null (exclusiveScissors)
-      then pure nullPtr
-      else do
-        pPExclusiveScissors <- ContT $ allocaBytesAligned @Rect2D (((Data.Vector.length (exclusiveScissors))) * 16) 4
-        Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPExclusiveScissors `plusPtr` (16 * (i)) :: Ptr Rect2D) (e) . ($ ())) ((exclusiveScissors))
-        pure $ pPExclusiveScissors
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Rect2D))) pExclusiveScissors''
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (exclusiveScissors)) :: Word32))
+    pPExclusiveScissors' <- ContT $ allocaBytesAligned @Rect2D ((Data.Vector.length (exclusiveScissors)) * 16) 4
+    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPExclusiveScissors' `plusPtr` (16 * (i)) :: Ptr Rect2D) (e) . ($ ())) (exclusiveScissors)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Rect2D))) (pPExclusiveScissors')
     lift $ f
   cStructSize = 32
   cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    f
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    pPExclusiveScissors' <- ContT $ allocaBytesAligned @Rect2D ((Data.Vector.length (mempty)) * 16) 4
+    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPExclusiveScissors' `plusPtr` (16 * (i)) :: Ptr Rect2D) (e) . ($ ())) (mempty)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Rect2D))) (pPExclusiveScissors')
+    lift $ f
 
 instance FromCStruct PipelineViewportExclusiveScissorStateCreateInfoNV where
   peekCStruct p = do
     exclusiveScissorCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
     pExclusiveScissors <- peek @(Ptr Rect2D) ((p `plusPtr` 24 :: Ptr (Ptr Rect2D)))
-    let pExclusiveScissorsLength = if pExclusiveScissors == nullPtr then 0 else (fromIntegral exclusiveScissorCount)
-    pExclusiveScissors' <- generateM pExclusiveScissorsLength (\i -> peekCStruct @Rect2D ((pExclusiveScissors `advancePtrBytes` (16 * (i)) :: Ptr Rect2D)))
+    pExclusiveScissors' <- generateM (fromIntegral exclusiveScissorCount) (\i -> peekCStruct @Rect2D ((pExclusiveScissors `advancePtrBytes` (16 * (i)) :: Ptr Rect2D)))
     pure $ PipelineViewportExclusiveScissorStateCreateInfoNV
-             exclusiveScissorCount pExclusiveScissors'
+             pExclusiveScissors'
 
 instance Zero PipelineViewportExclusiveScissorStateCreateInfoNV where
   zero = PipelineViewportExclusiveScissorStateCreateInfoNV
-           zero
            mempty
 
 
diff --git a/src/Vulkan/Extensions/VK_NV_shader_image_footprint.hs b/src/Vulkan/Extensions/VK_NV_shader_image_footprint.hs
--- a/src/Vulkan/Extensions/VK_NV_shader_image_footprint.hs
+++ b/src/Vulkan/Extensions/VK_NV_shader_image_footprint.hs
@@ -18,9 +18,9 @@
 import GHC.Generics (Generic)
 import Foreign.Ptr (Ptr)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -50,7 +50,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceShaderImageFootprintFeaturesNV = PhysicalDeviceShaderImageFootprintFeaturesNV
   { -- | @imageFootprint@ specifies whether the implementation supports the
diff --git a/src/Vulkan/Extensions/VK_NV_shader_sm_builtins.hs b/src/Vulkan/Extensions/VK_NV_shader_sm_builtins.hs
--- a/src/Vulkan/Extensions/VK_NV_shader_sm_builtins.hs
+++ b/src/Vulkan/Extensions/VK_NV_shader_sm_builtins.hs
@@ -20,9 +20,9 @@
 import Foreign.Ptr (Ptr)
 import Data.Word (Word32)
 import Data.Kind (Type)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
@@ -122,7 +122,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceShaderSMBuiltinsFeaturesNV = PhysicalDeviceShaderSMBuiltinsFeaturesNV
   { -- | @shaderSMBuiltins@ indicates whether the implementation supports the
diff --git a/src/Vulkan/Extensions/VK_NV_shading_rate_image.hs b/src/Vulkan/Extensions/VK_NV_shading_rate_image.hs
--- a/src/Vulkan/Extensions/VK_NV_shading_rate_image.hs
+++ b/src/Vulkan/Extensions/VK_NV_shading_rate_image.hs
@@ -56,7 +56,6 @@
 import Data.Vector (generateM)
 import qualified Data.Vector (imapM_)
 import qualified Data.Vector (length)
-import qualified Data.Vector (null)
 import Control.Monad.IO.Class (MonadIO)
 import Data.String (IsString)
 import Data.Typeable (Typeable)
@@ -77,17 +76,17 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
 import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.BaseType (bool32ToBool)
-import Vulkan.Core10.BaseType (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.NamedType ((:::))
-import Vulkan.Core10.BaseType (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Handles (CommandBuffer)
 import Vulkan.Core10.Handles (CommandBuffer(..))
 import Vulkan.Core10.Handles (CommandBuffer_T)
 import Vulkan.Dynamic (DeviceCmds(pVkCmdBindShadingRateImageNV))
 import Vulkan.Dynamic (DeviceCmds(pVkCmdSetCoarseSampleOrderNV))
 import Vulkan.Dynamic (DeviceCmds(pVkCmdSetViewportShadingRatePaletteNV))
-import Vulkan.Core10.SharedTypes (Extent2D)
+import Vulkan.Core10.FundamentalTypes (Extent2D)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.ImageLayout (ImageLayout)
@@ -450,8 +449,8 @@
 -- = Description
 --
 -- If this structure is not present, @shadingRateImageEnable@ is considered
--- to be 'Vulkan.Core10.BaseType.FALSE', and the shading rate image and
--- palettes are not used.
+-- to be 'Vulkan.Core10.FundamentalTypes.FALSE', and the shading rate image
+-- and palettes are not used.
 --
 -- == Valid Usage
 --
@@ -462,35 +461,26 @@
 -- -   @viewportCount@ /must/ be less than or equal to
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@
 --
--- -   If @shadingRateImageEnable@ is 'Vulkan.Core10.BaseType.TRUE',
---     @viewportCount@ /must/ be equal to the @viewportCount@ member of
+-- -   If @shadingRateImageEnable@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', @viewportCount@ /must/ be
+--     equal to the @viewportCount@ member of
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'
 --
--- -   If no element of the @pDynamicStates@ member of @pDynamicState@ is
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV',
---     @pShadingRatePalettes@ /must/ be a valid pointer to an array of
---     @viewportCount@ 'ShadingRatePaletteNV' structures
---
 -- == Valid Usage (Implicit)
 --
 -- -   @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV'
 --
--- -   If @viewportCount@ is not @0@, and @pShadingRatePalettes@ is not
---     @NULL@, @pShadingRatePalettes@ /must/ be a valid pointer to an array
---     of @viewportCount@ valid 'ShadingRatePaletteNV' structures
+-- -   @viewportCount@ /must/ be greater than @0@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32', 'ShadingRatePaletteNV',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32', 'ShadingRatePaletteNV',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PipelineViewportShadingRateImageStateCreateInfoNV = PipelineViewportShadingRateImageStateCreateInfoNV
   { -- | @shadingRateImageEnable@ specifies whether shading rate image and
     -- palettes are used during rasterization.
     shadingRateImageEnable :: Bool
-  , -- | @viewportCount@ specifies the number of per-viewport palettes used to
-    -- translate values stored in shading rate images.
-    viewportCount :: Word32
   , -- | @pShadingRatePalettes@ is a pointer to an array of
     -- 'ShadingRatePaletteNV' structures defining the palette for each
     -- viewport. If the shading rate palette state is dynamic, this member is
@@ -509,44 +499,34 @@
     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV)
     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
     lift $ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shadingRateImageEnable))
-    let pShadingRatePalettesLength = Data.Vector.length $ (shadingRatePalettes)
-    viewportCount'' <- lift $ if (viewportCount) == 0
-      then pure $ fromIntegral pShadingRatePalettesLength
-      else do
-        unless (fromIntegral pShadingRatePalettesLength == (viewportCount) || pShadingRatePalettesLength == 0) $
-          throwIO $ IOError Nothing InvalidArgument "" "pShadingRatePalettes must be empty or have 'viewportCount' elements" Nothing Nothing
-        pure (viewportCount)
-    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (viewportCount'')
-    pShadingRatePalettes'' <- if Data.Vector.null (shadingRatePalettes)
-      then pure nullPtr
-      else do
-        pPShadingRatePalettes <- ContT $ allocaBytesAligned @ShadingRatePaletteNV (((Data.Vector.length (shadingRatePalettes))) * 16) 8
-        Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPShadingRatePalettes `plusPtr` (16 * (i)) :: Ptr ShadingRatePaletteNV) (e) . ($ ())) ((shadingRatePalettes))
-        pure $ pPShadingRatePalettes
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ShadingRatePaletteNV))) pShadingRatePalettes''
+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (shadingRatePalettes)) :: Word32))
+    pPShadingRatePalettes' <- ContT $ allocaBytesAligned @ShadingRatePaletteNV ((Data.Vector.length (shadingRatePalettes)) * 16) 8
+    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPShadingRatePalettes' `plusPtr` (16 * (i)) :: Ptr ShadingRatePaletteNV) (e) . ($ ())) (shadingRatePalettes)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ShadingRatePaletteNV))) (pPShadingRatePalettes')
     lift $ f
   cStructSize = 32
   cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    pPShadingRatePalettes' <- ContT $ allocaBytesAligned @ShadingRatePaletteNV ((Data.Vector.length (mempty)) * 16) 8
+    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPShadingRatePalettes' `plusPtr` (16 * (i)) :: Ptr ShadingRatePaletteNV) (e) . ($ ())) (mempty)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ShadingRatePaletteNV))) (pPShadingRatePalettes')
+    lift $ f
 
 instance FromCStruct PipelineViewportShadingRateImageStateCreateInfoNV where
   peekCStruct p = do
     shadingRateImageEnable <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
     viewportCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
     pShadingRatePalettes <- peek @(Ptr ShadingRatePaletteNV) ((p `plusPtr` 24 :: Ptr (Ptr ShadingRatePaletteNV)))
-    let pShadingRatePalettesLength = if pShadingRatePalettes == nullPtr then 0 else (fromIntegral viewportCount)
-    pShadingRatePalettes' <- generateM pShadingRatePalettesLength (\i -> peekCStruct @ShadingRatePaletteNV ((pShadingRatePalettes `advancePtrBytes` (16 * (i)) :: Ptr ShadingRatePaletteNV)))
+    pShadingRatePalettes' <- generateM (fromIntegral viewportCount) (\i -> peekCStruct @ShadingRatePaletteNV ((pShadingRatePalettes `advancePtrBytes` (16 * (i)) :: Ptr ShadingRatePaletteNV)))
     pure $ PipelineViewportShadingRateImageStateCreateInfoNV
-             (bool32ToBool shadingRateImageEnable) viewportCount pShadingRatePalettes'
+             (bool32ToBool shadingRateImageEnable) pShadingRatePalettes'
 
 instance Zero PipelineViewportShadingRateImageStateCreateInfoNV where
   zero = PipelineViewportShadingRateImageStateCreateInfoNV
            zero
-           zero
            mempty
 
 
@@ -576,7 +556,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.BaseType.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceShadingRateImageFeaturesNV = PhysicalDeviceShadingRateImageFeaturesNV
   { -- | @shadingRateImage@ indicates that the implementation supports the use of
@@ -653,7 +633,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.SharedTypes.Extent2D',
+-- 'Vulkan.Core10.FundamentalTypes.Extent2D',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceShadingRateImagePropertiesNV = PhysicalDeviceShadingRateImagePropertiesNV
   { -- | @shadingRateTexelSize@ indicates the width and height of the portion of
diff --git a/src/Vulkan/Extensions/VK_NV_viewport_swizzle.hs b/src/Vulkan/Extensions/VK_NV_viewport_swizzle.hs
--- a/src/Vulkan/Extensions/VK_NV_viewport_swizzle.hs
+++ b/src/Vulkan/Extensions/VK_NV_viewport_swizzle.hs
@@ -53,7 +53,7 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Data.Vector (Vector)
 import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.BaseType (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
diff --git a/src/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs b/src/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs
--- a/src/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs
+++ b/src/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs
@@ -26,7 +26,7 @@
 import Control.Monad.Trans.Cont (ContT(..))
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.Core10.CommandBufferBuilding (Rect2D)
+import Vulkan.Core10.FundamentalTypes (Rect2D)
 import Vulkan.Core10.Enums.StructureType (StructureType)
 import Vulkan.Extensions.VK_KHR_surface (SurfaceTransformFlagBitsKHR)
 import Vulkan.CStruct (ToCStruct)
@@ -121,7 +121,7 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.CommandBufferBuilding.Rect2D',
+-- 'Vulkan.Core10.FundamentalTypes.Rect2D',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'Vulkan.Extensions.VK_KHR_surface.SurfaceTransformFlagBitsKHR'
 data CommandBufferInheritanceRenderPassTransformInfoQCOM = CommandBufferInheritanceRenderPassTransformInfoQCOM
diff --git a/src/Vulkan/Extensions/WSITypes.hs b/src/Vulkan/Extensions/WSITypes.hs
deleted file mode 100644
--- a/src/Vulkan/Extensions/WSITypes.hs
+++ /dev/null
@@ -1,95 +0,0 @@
-{-# language CPP #-}
-module Vulkan.Extensions.WSITypes  ( HINSTANCE
-                                   , HWND
-                                   , HMONITOR
-                                   , HANDLE
-                                   , DWORD
-                                   , LPCWSTR
-                                   , Display
-                                   , VisualID
-                                   , Window
-                                   , RROutput
-                                   , Xcb_visualid_t
-                                   , Xcb_window_t
-                                   , Zx_handle_t
-                                   , GgpStreamDescriptor
-                                   , GgpFrameToken
-                                   , SECURITY_ATTRIBUTES
-                                   , Xcb_connection_t
-                                   , Wl_display
-                                   , Wl_surface
-                                   , CAMetalLayer
-                                   , AHardwareBuffer
-                                   , ANativeWindow
-                                   ) where
-
-import Foreign.C.Types (CWchar)
-import Foreign.Ptr (Ptr)
-import Data.Word (Word32)
-import Data.Word (Word64)
-
-type HINSTANCE = Ptr ()
-
-
-type HWND = Ptr ()
-
-
-type HMONITOR = Ptr ()
-
-
-type HANDLE = Ptr ()
-
-
-type DWORD = Word32
-
-
-type LPCWSTR = Ptr CWchar
-
-
-type Display = Ptr ()
-
-
-type VisualID = Word64
-
-
-type Window = Word64
-
-
-type RROutput = Word64
-
-
-type Xcb_visualid_t = Word32
-
-
-type Xcb_window_t = Word32
-
-
-type Zx_handle_t = Word32
-
-
-type GgpStreamDescriptor = Word32
-
-
-type GgpFrameToken = Word32
-
-
-data SECURITY_ATTRIBUTES
-
-
-data Xcb_connection_t
-
-
-data Wl_display
-
-
-data Wl_surface
-
-
-data CAMetalLayer
-
-
-data AHardwareBuffer
-
-
-data ANativeWindow
-
diff --git a/src/Vulkan/Extensions/WSITypes.hs-boot b/src/Vulkan/Extensions/WSITypes.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/WSITypes.hs-boot
+++ /dev/null
@@ -1,38 +0,0 @@
-{-# language CPP #-}
-module Vulkan.Extensions.WSITypes  ( AHardwareBuffer
-                                   , Display
-                                   , HANDLE
-                                   , RROutput
-                                   , VisualID
-                                   , Wl_display
-                                   , Xcb_connection_t
-                                   , Xcb_visualid_t
-                                   ) where
-
-import Foreign.Ptr (Ptr)
-import Data.Word (Word32)
-import Data.Word (Word64)
-
-data AHardwareBuffer
-
-
-type Display = Ptr ()
-
-
-type HANDLE = Ptr ()
-
-
-type RROutput = Word64
-
-
-type VisualID = Word64
-
-
-data Wl_display
-
-
-data Xcb_connection_t
-
-
-type Xcb_visualid_t = Word32
-
diff --git a/src/Vulkan/Version.hs b/src/Vulkan/Version.hs
--- a/src/Vulkan/Version.hs
+++ b/src/Vulkan/Version.hs
@@ -14,11 +14,11 @@
 import Data.Word (Word32)
 
 pattern HEADER_VERSION :: Word32
-pattern HEADER_VERSION = 141
+pattern HEADER_VERSION = 142
 
 
 pattern HEADER_VERSION_COMPLETE :: Word32
-pattern HEADER_VERSION_COMPLETE = MAKE_VERSION 1 2 141
+pattern HEADER_VERSION_COMPLETE = MAKE_VERSION 1 2 142
 
 
 pattern MAKE_VERSION :: Word32 -> Word32 -> Word32 -> Word32
diff --git a/vulkan.cabal b/vulkan.cabal
--- a/vulkan.cabal
+++ b/vulkan.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 48ce38532a89b6c6cdf6569e0ba1f5f1bf9b948fddc0511cef156c874a05cd2f
+-- hash: 3c77f5fce0e982c3b81e2fe5ff6a0d28fbee1c6c2a168885b723ceda541b2b9a
 
 name:           vulkan
-version:        3.3.1
+version:        3.4
 synopsis:       Bindings to the Vulkan graphics API.
 category:       Graphics
 homepage:       https://github.com/expipiplus1/vulkan#readme
@@ -40,7 +40,6 @@
       Vulkan.Core10
       Vulkan.Core10.AllocationCallbacks
       Vulkan.Core10.APIConstants
-      Vulkan.Core10.BaseType
       Vulkan.Core10.Buffer
       Vulkan.Core10.BufferView
       Vulkan.Core10.CommandBuffer
@@ -149,6 +148,7 @@
       Vulkan.Core10.ExtensionDiscovery
       Vulkan.Core10.Fence
       Vulkan.Core10.FuncPointers
+      Vulkan.Core10.FundamentalTypes
       Vulkan.Core10.Handles
       Vulkan.Core10.Image
       Vulkan.Core10.ImageView
@@ -165,7 +165,6 @@
       Vulkan.Core10.QueueSemaphore
       Vulkan.Core10.Sampler
       Vulkan.Core10.Shader
-      Vulkan.Core10.SharedTypes
       Vulkan.Core10.SparseResourceMemoryManagement
       Vulkan.Core11
       Vulkan.Core11.DeviceInitialization
@@ -456,7 +455,6 @@
       Vulkan.Extensions.VK_QCOM_render_pass_shader_resolve
       Vulkan.Extensions.VK_QCOM_render_pass_store_ops
       Vulkan.Extensions.VK_QCOM_render_pass_transform
-      Vulkan.Extensions.WSITypes
       Vulkan.NamedType
       Vulkan.Version
       Vulkan.Zero
