diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -2,6 +2,10 @@
 
 ## WIP
 
+## [3.10.1] - 2021-03-31
+- Bump API version to v1.2.174
+- Fix https://github.com/expipiplus1/vulkan/issues/266
+
 ## [3.10] - 2021-02-18
 - Bump API version to v1.2.170
 
diff --git a/package.yaml b/package.yaml
--- a/package.yaml
+++ b/package.yaml
@@ -1,5 +1,5 @@
 name: vulkan
-version: "3.10"
+version: "3.10.1"
 synopsis: Bindings to the Vulkan graphics API.
 category: Graphics
 maintainer: Joe Hermaszewski <live.long.and.prosper@monoid.al>
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
@@ -283,8 +283,10 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_external_memory_host (ImportMemoryHostPointerInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_win32 (ImportMemoryWin32HandleInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory_win32 (ImportMemoryWin32HandleInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_external_memory (ImportMemoryZirconHandleInfoFUCHSIA)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_semaphore_fd (ImportSemaphoreFdInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_semaphore_win32 (ImportSemaphoreWin32HandleInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_external_semaphore (ImportSemaphoreZirconHandleInfoFUCHSIA)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (IndirectCommandsLayoutCreateInfoNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (IndirectCommandsLayoutTokenNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (IndirectCommandsStreamNV)
@@ -304,6 +306,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (MemoryGetAndroidHardwareBufferInfoANDROID)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_fd (MemoryGetFdInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_win32 (MemoryGetWin32HandleInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_external_memory (MemoryGetZirconHandleInfoFUCHSIA)
 import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (MemoryHeap)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_external_memory_host (MemoryHostPointerPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (MemoryOpaqueCaptureAddressAllocateInfo)
@@ -312,6 +315,7 @@
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2)
 import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (MemoryType)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_win32 (MemoryWin32HandlePropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_external_memory (MemoryZirconHandlePropertiesFUCHSIA)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_surface (MetalSurfaceCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (MultisamplePropertiesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_mutable_descriptor_type (MutableDescriptorTypeCreateInfoVALVE)
@@ -560,9 +564,11 @@
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (SamplerYcbcrConversionCreateInfo)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (SamplerYcbcrConversionImageFormatProperties)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (SamplerYcbcrConversionInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QNX_screen_surface (ScreenSurfaceCreateInfoQNX)
 import {-# SOURCE #-} Vulkan.Core10.QueueSemaphore (SemaphoreCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_semaphore_fd (SemaphoreGetFdInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_semaphore_win32 (SemaphoreGetWin32HandleInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_external_semaphore (SemaphoreGetZirconHandleInfoFUCHSIA)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (SemaphoreSignalInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_synchronization2 (SemaphoreSubmitInfoKHR)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (SemaphoreTypeCreateInfo)
@@ -902,6 +908,7 @@
   Extends MemoryAllocateInfo ExportMemoryAllocateInfo = ()
   Extends MemoryAllocateInfo ImportMemoryWin32HandleInfoKHR = ()
   Extends MemoryAllocateInfo ExportMemoryWin32HandleInfoKHR = ()
+  Extends MemoryAllocateInfo ImportMemoryZirconHandleInfoFUCHSIA = ()
   Extends MemoryAllocateInfo ImportMemoryFdInfoKHR = ()
   Extends MemoryAllocateInfo MemoryAllocateFlagsInfo = ()
   Extends MemoryAllocateInfo MemoryDedicatedAllocateInfo = ()
@@ -1249,6 +1256,7 @@
   STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO -> go @ExportMemoryAllocateInfo
   STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR -> go @ImportMemoryWin32HandleInfoKHR
   STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR -> go @ExportMemoryWin32HandleInfoKHR
+  STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA -> go @ImportMemoryZirconHandleInfoFUCHSIA
   STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR -> go @ImportMemoryFdInfoKHR
   STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR -> go @Win32KeyedMutexAcquireReleaseInfoKHR
   STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO -> go @ExportSemaphoreCreateInfo
@@ -1571,6 +1579,7 @@
 {-# complete (::&) :: ExportMemoryAllocateInfo #-}
 {-# complete (::&) :: ImportMemoryWin32HandleInfoKHR #-}
 {-# complete (::&) :: ExportMemoryWin32HandleInfoKHR #-}
+{-# complete (::&) :: ImportMemoryZirconHandleInfoFUCHSIA #-}
 {-# complete (::&) :: ImportMemoryFdInfoKHR #-}
 {-# complete (::&) :: Win32KeyedMutexAcquireReleaseInfoKHR #-}
 {-# complete (::&) :: ExportSemaphoreCreateInfo #-}
diff --git a/src/Vulkan/Core10/AllocationCallbacks.hs b/src/Vulkan/Core10/AllocationCallbacks.hs
--- a/src/Vulkan/Core10/AllocationCallbacks.hs
+++ b/src/Vulkan/Core10/AllocationCallbacks.hs
@@ -93,6 +93,7 @@
 -- 'Vulkan.Core10.Sampler.createSampler',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.createSamplerYcbcrConversion',
 -- 'Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.createSamplerYcbcrConversionKHR',
+-- 'Vulkan.Extensions.VK_QNX_screen_surface.createScreenSurfaceQNX',
 -- 'Vulkan.Core10.QueueSemaphore.createSemaphore',
 -- 'Vulkan.Core10.Shader.createShaderModule',
 -- 'Vulkan.Extensions.VK_KHR_display_swapchain.createSharedSwapchainsKHR',
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
@@ -689,12 +689,12 @@
 -- 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
--- constant that relates to the usable resolution of the depth buffer. The
--- resulting values are summed to produce the depth bias value which is
--- then clamped to a minimum or maximum value specified by
--- @depthBiasClamp@. @depthBiasSlopeFactor@, @depthBiasConstantFactor@, and
--- @depthBiasClamp@ /can/ each be positive, negative, or zero.
+-- and @depthBiasConstantFactor@ scales the minimum resolvable difference
+-- of the depth buffer. The resulting values are summed to produce the
+-- depth bias value which is then clamped to a minimum or maximum value
+-- specified by @depthBiasClamp@. @depthBiasSlopeFactor@,
+-- @depthBiasConstantFactor@, and @depthBiasClamp@ /can/ each be positive,
+-- negative, or zero.
 --
 -- The maximum depth slope m of a triangle is
 --
@@ -708,20 +708,25 @@
 --                \left| { {\partial z_f} \over {\partial y_f} } \right|
 --        \right).\]
 --
--- The minimum resolvable difference r is an implementation-dependent
--- parameter that depends on the depth buffer representation. It is the
--- smallest difference in framebuffer coordinate z values that is
--- guaranteed to remain distinct throughout polygon rasterization and in
--- the depth buffer. All pairs of fragments generated by the rasterization
--- of two polygons with otherwise identical vertices, but @z@f values that
--- differ by r, will have distinct depth values.
+-- The minimum resolvable difference r is a parameter that depends on the
+-- depth buffer representation. It is the smallest difference in
+-- framebuffer coordinate z values that is guaranteed to remain distinct
+-- throughout polygon rasterization and in the depth buffer. All pairs of
+-- fragments generated by the rasterization of two polygons with otherwise
+-- identical vertices, but @z@f values that differ by r, will have distinct
+-- depth values.
 --
 -- For fixed-point depth buffer representations, r is constant throughout
--- the range of the entire depth buffer. For floating-point depth buffers,
--- there is no single minimum resolvable difference. In this case, the
--- minimum resolvable difference for a given polygon is dependent on the
--- maximum exponent, e, in the range of z values spanned by the primitive.
--- If n is the number of bits in the floating-point mantissa, the minimum
+-- the range of the entire depth buffer. Its value is implementation
+-- dependent but /must/ be at most
+--
+-- -   r = 2 × 2-n
+--
+-- for an n-bit buffer. For floating-point depth buffers, there is no
+-- single minimum resolvable difference. In this case, the minimum
+-- resolvable difference for a given polygon is dependent on the maximum
+-- exponent, e, in the range of z values spanned by the primitive. If n is
+-- the number of bits in the floating-point mantissa, the minimum
 -- resolvable difference, r, for the given primitive is defined as
 --
 -- -   r = 2e-n
@@ -1714,6 +1719,16 @@
 --     /must/ contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
 --
+-- -   #VUID-vkCmdDraw-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'
+--     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
+--     this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
 -- -   #VUID-vkCmdDraw-None-02691# If a 'Vulkan.Core10.Handles.ImageView'
 --     is accessed using atomic operations as a result of this command,
 --     then the image view’s
@@ -1860,7 +1875,7 @@
 --     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@
 --     as a result of this command, then the @Type@ of the @Texel@ operand
 --     of that instruction /must/ have at least as many components as the
---     image view’s format.
+--     buffer view’s format.
 --
 -- -   #VUID-vkCmdDraw-SampledType-04470# If a
 --     'Vulkan.Core10.Handles.ImageView' with a
@@ -2101,6 +2116,13 @@
 --     @pAttachments@ member of @pColorBlendState@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
+-- -   #VUID-vkCmdDraw-rasterizationSamples-04740# If rasterization is not
+--     disabled in the bound graphics pipeline, and neither the @@ nor the
+--     @@ extensions are enabled, then
+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     /must/ be the same as the current subpass color and\/or
+--     depth\/stencil attachments
+--
 -- -   #VUID-vkCmdDraw-commandBuffer-02712# If @commandBuffer@ is a
 --     protected command buffer, any resource written to by the
 --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
@@ -2241,6 +2263,16 @@
 --     /must/ contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
 --
+-- -   #VUID-vkCmdDrawIndexed-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'
+--     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
+--     this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
 -- -   #VUID-vkCmdDrawIndexed-None-02691# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
 --     operations as a result of this command, then the image view’s
@@ -2390,7 +2422,7 @@
 --     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@
 --     as a result of this command, then the @Type@ of the @Texel@ operand
 --     of that instruction /must/ have at least as many components as the
---     image view’s format.
+--     buffer view’s format.
 --
 -- -   #VUID-vkCmdDrawIndexed-SampledType-04470# If a
 --     'Vulkan.Core10.Handles.ImageView' with a
@@ -2634,6 +2666,13 @@
 --     @pAttachments@ member of @pColorBlendState@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
+-- -   #VUID-vkCmdDrawIndexed-rasterizationSamples-04740# If rasterization
+--     is not disabled in the bound graphics pipeline, and neither the @@
+--     nor the @@ extensions are enabled, then
+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     /must/ be the same as the current subpass color and\/or
+--     depth\/stencil attachments
+--
 -- -   #VUID-vkCmdDrawIndexed-commandBuffer-02712# If @commandBuffer@ is a
 --     protected command buffer, any resource written to by the
 --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
@@ -2768,6 +2807,16 @@
 --     /must/ contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
 --
+-- -   #VUID-vkCmdDrawIndirect-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'
+--     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
+--     this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
 -- -   #VUID-vkCmdDrawIndirect-None-02691# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
 --     operations as a result of this command, then the image view’s
@@ -2917,7 +2966,7 @@
 --     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@
 --     as a result of this command, then the @Type@ of the @Texel@ operand
 --     of that instruction /must/ have at least as many components as the
---     image view’s format.
+--     buffer view’s format.
 --
 -- -   #VUID-vkCmdDrawIndirect-SampledType-04470# If a
 --     'Vulkan.Core10.Handles.ImageView' with a
@@ -3161,6 +3210,13 @@
 --     @pAttachments@ member of @pColorBlendState@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
+-- -   #VUID-vkCmdDrawIndirect-rasterizationSamples-04740# If rasterization
+--     is not disabled in the bound graphics pipeline, and neither the @@
+--     nor the @@ extensions are enabled, then
+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     /must/ be the same as the current subpass color and\/or
+--     depth\/stencil attachments
+--
 -- -   #VUID-vkCmdDrawIndirect-None-04007# All vertex input bindings
 --     accessed via vertex input variables declared in the vertex shader
 --     entry point’s interface /must/ have either valid or
@@ -3321,6 +3377,16 @@
 --     /must/ contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
 --
+-- -   #VUID-vkCmdDrawIndexedIndirect-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'
+--     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
+--     this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
 -- -   #VUID-vkCmdDrawIndexedIndirect-None-02691# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
 --     operations as a result of this command, then the image view’s
@@ -3472,7 +3538,7 @@
 --     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@
 --     as a result of this command, then the @Type@ of the @Texel@ operand
 --     of that instruction /must/ have at least as many components as the
---     image view’s format.
+--     buffer view’s format.
 --
 -- -   #VUID-vkCmdDrawIndexedIndirect-SampledType-04470# If a
 --     'Vulkan.Core10.Handles.ImageView' with a
@@ -3716,6 +3782,13 @@
 --     @pAttachments@ member of @pColorBlendState@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
+-- -   #VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-04740# If
+--     rasterization is not disabled in the bound graphics pipeline, and
+--     neither the @@ nor the @@ extensions are enabled, then
+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     /must/ be the same as the current subpass color and\/or
+--     depth\/stencil attachments
+--
 -- -   #VUID-vkCmdDrawIndexedIndirect-None-04007# All vertex input bindings
 --     accessed via vertex input variables declared in the vertex shader
 --     entry point’s interface /must/ have either valid or
@@ -3872,6 +3945,16 @@
 --     /must/ contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
 --
+-- -   #VUID-vkCmdDispatch-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'
+--     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
+--     this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
 -- -   #VUID-vkCmdDispatch-None-02691# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
 --     operations as a result of this command, then the image view’s
@@ -4020,7 +4103,7 @@
 --     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@
 --     as a result of this command, then the @Type@ of the @Texel@ operand
 --     of that instruction /must/ have at least as many components as the
---     image view’s format.
+--     buffer view’s format.
 --
 -- -   #VUID-vkCmdDispatch-SampledType-04470# If a
 --     'Vulkan.Core10.Handles.ImageView' with a
@@ -4189,6 +4272,16 @@
 --     /must/ contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
 --
+-- -   #VUID-vkCmdDispatchIndirect-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'
+--     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
+--     this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
 -- -   #VUID-vkCmdDispatchIndirect-None-02691# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
 --     operations as a result of this command, then the image view’s
@@ -4338,7 +4431,7 @@
 --     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@
 --     as a result of this command, then the @Type@ of the @Texel@ operand
 --     of that instruction /must/ have at least as many components as the
---     image view’s format.
+--     buffer view’s format.
 --
 -- -   #VUID-vkCmdDispatchIndirect-SampledType-04470# If a
 --     'Vulkan.Core10.Handles.ImageView' with a
@@ -8652,12 +8745,6 @@
 --
 -- == Valid Usage
 --
--- -   #VUID-vkCmdBeginQuery-queryPool-01922# @queryPool@ /must/ have been
---     created with a @queryType@ that differs from that of any queries
---     that are
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>
---     within @commandBuffer@
---
 -- -   #VUID-vkCmdBeginQuery-None-00807# All queries used by the command
 --     /must/ be unavailable
 --
@@ -8713,6 +8800,12 @@
 --     instance, the sum of @query@ and the number of bits set in the
 --     current subpass’s view mask /must/ be less than or equal to the
 --     number of queries in @queryPool@
+--
+-- -   #VUID-vkCmdBeginQuery-queryPool-01922# @queryPool@ /must/ have been
+--     created with a @queryType@ that differs from that of any queries
+--     that are
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>
+--     within @commandBuffer@
 --
 -- -   #VUID-vkCmdBeginQuery-queryType-02327# If the @queryType@ used to
 --     create @queryPool@ was
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
@@ -549,6 +549,12 @@
 --     @ppEnabledExtensionNames@ /must/ not contain both
 --     @VK_KHR_buffer_device_address@ and @VK_EXT_buffer_device_address@
 --
+-- -   #VUID-VkDeviceCreateInfo-pNext-04748# if the @pNext@ chain includes
+--     a 'Vulkan.Core12.PhysicalDeviceVulkan12Features' structure and
+--     'Vulkan.Core12.PhysicalDeviceVulkan12Features'::@bufferDeviceAddress@
+--     is VK_TRUE, @ppEnabledExtensionNames@ /must/ not contain
+--     @VK_EXT_buffer_device_address@
+--
 -- -   #VUID-VkDeviceCreateInfo-pNext-02829# If the @pNext@ chain includes
 --     a 'Vulkan.Core12.PhysicalDeviceVulkan11Features' structure, then it
 --     /must/ not include a
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
@@ -147,7 +147,8 @@
 -- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
 -- | 'ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT'                                                     | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'                    |
 -- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
--- | 'ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT'                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT'                             |
+-- | 'ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT'                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT',                   |
+-- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT'                             |
 -- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
 -- | 'ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'                                                          | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV',                           |
 -- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV',                           |
diff --git a/src/Vulkan/Core10/Enums/StructureType.hs b/src/Vulkan/Core10/Enums/StructureType.hs
--- a/src/Vulkan/Core10/Enums/StructureType.hs
+++ b/src/Vulkan/Core10/Enums/StructureType.hs
@@ -49,6 +49,12 @@
                                                         , STRUCTURE_TYPE_MEMORY_BARRIER
                                                         , STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO
                                                         , STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO
+                                                        , STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX
+                                                        , STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA
+                                                        , STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA
+                                                        , STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA
+                                                        , STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA
+                                                        , STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA
                                                         , STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE
                                                         , STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT
@@ -706,8 +712,10 @@
 -- 'Vulkan.Extensions.VK_EXT_external_memory_host.ImportMemoryHostPointerInfoEXT',
 -- 'Vulkan.Extensions.VK_KHR_external_memory_win32.ImportMemoryWin32HandleInfoKHR',
 -- 'Vulkan.Extensions.VK_NV_external_memory_win32.ImportMemoryWin32HandleInfoNV',
+-- 'Vulkan.Extensions.VK_FUCHSIA_external_memory.ImportMemoryZirconHandleInfoFUCHSIA',
 -- 'Vulkan.Extensions.VK_KHR_external_semaphore_fd.ImportSemaphoreFdInfoKHR',
 -- 'Vulkan.Extensions.VK_KHR_external_semaphore_win32.ImportSemaphoreWin32HandleInfoKHR',
+-- 'Vulkan.Extensions.VK_FUCHSIA_external_semaphore.ImportSemaphoreZirconHandleInfoFUCHSIA',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutCreateInfoNV',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutTokenNV',
 -- 'Vulkan.Extensions.VK_INTEL_performance_query.InitializePerformanceApiInfoINTEL',
@@ -724,11 +732,13 @@
 -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.MemoryGetAndroidHardwareBufferInfoANDROID',
 -- 'Vulkan.Extensions.VK_KHR_external_memory_fd.MemoryGetFdInfoKHR',
 -- 'Vulkan.Extensions.VK_KHR_external_memory_win32.MemoryGetWin32HandleInfoKHR',
+-- 'Vulkan.Extensions.VK_FUCHSIA_external_memory.MemoryGetZirconHandleInfoFUCHSIA',
 -- 'Vulkan.Extensions.VK_EXT_external_memory_host.MemoryHostPointerPropertiesEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.MemoryOpaqueCaptureAddressAllocateInfo',
 -- 'Vulkan.Extensions.VK_EXT_memory_priority.MemoryPriorityAllocateInfoEXT',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2',
 -- 'Vulkan.Extensions.VK_KHR_external_memory_win32.MemoryWin32HandlePropertiesKHR',
+-- 'Vulkan.Extensions.VK_FUCHSIA_external_memory.MemoryZirconHandlePropertiesFUCHSIA',
 -- 'Vulkan.Extensions.VK_EXT_metal_surface.MetalSurfaceCreateInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT',
 -- 'Vulkan.Extensions.VK_VALVE_mutable_descriptor_type.MutableDescriptorTypeCreateInfoVALVE',
@@ -957,9 +967,11 @@
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionImageFormatProperties',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo',
+-- 'Vulkan.Extensions.VK_QNX_screen_surface.ScreenSurfaceCreateInfoQNX',
 -- 'Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo',
 -- 'Vulkan.Extensions.VK_KHR_external_semaphore_fd.SemaphoreGetFdInfoKHR',
 -- 'Vulkan.Extensions.VK_KHR_external_semaphore_win32.SemaphoreGetWin32HandleInfoKHR',
+-- 'Vulkan.Extensions.VK_FUCHSIA_external_semaphore.SemaphoreGetZirconHandleInfoFUCHSIA',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreSignalInfo',
 -- 'Vulkan.Extensions.VK_KHR_synchronization2.SemaphoreSubmitInfoKHR',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreTypeCreateInfo',
@@ -1104,6 +1116,18 @@
 pattern STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO               = StructureType 47
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO"
 pattern STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO                 = StructureType 48
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX"
+pattern STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX            = StructureType 1000378000
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA"
+pattern STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA  = StructureType 1000365001
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA"
+pattern STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA = StructureType 1000365000
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA"
+pattern STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA     = StructureType 1000364002
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA"
+pattern STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA   = StructureType 1000364001
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA"
+pattern STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA  = StructureType 1000364000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE"
 pattern STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = StructureType 1000351002
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE"
@@ -2025,6 +2049,12 @@
              STRUCTURE_TYPE_MEMORY_BARRIER,
              STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO,
              STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
+             STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX,
+             STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA,
+             STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA,
+             STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA,
+             STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA,
+             STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA,
              STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE,
              STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT,
@@ -2519,6 +2549,12 @@
   , (STRUCTURE_TYPE_MEMORY_BARRIER                           , "MEMORY_BARRIER")
   , (STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO              , "LOADER_INSTANCE_CREATE_INFO")
   , (STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO                , "LOADER_DEVICE_CREATE_INFO")
+  , (STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX           , "SCREEN_SURFACE_CREATE_INFO_QNX")
+  , (STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA , "SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA")
+  , (STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA, "IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA")
+  , (STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA    , "MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA")
+  , (STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA  , "MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA")
+  , (STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA , "IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA")
   , (STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE, "MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE")
   , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE
     , "PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE"
diff --git a/src/Vulkan/Core10/FundamentalTypes.hs b/src/Vulkan/Core10/FundamentalTypes.hs
--- a/src/Vulkan/Core10/FundamentalTypes.hs
+++ b/src/Vulkan/Core10/FundamentalTypes.hs
@@ -13,6 +13,7 @@
                                                )
                                        , SampleMask
                                        , Flags
+                                       , Flags64
                                        , DeviceSize
                                        , DeviceAddress
                                        , StructureType(..)
@@ -569,11 +570,11 @@
 --
 -- 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.
+-- a '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
+-- Any '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
@@ -587,7 +588,7 @@
 --     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
+-- Any '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.
@@ -606,6 +607,10 @@
 --
 -- 'Vulkan.Core10.Enums.ColorComponentFlagBits.ColorComponentFlags'
 type Flags = Word32
+
+
+-- No documentation found for TopLevel "VkFlags64"
+type Flags64 = Word64
 
 
 -- | VkDeviceSize - Vulkan device memory size and offsets
diff --git a/src/Vulkan/Core10/Handles.hs b/src/Vulkan/Core10/Handles.hs
--- a/src/Vulkan/Core10/Handles.hs
+++ b/src/Vulkan/Core10/Handles.hs
@@ -87,6 +87,7 @@
 -- 'Vulkan.Core10.DeviceInitialization.createInstance',
 -- 'Vulkan.Extensions.VK_MVK_macos_surface.createMacOSSurfaceMVK',
 -- 'Vulkan.Extensions.VK_EXT_metal_surface.createMetalSurfaceEXT',
+-- 'Vulkan.Extensions.VK_QNX_screen_surface.createScreenSurfaceQNX',
 -- 'Vulkan.Extensions.VK_GGP_stream_descriptor_surface.createStreamDescriptorSurfaceGGP',
 -- 'Vulkan.Extensions.VK_NN_vi_surface.createViSurfaceNN',
 -- 'Vulkan.Extensions.VK_KHR_wayland_surface.createWaylandSurfaceKHR',
@@ -172,6 +173,7 @@
 -- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceQueueFamilyProperties',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceQueueFamilyProperties2',
 -- 'Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceQueueFamilyProperties2KHR',
+-- 'Vulkan.Extensions.VK_QNX_screen_surface.getPhysicalDeviceScreenPresentationSupportQNX',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.getPhysicalDeviceSparseImageFormatProperties',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceSparseImageFormatProperties2',
 -- 'Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceSparseImageFormatProperties2KHR',
@@ -355,6 +357,8 @@
 -- 'Vulkan.Extensions.VK_KHR_external_memory_win32.getMemoryWin32HandleKHR',
 -- 'Vulkan.Extensions.VK_NV_external_memory_win32.getMemoryWin32HandleNV',
 -- 'Vulkan.Extensions.VK_KHR_external_memory_win32.getMemoryWin32HandlePropertiesKHR',
+-- 'Vulkan.Extensions.VK_FUCHSIA_external_memory.getMemoryZirconHandleFUCHSIA',
+-- 'Vulkan.Extensions.VK_FUCHSIA_external_memory.getMemoryZirconHandlePropertiesFUCHSIA',
 -- 'Vulkan.Extensions.VK_GOOGLE_display_timing.getPastPresentationTimingGOOGLE',
 -- 'Vulkan.Extensions.VK_INTEL_performance_query.getPerformanceParameterINTEL',
 -- 'Vulkan.Core10.PipelineCache.getPipelineCacheData',
@@ -373,6 +377,7 @@
 -- 'Vulkan.Extensions.VK_KHR_timeline_semaphore.getSemaphoreCounterValueKHR',
 -- 'Vulkan.Extensions.VK_KHR_external_semaphore_fd.getSemaphoreFdKHR',
 -- 'Vulkan.Extensions.VK_KHR_external_semaphore_win32.getSemaphoreWin32HandleKHR',
+-- 'Vulkan.Extensions.VK_FUCHSIA_external_semaphore.getSemaphoreZirconHandleFUCHSIA',
 -- 'Vulkan.Extensions.VK_AMD_shader_info.getShaderInfoAMD',
 -- 'Vulkan.Extensions.VK_EXT_display_control.getSwapchainCounterEXT',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.getSwapchainImagesKHR',
@@ -382,6 +387,7 @@
 -- 'Vulkan.Extensions.VK_KHR_external_fence_win32.importFenceWin32HandleKHR',
 -- 'Vulkan.Extensions.VK_KHR_external_semaphore_fd.importSemaphoreFdKHR',
 -- 'Vulkan.Extensions.VK_KHR_external_semaphore_win32.importSemaphoreWin32HandleKHR',
+-- 'Vulkan.Extensions.VK_FUCHSIA_external_semaphore.importSemaphoreZirconHandleFUCHSIA',
 -- 'Vulkan.Extensions.VK_INTEL_performance_query.initializePerformanceApiINTEL',
 -- 'Vulkan.Core10.Memory.invalidateMappedMemoryRanges',
 -- 'Vulkan.Core10.Memory.mapMemory',
@@ -630,6 +636,7 @@
 -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.MemoryGetAndroidHardwareBufferInfoANDROID',
 -- 'Vulkan.Extensions.VK_KHR_external_memory_fd.MemoryGetFdInfoKHR',
 -- 'Vulkan.Extensions.VK_KHR_external_memory_win32.MemoryGetWin32HandleInfoKHR',
+-- 'Vulkan.Extensions.VK_FUCHSIA_external_memory.MemoryGetZirconHandleInfoFUCHSIA',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseMemoryBind',
 -- 'Vulkan.Extensions.VK_KHR_win32_keyed_mutex.Win32KeyedMutexAcquireReleaseInfoKHR',
@@ -999,9 +1006,11 @@
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.BindSparseInfo',
 -- 'Vulkan.Extensions.VK_KHR_external_semaphore_fd.ImportSemaphoreFdInfoKHR',
 -- 'Vulkan.Extensions.VK_KHR_external_semaphore_win32.ImportSemaphoreWin32HandleInfoKHR',
+-- 'Vulkan.Extensions.VK_FUCHSIA_external_semaphore.ImportSemaphoreZirconHandleInfoFUCHSIA',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR',
 -- 'Vulkan.Extensions.VK_KHR_external_semaphore_fd.SemaphoreGetFdInfoKHR',
 -- 'Vulkan.Extensions.VK_KHR_external_semaphore_win32.SemaphoreGetWin32HandleInfoKHR',
+-- 'Vulkan.Extensions.VK_FUCHSIA_external_semaphore.SemaphoreGetZirconHandleInfoFUCHSIA',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreSignalInfo',
 -- 'Vulkan.Extensions.VK_KHR_synchronization2.SemaphoreSubmitInfoKHR',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreWaitInfo',
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
@@ -1302,6 +1302,23 @@
 --     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT', then
 --     @arrayLayers@ /must/ be @1@.
 --
+-- -   #VUID-VkImageCreateInfo-pNext-04737# If a
+--     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'
+--     structure was included in the @pNext@ chain and
+--     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@viewFormatCount@
+--     is not zero then all of the formats in
+--     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@pViewFormats@
+--     /must/ be compatible with the @format@ as described in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility compatibility table>
+--
+-- -   #VUID-VkImageCreateInfo-flags-04738# If @flags@ does not contain
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT'
+--     and the @pNext@ chain include a
+--     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'
+--     structure then
+--     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@viewFormatCount@
+--     /must/ be @0@ or @1@
+--
 -- = Valid Usage (Implicit)
 --
 -- -   #VUID-VkImageCreateInfo-sType-sType# @sType@ /must/ be
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
@@ -909,6 +909,12 @@
 --     flag, the @levelCount@ and @layerCount@ members of
 --     @subresourceRange@ /must/ both be @1@
 --
+-- -   #VUID-VkImageViewCreateInfo-image-04739# If @image@ was created with
+--     the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT'
+--     flag and @format@ is a non-compressed format, @viewType@ /must/ not
+--     be 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D'
+--
 -- -   #VUID-VkImageViewCreateInfo-pNext-01585# If a
 --     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'
 --     structure was included in the @pNext@ chain of the
@@ -917,25 +923,6 @@
 --     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@viewFormatCount@
 --     is not zero then @format@ /must/ be one of the formats in
 --     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@pViewFormats@
---
--- -   #VUID-VkImageViewCreateInfo-pNext-04082# If a
---     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'
---     structure was included in the @pNext@ chain of the
---     'Vulkan.Core10.Image.ImageCreateInfo' structure used when creating
---     @image@ and
---     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@viewFormatCount@
---     is not zero then all of the formats in
---     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@pViewFormats@
---     /must/ be compatible with the @format@ as described in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility compatibility table>
---
--- -   #VUID-VkImageViewCreateInfo-flags-04083# If @flags@ does not contain
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT'
---     and the @pNext@ chain include a
---     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'
---     structure then
---     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@viewFormatCount@
---     /must/ be @0@ or @1@
 --
 -- -   #VUID-VkImageViewCreateInfo-image-01586# If @image@ was created with
 --     the
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
@@ -83,6 +83,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_external_memory_host (ImportMemoryHostPointerInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_win32 (ImportMemoryWin32HandleInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory_win32 (ImportMemoryWin32HandleInfoNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_external_memory (ImportMemoryZirconHandleInfoFUCHSIA)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_group (MemoryAllocateFlagsInfo)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation (MemoryDedicatedAllocateInfo)
 import Vulkan.Core10.Enums.MemoryMapFlags (MemoryMapFlags)
@@ -795,7 +796,7 @@
 -- @pNext@ chain includes one of the following structures:
 --
 -- -   'Vulkan.Extensions.VK_KHR_external_memory_win32.ImportMemoryWin32HandleInfoKHR'
---     with non-zero @handleType@ value
+--     with a non-zero @handleType@ value
 --
 -- -   'Vulkan.Extensions.VK_KHR_external_memory_fd.ImportMemoryFdInfoKHR'
 --     with a non-zero @handleType@ value
@@ -806,6 +807,9 @@
 -- -   'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ImportAndroidHardwareBufferInfoANDROID'
 --     with a non-@NULL@ @buffer@ value
 --
+-- -   'Vulkan.Extensions.VK_FUCHSIA_external_memory.ImportMemoryZirconHandleInfoFUCHSIA'
+--     with a non-zero @handleType@ value
+--
 -- If the parameters define an import operation and the external handle
 -- type is
 -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT',
@@ -1109,6 +1113,23 @@
 --     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.MemoryOpaqueCaptureAddressAllocateInfo'::@opaqueCaptureAddress@
 --     /must/ be zero
 --
+-- -   #VUID-VkMemoryAllocateInfo-None-04749# If the parameters define an
+--     import operation and the external handle type is
+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA',
+--     the value of @memoryTypeIndex@ /must/ be an index identifying a
+--     memory type from the @memoryTypeBits@ field of the
+--     'Vulkan.Extensions.VK_FUCHSIA_external_memory.MemoryZirconHandlePropertiesFUCHSIA'
+--     structure populated by a call to
+--     'Vulkan.Extensions.VK_FUCHSIA_external_memory.getMemoryZirconHandlePropertiesFUCHSIA'.
+--
+-- -   #VUID-VkMemoryAllocateInfo-allocationSize-04750# If the parameters
+--     define an import operation and the external handle type is
+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA',
+--     the value of @allocationSize@ /must/ be greater than @0@ and /must/
+--     be less than or equal to the size of the VMO as determined by
+--     @zx_vmo_get_size@(@handle@) where @handle@ is the VMO handle to the
+--     imported external memory.
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkMemoryAllocateInfo-sType-sType# @sType@ /must/ be
@@ -1127,6 +1148,7 @@
 --     'Vulkan.Extensions.VK_EXT_external_memory_host.ImportMemoryHostPointerInfoEXT',
 --     'Vulkan.Extensions.VK_KHR_external_memory_win32.ImportMemoryWin32HandleInfoKHR',
 --     'Vulkan.Extensions.VK_NV_external_memory_win32.ImportMemoryWin32HandleInfoNV',
+--     'Vulkan.Extensions.VK_FUCHSIA_external_memory.ImportMemoryZirconHandleInfoFUCHSIA',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.MemoryAllocateFlagsInfo',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.MemoryOpaqueCaptureAddressAllocateInfo',
@@ -1170,6 +1192,7 @@
     | Just Refl <- eqT @e @MemoryDedicatedAllocateInfo = Just f
     | Just Refl <- eqT @e @MemoryAllocateFlagsInfo = Just f
     | Just Refl <- eqT @e @ImportMemoryFdInfoKHR = Just f
+    | Just Refl <- eqT @e @ImportMemoryZirconHandleInfoFUCHSIA = Just f
     | Just Refl <- eqT @e @ExportMemoryWin32HandleInfoKHR = Just f
     | Just Refl <- eqT @e @ImportMemoryWin32HandleInfoKHR = Just f
     | Just Refl <- eqT @e @ExportMemoryAllocateInfo = Just f
@@ -1230,15 +1253,16 @@
 --     'Vulkan.Core10.APIConstants.WHOLE_SIZE', @offset@ /must/ be within
 --     the currently mapped range of @memory@
 --
--- -   #VUID-VkMappedMemoryRange-size-01389# If @size@ is equal to
---     'Vulkan.Core10.APIConstants.WHOLE_SIZE', the end of the current
---     mapping of @memory@ /must/ be a multiple of
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@nonCoherentAtomSize@
---     bytes from the beginning of the memory object
---
 -- -   #VUID-VkMappedMemoryRange-offset-00687# @offset@ /must/ be a
 --     multiple of
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@nonCoherentAtomSize@
+--
+-- -   #VUID-VkMappedMemoryRange-size-01389# If @size@ is equal to
+--     'Vulkan.Core10.APIConstants.WHOLE_SIZE', the end of the current
+--     mapping of @memory@ /must/ either be a multiple of
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@nonCoherentAtomSize@
+--     bytes from the beginning of the memory object, or be equal to the
+--     end of the memory object
 --
 -- -   #VUID-VkMappedMemoryRange-size-01390# If @size@ is not equal to
 --     'Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ either be a
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
@@ -583,7 +583,7 @@
 --     @image@ /must/ have been created with
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
 --     or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL'
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
 --
 -- -   #VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-03939# If
 --     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
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
@@ -602,6 +602,11 @@
 --
 -- = Description
 --
+-- Note
+--
+-- Despite their names, @minDepth@ /can/ be less than, equal to, or greater
+-- than @maxDepth@.
+--
 -- 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
@@ -699,8 +704,7 @@
     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@ and @maxDepth@ are the depth range for the viewport.
     minDepth :: Float
   , -- No documentation found for Nested "VkViewport" "maxDepth"
     maxDepth :: Float
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
@@ -8,6 +8,7 @@
                                                                                                , EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT
                                                                                                , EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT
                                                                                                , EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT
+                                                                                               , EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA
                                                                                                , EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT
                                                                                                , EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT
                                                                                                , EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
@@ -63,6 +64,8 @@
 -- +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
 -- | 'EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID' | No restriction                                                                                             | No restriction                                                                                             |
 -- +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
+-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA'              | No restriction                                                                                             | No restriction                                                                                             |
+-- +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
 --
 -- External memory handle types compatibility
 --
@@ -93,13 +96,16 @@
 -- 'Vulkan.Extensions.VK_KHR_external_memory_fd.ImportMemoryFdInfoKHR',
 -- 'Vulkan.Extensions.VK_EXT_external_memory_host.ImportMemoryHostPointerInfoEXT',
 -- 'Vulkan.Extensions.VK_KHR_external_memory_win32.ImportMemoryWin32HandleInfoKHR',
+-- 'Vulkan.Extensions.VK_FUCHSIA_external_memory.ImportMemoryZirconHandleInfoFUCHSIA',
 -- 'Vulkan.Extensions.VK_KHR_external_memory_fd.MemoryGetFdInfoKHR',
 -- 'Vulkan.Extensions.VK_KHR_external_memory_win32.MemoryGetWin32HandleInfoKHR',
+-- 'Vulkan.Extensions.VK_FUCHSIA_external_memory.MemoryGetZirconHandleInfoFUCHSIA',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalBufferInfo',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalImageFormatInfo',
 -- 'Vulkan.Extensions.VK_KHR_external_memory_fd.getMemoryFdPropertiesKHR',
 -- 'Vulkan.Extensions.VK_EXT_external_memory_host.getMemoryHostPointerPropertiesEXT',
--- 'Vulkan.Extensions.VK_KHR_external_memory_win32.getMemoryWin32HandlePropertiesKHR'
+-- 'Vulkan.Extensions.VK_KHR_external_memory_win32.getMemoryWin32HandlePropertiesKHR',
+-- 'Vulkan.Extensions.VK_FUCHSIA_external_memory.getMemoryZirconHandlePropertiesFUCHSIA'
 newtype ExternalMemoryHandleTypeFlagBits = ExternalMemoryHandleTypeFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
@@ -147,6 +153,9 @@
 -- 12 committed resource. It owns a reference to the memory used by the
 -- Direct3D resource.
 pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT                  = ExternalMemoryHandleTypeFlagBits 0x00000040
+-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA' is a Zircon handle
+-- to a virtual memory object.
+pattern EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA              = ExternalMemoryHandleTypeFlagBits 0x00000800
 -- | 'EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT'
 -- specifies a host pointer to /host mapped foreign memory/. It does not
 -- own a reference to the underlying memory resource, and will therefore
@@ -185,6 +194,7 @@
   , (EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT              , "D3D11_TEXTURE_KMT_BIT")
   , (EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT                     , "D3D12_HEAP_BIT")
   , (EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT                 , "D3D12_RESOURCE_BIT")
+  , (EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA             , "ZIRCON_VMO_BIT_FUCHSIA")
   , (EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT , "HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT")
   , (EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT            , "HOST_ALLOCATION_BIT_EXT")
   , (EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID, "ANDROID_HARDWARE_BUFFER_BIT_ANDROID")
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
@@ -7,6 +7,7 @@
                                                                                                      , EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT
                                                                                                      , EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT
                                                                                                      , EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT
+                                                                                                     , EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA
                                                                                                      , ..
                                                                                                      )
                                                                 ) where
@@ -47,19 +48,21 @@
 -- underlying physical device and\/or the same driver version, as defined
 -- in the following table:
 --
--- +-------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
--- | Handle type                                           | 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties'::@driverUUID@ | 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties'::@deviceUUID@ |
--- +-------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
--- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT'        | Must match                                                                                                 | Must match                                                                                                 |
--- +-------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
--- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT'     | Must match                                                                                                 | Must match                                                                                                 |
--- +-------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
--- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT' | Must match                                                                                                 | Must match                                                                                                 |
--- +-------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
--- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT'      | Must match                                                                                                 | Must match                                                                                                 |
--- +-------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
--- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT'          | No restriction                                                                                             | No restriction                                                                                             |
--- +-------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
+-- +-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
+-- | Handle type                                               | 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties'::@driverUUID@ | 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties'::@deviceUUID@ |
+-- +-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
+-- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT'            | Must match                                                                                                 | Must match                                                                                                 |
+-- +-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
+-- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT'         | Must match                                                                                                 | Must match                                                                                                 |
+-- +-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
+-- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT'     | Must match                                                                                                 | Must match                                                                                                 |
+-- +-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
+-- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT'          | Must match                                                                                                 | Must match                                                                                                 |
+-- +-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
+-- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT'              | No restriction                                                                                             | No restriction                                                                                             |
+-- +-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
+-- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA' | No restriction                                                                                             | No restriction                                                                                             |
+-- +-----------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
 --
 -- External semaphore handle types compatibility
 --
@@ -68,9 +71,11 @@
 -- 'ExternalSemaphoreHandleTypeFlags',
 -- 'Vulkan.Extensions.VK_KHR_external_semaphore_fd.ImportSemaphoreFdInfoKHR',
 -- 'Vulkan.Extensions.VK_KHR_external_semaphore_win32.ImportSemaphoreWin32HandleInfoKHR',
+-- 'Vulkan.Extensions.VK_FUCHSIA_external_semaphore.ImportSemaphoreZirconHandleInfoFUCHSIA',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.PhysicalDeviceExternalSemaphoreInfo',
 -- 'Vulkan.Extensions.VK_KHR_external_semaphore_fd.SemaphoreGetFdInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_external_semaphore_win32.SemaphoreGetWin32HandleInfoKHR'
+-- 'Vulkan.Extensions.VK_KHR_external_semaphore_win32.SemaphoreGetWin32HandleInfoKHR',
+-- 'Vulkan.Extensions.VK_FUCHSIA_external_semaphore.SemaphoreGetZirconHandleInfoFUCHSIA'
 newtype ExternalSemaphoreHandleTypeFlagBits = ExternalSemaphoreHandleTypeFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
@@ -81,14 +86,14 @@
 -- Additionally, it /must/ be transportable over a socket using an
 -- @SCM_RIGHTS@ control message. It owns a reference to the underlying
 -- synchronization primitive represented by its Vulkan semaphore object.
-pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT        = ExternalSemaphoreHandleTypeFlagBits 0x00000001
+pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT            = ExternalSemaphoreHandleTypeFlagBits 0x00000001
 -- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT' specifies an NT handle
 -- that has only limited valid usage outside of Vulkan and other compatible
 -- APIs. It /must/ be compatible with the functions @DuplicateHandle@,
 -- @CloseHandle@, @CompareObjectHandles@, @GetHandleInformation@, and
 -- @SetHandleInformation@. It owns a reference to the underlying
 -- synchronization primitive represented by its Vulkan semaphore object.
-pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT     = ExternalSemaphoreHandleTypeFlagBits 0x00000002
+pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT         = ExternalSemaphoreHandleTypeFlagBits 0x00000002
 -- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT' specifies a global
 -- share handle that has only limited valid usage outside of Vulkan and
 -- other compatible APIs. It is not compatible with any native APIs. It
@@ -96,13 +101,13 @@
 -- represented its Vulkan semaphore object, and will therefore become
 -- invalid when all Vulkan semaphore objects associated with it are
 -- destroyed.
-pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = ExternalSemaphoreHandleTypeFlagBits 0x00000004
+pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT     = ExternalSemaphoreHandleTypeFlagBits 0x00000004
 -- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT' specifies an NT handle
 -- returned by @ID3D12Device@::@CreateSharedHandle@ referring to a Direct3D
 -- 12 fence, or @ID3D11Device5@::'Vulkan.Core10.Fence.createFence' by a
 -- Direct3D 11 fence. It owns a reference to the underlying synchronization
 -- primitive associated with the Direct3D fence.
-pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT      = ExternalSemaphoreHandleTypeFlagBits 0x00000008
+pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT          = ExternalSemaphoreHandleTypeFlagBits 0x00000008
 -- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT' specifies a POSIX file
 -- descriptor handle to a Linux Sync File or Android Fence object. It can
 -- be used with any native API accepting a valid sync file or fence as
@@ -110,7 +115,13 @@
 -- associated with the file descriptor. Implementations which support
 -- importing this handle type /must/ accept any type of sync or fence FD
 -- supported by the native system they are running on.
-pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT          = ExternalSemaphoreHandleTypeFlagBits 0x00000010
+pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT              = ExternalSemaphoreHandleTypeFlagBits 0x00000010
+-- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA' specifies a
+-- handle to a Zircon event object. It can be used with any native API that
+-- accepts a Zircon event handle. Zircon event handles are created with
+-- @ZX_RIGHTS_BASIC@ and @ZX_RIGHTS_SIGNAL@ rights. Vulkan on Fuchsia uses
+-- only the ZX_EVENT_SIGNALED bit when signaling or waiting.
+pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA = ExternalSemaphoreHandleTypeFlagBits 0x00000080
 
 conNameExternalSemaphoreHandleTypeFlagBits :: String
 conNameExternalSemaphoreHandleTypeFlagBits = "ExternalSemaphoreHandleTypeFlagBits"
@@ -120,11 +131,12 @@
 
 showTableExternalSemaphoreHandleTypeFlagBits :: [(ExternalSemaphoreHandleTypeFlagBits, String)]
 showTableExternalSemaphoreHandleTypeFlagBits =
-  [ (EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT       , "OPAQUE_FD_BIT")
-  , (EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT    , "OPAQUE_WIN32_BIT")
-  , (EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, "OPAQUE_WIN32_KMT_BIT")
-  , (EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT     , "D3D12_FENCE_BIT")
-  , (EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT         , "SYNC_FD_BIT")
+  [ (EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT           , "OPAQUE_FD_BIT")
+  , (EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT        , "OPAQUE_WIN32_BIT")
+  , (EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT    , "OPAQUE_WIN32_KMT_BIT")
+  , (EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT         , "D3D12_FENCE_BIT")
+  , (EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT             , "SYNC_FD_BIT")
+  , (EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA, "ZIRCON_EVENT_BIT_FUCHSIA")
   ]
 
 instance Show ExternalSemaphoreHandleTypeFlagBits where
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
@@ -47,13 +47,11 @@
     storageBuffer16BitAccess :: Bool
   , -- | #extension-features-uniformAndStorageBuffer16BitAccess#
     -- @uniformAndStorageBuffer16BitAccess@ specifies whether objects in the
-    -- @Uniform@ storage class with the @Block@ decoration and in the
-    -- @StorageBuffer@, @ShaderRecordBufferKHR@, or @PhysicalStorageBuffer@
-    -- storage class with the same decoration /can/ have 16-bit integer and
-    -- 16-bit floating-point members. If this feature is not enabled, 16-bit
-    -- integer or 16-bit floating-point members /must/ not be used in such
-    -- objects. This also specifies whether shader modules /can/ declare the
-    -- @UniformAndStorageBuffer16BitAccess@ capability.
+    -- @Uniform@ storage class with the @Block@ decoration /can/ have 16-bit
+    -- integer and 16-bit floating-point members. If this feature is not
+    -- enabled, 16-bit integer or 16-bit floating-point members /must/ not be
+    -- used in such objects. This also specifies whether shader modules /can/
+    -- declare the @UniformAndStorageBuffer16BitAccess@ capability.
     uniformAndStorageBuffer16BitAccess :: Bool
   , -- | #extension-features-storagePushConstant16# @storagePushConstant16@
     -- specifies whether objects in the @PushConstant@ storage class /can/ have
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
@@ -277,6 +277,24 @@
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DISJOINT_BIT'
 --     set in 'Vulkan.Core10.Image.ImageCreateInfo'::@flags@
 --
+-- -   #VUID-VkMemoryDedicatedAllocateInfo-image-04751# If @image@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' and
+--     'Vulkan.Core10.Memory.MemoryAllocateInfo' defines a memory import
+--     operation with handle type
+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA',
+--     the memory being imported /must/ also be a dedicated image
+--     allocation and @image@ /must/ be identical to the image associated
+--     with the imported memory
+--
+-- -   #VUID-VkMemoryDedicatedAllocateInfo-buffer-04752# If @buffer@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' and
+--     'Vulkan.Core10.Memory.MemoryAllocateInfo' defines a memory import
+--     operation with handle type
+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA',
+--     the memory being imported /must/ also be a dedicated buffer
+--     allocation and @buffer@ /must/ be identical to the buffer associated
+--     with the imported memory
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkMemoryDedicatedAllocateInfo-sType-sType# @sType@ /must/ be
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
@@ -265,6 +265,16 @@
 --     /must/ contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
 --
+-- -   #VUID-vkCmdDispatchBase-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'
+--     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
+--     this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
 -- -   #VUID-vkCmdDispatchBase-None-02691# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
 --     operations as a result of this command, then the image view’s
@@ -415,7 +425,7 @@
 --     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@
 --     as a result of this command, then the @Type@ of the @Texel@ operand
 --     of that instruction /must/ have at least as many components as the
---     image view’s format.
+--     buffer view’s format.
 --
 -- -   #VUID-vkCmdDispatchBase-SampledType-04470# If a
 --     'Vulkan.Core10.Handles.ImageView' with a
diff --git a/src/Vulkan/Core12.hs b/src/Vulkan/Core12.hs
--- a/src/Vulkan/Core12.hs
+++ b/src/Vulkan/Core12.hs
@@ -139,13 +139,11 @@
     storageBuffer16BitAccess :: Bool
   , -- | #features-uniformAndStorageBuffer16BitAccess#
     -- @uniformAndStorageBuffer16BitAccess@ specifies whether objects in the
-    -- @Uniform@ storage class with the @Block@ decoration and in the
-    -- @StorageBuffer@, @ShaderRecordBufferKHR@, or @PhysicalStorageBuffer@
-    -- storage class with the same decoration /can/ have 16-bit integer and
-    -- 16-bit floating-point members. If this feature is not enabled, 16-bit
-    -- integer or 16-bit floating-point members /must/ not be used in such
-    -- objects. This also specifies whether shader modules /can/ declare the
-    -- @UniformAndStorageBuffer16BitAccess@ capability.
+    -- @Uniform@ storage class with the @Block@ decoration /can/ have 16-bit
+    -- integer and 16-bit floating-point members. If this feature is not
+    -- enabled, 16-bit integer or 16-bit floating-point members /must/ not be
+    -- used in such objects. This also specifies whether shader modules /can/
+    -- declare the @UniformAndStorageBuffer16BitAccess@ capability.
     uniformAndStorageBuffer16BitAccess :: Bool
   , -- | #features-storagePushConstant16# @storagePushConstant16@ specifies
     -- whether objects in the @PushConstant@ storage class /can/ have 16-bit
@@ -529,13 +527,11 @@
 --
 -- -   #features-uniformAndStorageBuffer8BitAccess#
 --     @uniformAndStorageBuffer8BitAccess@ indicates whether objects in the
---     @Uniform@ storage class with the @Block@ decoration and in the
---     @StorageBuffer@, @ShaderRecordBufferKHR@, or @PhysicalStorageBuffer@
---     storage class with the same decoration /can/ have 8-bit integer
---     members. If this feature is not enabled, 8-bit integer members
---     /must/ not be used in such objects. This also indicates whether
---     shader modules /can/ declare the @UniformAndStorageBuffer8BitAccess@
---     capability.
+--     @Uniform@ storage class with the @Block@ decoration /can/ have 8-bit
+--     integer members. If this feature is not enabled, 8-bit integer
+--     members /must/ not be used in such objects. This also indicates
+--     whether shader modules /can/ declare the
+--     @UniformAndStorageBuffer8BitAccess@ capability.
 --
 -- -   #features-storagePushConstant8# @storagePushConstant8@ indicates
 --     whether objects in the @PushConstant@ storage class /can/ have 8-bit
diff --git a/src/Vulkan/Core12/Enums/SemaphoreType.hs b/src/Vulkan/Core12/Enums/SemaphoreType.hs
--- a/src/Vulkan/Core12/Enums/SemaphoreType.hs
+++ b/src/Vulkan/Core12/Enums/SemaphoreType.hs
@@ -27,9 +27,9 @@
 -- or unsignaled. When created, the semaphore is in the unsignaled state.
 pattern SEMAPHORE_TYPE_BINARY   = SemaphoreType 0
 -- | 'SEMAPHORE_TYPE_TIMELINE' specifies a /timeline semaphore/ type that has
--- a monotonically increasing 64-bit unsigned integer payload indicating
--- whether the semaphore is signaled with respect to a particular reference
--- value. When created, the semaphore payload has the value given by the
+-- a strictly increasing 64-bit unsigned integer payload indicating whether
+-- the semaphore is signaled with respect to a particular reference value.
+-- When created, the semaphore payload has the value given by the
 -- @initialValue@ field of
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreTypeCreateInfo'.
 pattern SEMAPHORE_TYPE_TIMELINE = SemaphoreType 1
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
@@ -46,12 +46,11 @@
     storageBuffer8BitAccess :: Bool
   , -- | #extension-features-uniformAndStorageBuffer8BitAccess#
     -- @uniformAndStorageBuffer8BitAccess@ indicates whether objects in the
-    -- @Uniform@ storage class with the @Block@ decoration and in the
-    -- @StorageBuffer@, @ShaderRecordBufferKHR@, or @PhysicalStorageBuffer@
-    -- storage class with the same decoration /can/ have 8-bit integer members.
-    -- If this feature is not enabled, 8-bit integer members /must/ not be used
-    -- in such objects. This also indicates whether shader modules /can/
-    -- declare the @UniformAndStorageBuffer8BitAccess@ capability.
+    -- @Uniform@ storage class with the @Block@ decoration /can/ have 8-bit
+    -- integer members. If this feature is not enabled, 8-bit integer members
+    -- /must/ not be used in such objects. This also indicates whether shader
+    -- modules /can/ declare the @UniformAndStorageBuffer8BitAccess@
+    -- capability.
     uniformAndStorageBuffer8BitAccess :: Bool
   , -- | #extension-features-storagePushConstant8# @storagePushConstant8@
     -- indicates whether objects in the @PushConstant@ storage class /can/ have
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
@@ -968,6 +968,43 @@
 --     or
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL',
 --
+-- -   #VUID-VkAttachmentReference2-attachment-04754# If @attachment@ is
+--     not 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', and the format
+--     of the referenced attachment is a color format, @layout@ /must/ not
+--     be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL'
+--     or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'
+--
+-- -   #VUID-VkAttachmentReference2-attachment-04755# If @attachment@ is
+--     not 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', and the format
+--     of the referenced attachment is a depth\/stencil format which
+--     includes both depth and stencil aspects, and @layout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL'
+--     or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',
+--     the @pNext@ chain /must/ include a
+--     'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentReferenceStencilLayout'
+--     structure
+--
+-- -   #VUID-VkAttachmentReference2-attachment-04756# If @attachment@ is
+--     not 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', and the format
+--     of the referenced attachment is a depth\/stencil format which
+--     includes only the depth aspect, @layout@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL'
+--     or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'
+--
+-- -   #VUID-VkAttachmentReference2-attachment-04757# If @attachment@ is
+--     not 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', and the format
+--     of the referenced attachment is a depth\/stencil format which
+--     includes only the stencil aspect, @layout@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL'
+--     or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL'
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkAttachmentReference2-sType-sType# @sType@ /must/ be
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
@@ -54,6 +54,16 @@
 --     /must/ contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
 --
+-- -   #VUID-vkCmdDrawIndirectCount-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'
+--     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
+--     this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
 -- -   #VUID-vkCmdDrawIndirectCount-None-02691# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
 --     operations as a result of this command, then the image view’s
@@ -204,7 +214,7 @@
 --     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@
 --     as a result of this command, then the @Type@ of the @Texel@ operand
 --     of that instruction /must/ have at least as many components as the
---     image view’s format.
+--     buffer view’s format.
 --
 -- -   #VUID-vkCmdDrawIndirectCount-SampledType-04470# If a
 --     'Vulkan.Core10.Handles.ImageView' with a
@@ -448,6 +458,13 @@
 --     @pAttachments@ member of @pColorBlendState@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
+-- -   #VUID-vkCmdDrawIndirectCount-rasterizationSamples-04740# If
+--     rasterization is not disabled in the bound graphics pipeline, and
+--     neither the @@ nor the @@ extensions are enabled, then
+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     /must/ be the same as the current subpass color and\/or
+--     depth\/stencil attachments
+--
 -- -   #VUID-vkCmdDrawIndirectCount-None-04007# All vertex input bindings
 --     accessed via vertex input variables declared in the vertex shader
 --     entry point’s interface /must/ have either valid or
@@ -631,6 +648,16 @@
 --     /must/ contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
 --
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'
+--     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
+--     this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-None-02691# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
 --     operations as a result of this command, then the image view’s
@@ -783,7 +810,7 @@
 --     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@
 --     as a result of this command, then the @Type@ of the @Texel@ operand
 --     of that instruction /must/ have at least as many components as the
---     image view’s format.
+--     buffer view’s format.
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-SampledType-04470# If a
 --     'Vulkan.Core10.Handles.ImageView' with a
@@ -1029,6 +1056,13 @@
 --     then the @blendEnable@ member of the corresponding element of the
 --     @pAttachments@ member of @pColorBlendState@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-04740# If
+--     rasterization is not disabled in the bound graphics pipeline, and
+--     neither the @@ nor the @@ extensions are enabled, then
+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     /must/ be the same as the current subpass color and\/or
+--     depth\/stencil attachments
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-None-04007# All vertex input
 --     bindings accessed via vertex input variables declared in the vertex
diff --git a/src/Vulkan/Dynamic.hs b/src/Vulkan/Dynamic.hs
--- a/src/Vulkan/Dynamic.hs
+++ b/src/Vulkan/Dynamic.hs
@@ -204,6 +204,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_fence_win32 (ImportFenceWin32HandleInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_semaphore_fd (ImportSemaphoreFdInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_semaphore_win32 (ImportSemaphoreWin32HandleInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_external_semaphore (ImportSemaphoreZirconHandleInfoFUCHSIA)
 import {-# SOURCE #-} Vulkan.Core10.Enums.IndexType (IndexType)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (IndirectCommandsLayoutCreateInfoNV)
 import {-# SOURCE #-} Vulkan.Extensions.Handles (IndirectCommandsLayoutNV)
@@ -218,12 +219,14 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (MemoryGetAndroidHardwareBufferInfoANDROID)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_fd (MemoryGetFdInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_win32 (MemoryGetWin32HandleInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_external_memory (MemoryGetZirconHandleInfoFUCHSIA)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_external_memory_host (MemoryHostPointerPropertiesEXT)
 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.Extensions.VK_KHR_get_memory_requirements2 (MemoryRequirements2KHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_win32 (MemoryWin32HandlePropertiesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_external_memory (MemoryZirconHandlePropertiesFUCHSIA)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_surface (MetalSurfaceCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (MultisamplePropertiesEXT)
 import {-# SOURCE #-} Vulkan.Core10.Enums.ObjectType (ObjectType)
@@ -300,10 +303,13 @@
 import {-# SOURCE #-} Vulkan.Core10.Sampler (SamplerCreateInfo)
 import {-# SOURCE #-} Vulkan.Core11.Handles (SamplerYcbcrConversion)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (SamplerYcbcrConversionCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QNX_screen_surface (ScreenSurfaceCreateInfoQNX)
+import {-# SOURCE #-} Vulkan.Extensions.VK_QNX_screen_surface (Screen_window)
 import {-# SOURCE #-} Vulkan.Core10.Handles (Semaphore)
 import {-# SOURCE #-} Vulkan.Core10.QueueSemaphore (SemaphoreCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_semaphore_fd (SemaphoreGetFdInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_semaphore_win32 (SemaphoreGetWin32HandleInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_external_semaphore (SemaphoreGetZirconHandleInfoFUCHSIA)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (SemaphoreSignalInfo)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (SemaphoreWaitInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (ShaderGroupShaderKHR)
@@ -352,6 +358,7 @@
 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 {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface (Zx_handle_t)
 data InstanceCmds = InstanceCmds
   { instanceCmdsHandle :: Ptr Instance_T
   , pVkDestroyInstance :: FunPtr (Ptr Instance_T -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
@@ -393,6 +400,8 @@
   , pVkGetPhysicalDeviceDirectFBPresentationSupportEXT :: FunPtr (Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> ("dfb" ::: Ptr IDirectFB) -> IO Bool32)
   , pVkCreateImagePipeSurfaceFUCHSIA :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr ImagePipeSurfaceCreateInfoFUCHSIA) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result)
   , pVkCreateStreamDescriptorSurfaceGGP :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr StreamDescriptorSurfaceCreateInfoGGP) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result)
+  , pVkCreateScreenSurfaceQNX :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr ScreenSurfaceCreateInfoQNX) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result)
+  , pVkGetPhysicalDeviceScreenPresentationSupportQNX :: FunPtr (Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> Ptr Screen_window -> IO Bool32)
   , pVkCreateDebugReportCallbackEXT :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr DebugReportCallbackCreateInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pCallback" ::: Ptr DebugReportCallbackEXT) -> IO Result)
   , pVkDestroyDebugReportCallbackEXT :: FunPtr (Ptr Instance_T -> DebugReportCallbackEXT -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
   , pVkDebugReportMessageEXT :: FunPtr (Ptr Instance_T -> DebugReportFlagsEXT -> DebugReportObjectTypeEXT -> ("object" ::: Word64) -> ("location" ::: CSize) -> ("messageCode" ::: Int32) -> ("pLayerPrefix" ::: Ptr CChar) -> ("pMessage" ::: Ptr CChar) -> IO ())
@@ -453,7 +462,7 @@
     nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
     nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
     nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
-    nullFunPtr nullFunPtr nullFunPtr nullFunPtr
+    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
 
 -- | A version of 'getInstanceProcAddr' which can be called
 -- with a null pointer for the instance.
@@ -511,6 +520,8 @@
   vkGetPhysicalDeviceDirectFBPresentationSupportEXT <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"#)
   vkCreateImagePipeSurfaceFUCHSIA <- getInstanceProcAddr' handle (Ptr "vkCreateImagePipeSurfaceFUCHSIA"#)
   vkCreateStreamDescriptorSurfaceGGP <- getInstanceProcAddr' handle (Ptr "vkCreateStreamDescriptorSurfaceGGP"#)
+  vkCreateScreenSurfaceQNX <- getInstanceProcAddr' handle (Ptr "vkCreateScreenSurfaceQNX"#)
+  vkGetPhysicalDeviceScreenPresentationSupportQNX <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceScreenPresentationSupportQNX"#)
   vkCreateDebugReportCallbackEXT <- getInstanceProcAddr' handle (Ptr "vkCreateDebugReportCallbackEXT"#)
   vkDestroyDebugReportCallbackEXT <- getInstanceProcAddr' handle (Ptr "vkDestroyDebugReportCallbackEXT"#)
   vkDebugReportMessageEXT <- getInstanceProcAddr' handle (Ptr "vkDebugReportMessageEXT"#)
@@ -595,6 +606,8 @@
     (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> ("dfb" ::: Ptr IDirectFB) -> IO Bool32) vkGetPhysicalDeviceDirectFBPresentationSupportEXT)
     (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr ImagePipeSurfaceCreateInfoFUCHSIA) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result) vkCreateImagePipeSurfaceFUCHSIA)
     (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr StreamDescriptorSurfaceCreateInfoGGP) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result) vkCreateStreamDescriptorSurfaceGGP)
+    (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr ScreenSurfaceCreateInfoQNX) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result) vkCreateScreenSurfaceQNX)
+    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> Ptr Screen_window -> IO Bool32) vkGetPhysicalDeviceScreenPresentationSupportQNX)
     (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr DebugReportCallbackCreateInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pCallback" ::: Ptr DebugReportCallbackEXT) -> IO Result) vkCreateDebugReportCallbackEXT)
     (castFunPtr @_ @(Ptr Instance_T -> DebugReportCallbackEXT -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyDebugReportCallbackEXT)
     (castFunPtr @_ @(Ptr Instance_T -> DebugReportFlagsEXT -> DebugReportObjectTypeEXT -> ("object" ::: Word64) -> ("location" ::: CSize) -> ("messageCode" ::: Int32) -> ("pLayerPrefix" ::: Ptr CChar) -> ("pMessage" ::: Ptr CChar) -> IO ()) vkDebugReportMessageEXT)
@@ -790,10 +803,14 @@
   , pVkGetMemoryWin32HandlePropertiesKHR :: FunPtr (Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> HANDLE -> ("pMemoryWin32HandleProperties" ::: Ptr MemoryWin32HandlePropertiesKHR) -> IO Result)
   , pVkGetMemoryFdKHR :: FunPtr (Ptr Device_T -> ("pGetFdInfo" ::: Ptr MemoryGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO Result)
   , pVkGetMemoryFdPropertiesKHR :: FunPtr (Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> ("fd" ::: CInt) -> ("pMemoryFdProperties" ::: Ptr MemoryFdPropertiesKHR) -> IO Result)
+  , pVkGetMemoryZirconHandleFUCHSIA :: FunPtr (Ptr Device_T -> ("pGetZirconHandleInfo" ::: Ptr MemoryGetZirconHandleInfoFUCHSIA) -> ("pZirconHandle" ::: Ptr Zx_handle_t) -> IO Result)
+  , pVkGetMemoryZirconHandlePropertiesFUCHSIA :: FunPtr (Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> ("zirconHandle" ::: Zx_handle_t) -> ("pMemoryZirconHandleProperties" ::: Ptr MemoryZirconHandlePropertiesFUCHSIA) -> IO Result)
   , pVkGetSemaphoreWin32HandleKHR :: FunPtr (Ptr Device_T -> ("pGetWin32HandleInfo" ::: Ptr SemaphoreGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO Result)
   , pVkImportSemaphoreWin32HandleKHR :: FunPtr (Ptr Device_T -> ("pImportSemaphoreWin32HandleInfo" ::: Ptr ImportSemaphoreWin32HandleInfoKHR) -> IO Result)
   , pVkGetSemaphoreFdKHR :: FunPtr (Ptr Device_T -> ("pGetFdInfo" ::: Ptr SemaphoreGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO Result)
   , pVkImportSemaphoreFdKHR :: FunPtr (Ptr Device_T -> ("pImportSemaphoreFdInfo" ::: Ptr ImportSemaphoreFdInfoKHR) -> IO Result)
+  , pVkGetSemaphoreZirconHandleFUCHSIA :: FunPtr (Ptr Device_T -> ("pGetZirconHandleInfo" ::: Ptr SemaphoreGetZirconHandleInfoFUCHSIA) -> ("pZirconHandle" ::: Ptr Zx_handle_t) -> IO Result)
+  , pVkImportSemaphoreZirconHandleFUCHSIA :: FunPtr (Ptr Device_T -> ("pImportSemaphoreZirconHandleInfo" ::: Ptr ImportSemaphoreZirconHandleInfoFUCHSIA) -> IO Result)
   , pVkGetFenceWin32HandleKHR :: FunPtr (Ptr Device_T -> ("pGetWin32HandleInfo" ::: Ptr FenceGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO Result)
   , pVkImportFenceWin32HandleKHR :: FunPtr (Ptr Device_T -> ("pImportFenceWin32HandleInfo" ::: Ptr ImportFenceWin32HandleInfoKHR) -> IO Result)
   , pVkGetFenceFdKHR :: FunPtr (Ptr Device_T -> ("pGetFdInfo" ::: Ptr FenceGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO Result)
@@ -1012,7 +1029,8 @@
     nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
     nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
     nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
-    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
+    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
+    nullFunPtr
 
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
@@ -1181,10 +1199,14 @@
   vkGetMemoryWin32HandlePropertiesKHR <- getDeviceProcAddr' handle (Ptr "vkGetMemoryWin32HandlePropertiesKHR"#)
   vkGetMemoryFdKHR <- getDeviceProcAddr' handle (Ptr "vkGetMemoryFdKHR"#)
   vkGetMemoryFdPropertiesKHR <- getDeviceProcAddr' handle (Ptr "vkGetMemoryFdPropertiesKHR"#)
+  vkGetMemoryZirconHandleFUCHSIA <- getDeviceProcAddr' handle (Ptr "vkGetMemoryZirconHandleFUCHSIA"#)
+  vkGetMemoryZirconHandlePropertiesFUCHSIA <- getDeviceProcAddr' handle (Ptr "vkGetMemoryZirconHandlePropertiesFUCHSIA"#)
   vkGetSemaphoreWin32HandleKHR <- getDeviceProcAddr' handle (Ptr "vkGetSemaphoreWin32HandleKHR"#)
   vkImportSemaphoreWin32HandleKHR <- getDeviceProcAddr' handle (Ptr "vkImportSemaphoreWin32HandleKHR"#)
   vkGetSemaphoreFdKHR <- getDeviceProcAddr' handle (Ptr "vkGetSemaphoreFdKHR"#)
   vkImportSemaphoreFdKHR <- getDeviceProcAddr' handle (Ptr "vkImportSemaphoreFdKHR"#)
+  vkGetSemaphoreZirconHandleFUCHSIA <- getDeviceProcAddr' handle (Ptr "vkGetSemaphoreZirconHandleFUCHSIA"#)
+  vkImportSemaphoreZirconHandleFUCHSIA <- getDeviceProcAddr' handle (Ptr "vkImportSemaphoreZirconHandleFUCHSIA"#)
   vkGetFenceWin32HandleKHR <- getDeviceProcAddr' handle (Ptr "vkGetFenceWin32HandleKHR"#)
   vkImportFenceWin32HandleKHR <- getDeviceProcAddr' handle (Ptr "vkImportFenceWin32HandleKHR"#)
   vkGetFenceFdKHR <- getDeviceProcAddr' handle (Ptr "vkGetFenceFdKHR"#)
@@ -1506,10 +1528,14 @@
     (castFunPtr @_ @(Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> HANDLE -> ("pMemoryWin32HandleProperties" ::: Ptr MemoryWin32HandlePropertiesKHR) -> IO Result) vkGetMemoryWin32HandlePropertiesKHR)
     (castFunPtr @_ @(Ptr Device_T -> ("pGetFdInfo" ::: Ptr MemoryGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO Result) vkGetMemoryFdKHR)
     (castFunPtr @_ @(Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> ("fd" ::: CInt) -> ("pMemoryFdProperties" ::: Ptr MemoryFdPropertiesKHR) -> IO Result) vkGetMemoryFdPropertiesKHR)
+    (castFunPtr @_ @(Ptr Device_T -> ("pGetZirconHandleInfo" ::: Ptr MemoryGetZirconHandleInfoFUCHSIA) -> ("pZirconHandle" ::: Ptr Zx_handle_t) -> IO Result) vkGetMemoryZirconHandleFUCHSIA)
+    (castFunPtr @_ @(Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> ("zirconHandle" ::: Zx_handle_t) -> ("pMemoryZirconHandleProperties" ::: Ptr MemoryZirconHandlePropertiesFUCHSIA) -> IO Result) vkGetMemoryZirconHandlePropertiesFUCHSIA)
     (castFunPtr @_ @(Ptr Device_T -> ("pGetWin32HandleInfo" ::: Ptr SemaphoreGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO Result) vkGetSemaphoreWin32HandleKHR)
     (castFunPtr @_ @(Ptr Device_T -> ("pImportSemaphoreWin32HandleInfo" ::: Ptr ImportSemaphoreWin32HandleInfoKHR) -> IO Result) vkImportSemaphoreWin32HandleKHR)
     (castFunPtr @_ @(Ptr Device_T -> ("pGetFdInfo" ::: Ptr SemaphoreGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO Result) vkGetSemaphoreFdKHR)
     (castFunPtr @_ @(Ptr Device_T -> ("pImportSemaphoreFdInfo" ::: Ptr ImportSemaphoreFdInfoKHR) -> IO Result) vkImportSemaphoreFdKHR)
+    (castFunPtr @_ @(Ptr Device_T -> ("pGetZirconHandleInfo" ::: Ptr SemaphoreGetZirconHandleInfoFUCHSIA) -> ("pZirconHandle" ::: Ptr Zx_handle_t) -> IO Result) vkGetSemaphoreZirconHandleFUCHSIA)
+    (castFunPtr @_ @(Ptr Device_T -> ("pImportSemaphoreZirconHandleInfo" ::: Ptr ImportSemaphoreZirconHandleInfoFUCHSIA) -> IO Result) vkImportSemaphoreZirconHandleFUCHSIA)
     (castFunPtr @_ @(Ptr Device_T -> ("pGetWin32HandleInfo" ::: Ptr FenceGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO Result) vkGetFenceWin32HandleKHR)
     (castFunPtr @_ @(Ptr Device_T -> ("pImportFenceWin32HandleInfo" ::: Ptr ImportFenceWin32HandleInfoKHR) -> IO Result) vkImportFenceWin32HandleKHR)
     (castFunPtr @_ @(Ptr Device_T -> ("pGetFdInfo" ::: Ptr FenceGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO Result) vkGetFenceFdKHR)
diff --git a/src/Vulkan/Extensions.hs b/src/Vulkan/Extensions.hs
--- a/src/Vulkan/Extensions.hs
+++ b/src/Vulkan/Extensions.hs
@@ -94,6 +94,8 @@
                           , module Vulkan.Extensions.VK_EXT_validation_flags
                           , module Vulkan.Extensions.VK_EXT_vertex_attribute_divisor
                           , module Vulkan.Extensions.VK_EXT_ycbcr_image_arrays
+                          , module Vulkan.Extensions.VK_FUCHSIA_external_memory
+                          , module Vulkan.Extensions.VK_FUCHSIA_external_semaphore
                           , module Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface
                           , module Vulkan.Extensions.VK_GGP_frame_token
                           , module Vulkan.Extensions.VK_GGP_stream_descriptor_surface
@@ -227,6 +229,7 @@
                           , module Vulkan.Extensions.VK_QCOM_render_pass_store_ops
                           , module Vulkan.Extensions.VK_QCOM_render_pass_transform
                           , module Vulkan.Extensions.VK_QCOM_rotated_copy_commands
+                          , module Vulkan.Extensions.VK_QNX_screen_surface
                           , module Vulkan.Extensions.VK_VALVE_mutable_descriptor_type
                           ) where
 import Vulkan.Extensions.Dependencies
@@ -323,6 +326,8 @@
 import Vulkan.Extensions.VK_EXT_validation_flags
 import Vulkan.Extensions.VK_EXT_vertex_attribute_divisor
 import Vulkan.Extensions.VK_EXT_ycbcr_image_arrays
+import Vulkan.Extensions.VK_FUCHSIA_external_memory
+import Vulkan.Extensions.VK_FUCHSIA_external_semaphore
 import Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface
 import Vulkan.Extensions.VK_GGP_frame_token
 import Vulkan.Extensions.VK_GGP_stream_descriptor_surface
@@ -456,5 +461,6 @@
 import Vulkan.Extensions.VK_QCOM_render_pass_store_ops
 import Vulkan.Extensions.VK_QCOM_render_pass_transform
 import Vulkan.Extensions.VK_QCOM_rotated_copy_commands
+import Vulkan.Extensions.VK_QNX_screen_surface
 import Vulkan.Extensions.VK_VALVE_mutable_descriptor_type
 
diff --git a/src/Vulkan/Extensions/Dependencies.hs b/src/Vulkan/Extensions/Dependencies.hs
--- a/src/Vulkan/Extensions/Dependencies.hs
+++ b/src/Vulkan/Extensions/Dependencies.hs
@@ -59,6 +59,8 @@
 import Vulkan.Extensions.VK_EXT_transform_feedback (pattern EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME)
 import Vulkan.Extensions.VK_EXT_vertex_attribute_divisor (pattern EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME)
 import Vulkan.Extensions.VK_EXT_ycbcr_image_arrays (pattern EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME)
+import Vulkan.Extensions.VK_FUCHSIA_external_memory (pattern FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME)
+import Vulkan.Extensions.VK_FUCHSIA_external_semaphore (pattern FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME)
 import Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface (pattern FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME)
 import Vulkan.Extensions.VK_GGP_frame_token (pattern GGP_FRAME_TOKEN_EXTENSION_NAME)
 import Vulkan.Extensions.VK_GGP_stream_descriptor_surface (pattern GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME)
@@ -166,6 +168,7 @@
 import Vulkan.Extensions.VK_NV_win32_keyed_mutex (pattern NV_WIN32_KEYED_MUTEX_EXTENSION_NAME)
 import Vulkan.Extensions.VK_QCOM_render_pass_transform (pattern QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME)
 import Vulkan.Extensions.VK_QCOM_rotated_copy_commands (pattern QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME)
+import Vulkan.Extensions.VK_QNX_screen_surface (pattern QNX_SCREEN_SURFACE_EXTENSION_NAME)
 import Vulkan.Extensions.VK_VALVE_mutable_descriptor_type (pattern VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME)
 -- | The set of other extensions required to use this extension
 extensionDependencies :: ("extensionName" ::: ByteString) -> [ByteString]
@@ -455,13 +458,8 @@
   QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME             -> [KHR_SWAPCHAIN_EXTENSION_NAME, KHR_SURFACE_EXTENSION_NAME]
   EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME               -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]
   NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME           -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]
-  KHR_SYNCHRONIZATION_2_EXTENSION_NAME ->
-    [ KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
-    , KHR_CREATE_RENDERPASS_2_EXTENSION_NAME
-    , KHR_MULTIVIEW_EXTENSION_NAME
-    , KHR_MAINTENANCE2_EXTENSION_NAME
-    ]
-  KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]
+  KHR_SYNCHRONIZATION_2_EXTENSION_NAME                  -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]
+  KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME   -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]
   NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME ->
     [ KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME
     , KHR_CREATE_RENDERPASS_2_EXTENSION_NAME
@@ -481,6 +479,17 @@
   EXT_DIRECTFB_SURFACE_EXTENSION_NAME -> [KHR_SURFACE_EXTENSION_NAME]
   VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME ->
     [KHR_MAINTENANCE3_EXTENSION_NAME, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]
+  FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME ->
+    [ KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME
+    , KHR_EXTERNAL_MEMORY_EXTENSION_NAME
+    , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
+    ]
+  FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME ->
+    [ KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME
+    , KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME
+    , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
+    ]
+  QNX_SCREEN_SURFACE_EXTENSION_NAME -> [KHR_SURFACE_EXTENSION_NAME]
   _ -> []
 
 -- | The minimum required API version to use this extension
diff --git a/src/Vulkan/Extensions/Handles.hs b/src/Vulkan/Extensions/Handles.hs
--- a/src/Vulkan/Extensions/Handles.hs
+++ b/src/Vulkan/Extensions/Handles.hs
@@ -299,6 +299,7 @@
 -- 'Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface.createImagePipeSurfaceFUCHSIA',
 -- 'Vulkan.Extensions.VK_MVK_macos_surface.createMacOSSurfaceMVK',
 -- 'Vulkan.Extensions.VK_EXT_metal_surface.createMetalSurfaceEXT',
+-- 'Vulkan.Extensions.VK_QNX_screen_surface.createScreenSurfaceQNX',
 -- 'Vulkan.Extensions.VK_GGP_stream_descriptor_surface.createStreamDescriptorSurfaceGGP',
 -- 'Vulkan.Extensions.VK_NN_vi_surface.createViSurfaceNN',
 -- 'Vulkan.Extensions.VK_KHR_wayland_surface.createWaylandSurfaceKHR',
@@ -355,7 +356,7 @@
 -- presentation engine. Use of a presentable image /must/ occur only after
 -- the image is returned by
 -- 'Vulkan.Extensions.VK_KHR_swapchain.acquireNextImageKHR', and before it
--- is presented by 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR'.
+-- is released by 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR'.
 -- This includes transitioning the image layout and rendering commands.
 --
 -- An application /can/ acquire use of a presentable image with
diff --git a/src/Vulkan/Extensions/VK_EXT_calibrated_timestamps.hs b/src/Vulkan/Extensions/VK_EXT_calibrated_timestamps.hs
--- a/src/Vulkan/Extensions/VK_EXT_calibrated_timestamps.hs
+++ b/src/Vulkan/Extensions/VK_EXT_calibrated_timestamps.hs
@@ -113,6 +113,12 @@
 -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@timestampPeriod@
 -- makes it possible to calculate future device timestamps as follows:
 --
+-- 6) In what queue are timestamp values in time domain
+-- 'TIME_DOMAIN_DEVICE_EXT' captured by 'getCalibratedTimestampsEXT'?
+--
+-- __RESOLVED__: An implementation supporting this extension will have all
+-- its VkQueue share the same time domain.
+--
 -- > futureTimestamp = calibratedTimestamp + deltaNanoseconds / timestampPeriod
 --
 -- 6) Can the host and device timestamp values drift apart over longer
@@ -147,6 +153,10 @@
 --
 -- == Version History
 --
+-- -   Revision 2, 2021-03-16 (Lionel Landwerlin)
+--
+--     -   Specify requirement on device timestamps
+--
 -- -   Revision 1, 2018-10-04 (Daniel Rakos)
 --
 --     -   Internal revisions.
@@ -458,6 +468,15 @@
 -- | VkTimeDomainEXT - Supported time domains
 --
 -- = Description
+--
+-- Note
+--
+-- An implementation supporting @VK_EXT_calibrated_timestamps@ will use the
+-- same time domain for all its 'Vulkan.Core10.Handles.Queue' so that
+-- timestamp values reported for 'TIME_DOMAIN_DEVICE_EXT' can be matched to
+-- any timestamp captured through
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp' or
+-- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdWriteTimestamp2KHR' .
 --
 -- > struct timespec tv;
 -- > clock_gettime(CLOCK_MONOTONIC, &tv);
diff --git a/src/Vulkan/Extensions/VK_EXT_calibrated_timestamps.hs-boot b/src/Vulkan/Extensions/VK_EXT_calibrated_timestamps.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_calibrated_timestamps.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_calibrated_timestamps.hs-boot
@@ -113,6 +113,12 @@
 -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@timestampPeriod@
 -- makes it possible to calculate future device timestamps as follows:
 --
+-- 6) In what queue are timestamp values in time domain
+-- 'TIME_DOMAIN_DEVICE_EXT' captured by 'getCalibratedTimestampsEXT'?
+--
+-- __RESOLVED__: An implementation supporting this extension will have all
+-- its VkQueue share the same time domain.
+--
 -- > futureTimestamp = calibratedTimestamp + deltaNanoseconds / timestampPeriod
 --
 -- 6) Can the host and device timestamp values drift apart over longer
@@ -146,6 +152,10 @@
 -- domains calibrated and thus can never be zero.
 --
 -- == Version History
+--
+-- -   Revision 2, 2021-03-16 (Lionel Landwerlin)
+--
+--     -   Specify requirement on device timestamps
 --
 -- -   Revision 1, 2018-10-04 (Daniel Rakos)
 --
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
@@ -235,7 +235,7 @@
 -- >     PFN_vkCreateDebugUtilsMessengerEXT pfnCreateDebugUtilsMessengerEXT = (PFN_vkCreateDebugUtilsMessengerEXT)vkGetInstanceProcAddr(instance, "vkCreateDebugUtilsMessengerEXT");
 -- >     PFN_vkDestroyDebugUtilsMessengerEXT pfnDestroyDebugUtilsMessengerEXT = (PFN_vkDestroyDebugUtilsMessengerEXT)vkGetInstanceProcAddr(instance, "vkDestroyDebugUtilsMessengerEXT");
 -- >
--- >     VkDebugUtilsMessengeCreateInfoEXT callback1 = {
+-- >     VkDebugUtilsMessengerCreateInfoEXT callback1 = {
 -- >             VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT,  // sType
 -- >             NULL,                                                     // pNext
 -- >             0,                                                        // flags
@@ -252,7 +252,7 @@
 -- >     }
 -- >
 -- >     callback1.messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT;
--- >     callback1.pfnCallback = myDebugBreak;
+-- >     callback1.pfnUserCallback = myDebugBreak;
 -- >     callback1.pUserData = NULL;
 -- >     res = pfnCreateDebugUtilsMessengerEXT(instance, &callback1, NULL, &cb2);
 -- >     if (res != VK_SUCCESS) {
@@ -2158,13 +2158,16 @@
 --
 -- = Description
 --
--- The callback /must/ not call 'destroyDebugUtilsMessengerEXT'.
---
 -- The callback returns a 'Vulkan.Core10.FundamentalTypes.Bool32', which is
 -- interpreted in a layer-specified manner. The application /should/ always
 -- return 'Vulkan.Core10.FundamentalTypes.FALSE'. The
 -- 'Vulkan.Core10.FundamentalTypes.TRUE' value is reserved for use in layer
 -- development.
+--
+-- == Valid Usage
+--
+-- -   #VUID-PFN_vkDebugUtilsMessengerCallbackEXT-None-04769# The callback
+--     /must/ not make calls to any Vulkan commands.
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_debug_utils.hs-boot b/src/Vulkan/Extensions/VK_EXT_debug_utils.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_debug_utils.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_debug_utils.hs-boot
@@ -235,7 +235,7 @@
 -- >     PFN_vkCreateDebugUtilsMessengerEXT pfnCreateDebugUtilsMessengerEXT = (PFN_vkCreateDebugUtilsMessengerEXT)vkGetInstanceProcAddr(instance, "vkCreateDebugUtilsMessengerEXT");
 -- >     PFN_vkDestroyDebugUtilsMessengerEXT pfnDestroyDebugUtilsMessengerEXT = (PFN_vkDestroyDebugUtilsMessengerEXT)vkGetInstanceProcAddr(instance, "vkDestroyDebugUtilsMessengerEXT");
 -- >
--- >     VkDebugUtilsMessengeCreateInfoEXT callback1 = {
+-- >     VkDebugUtilsMessengerCreateInfoEXT callback1 = {
 -- >             VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT,  // sType
 -- >             NULL,                                                     // pNext
 -- >             0,                                                        // flags
@@ -252,7 +252,7 @@
 -- >     }
 -- >
 -- >     callback1.messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT;
--- >     callback1.pfnCallback = myDebugBreak;
+-- >     callback1.pfnUserCallback = myDebugBreak;
 -- >     callback1.pUserData = NULL;
 -- >     res = pfnCreateDebugUtilsMessengerEXT(instance, &callback1, NULL, &cb2);
 -- >     if (res != VK_SUCCESS) {
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_image_atomic_int64.hs b/src/Vulkan/Extensions/VK_EXT_shader_image_atomic_int64.hs
--- a/src/Vulkan/Extensions/VK_EXT_shader_image_atomic_int64.hs
+++ b/src/Vulkan/Extensions/VK_EXT_shader_image_atomic_int64.hs
@@ -51,7 +51,7 @@
 -- [__Interactions and External Dependencies__]
 --
 --     -   This extension requires the
---         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_EXT_shader_image_atomic_int64.html SPV_EXT_shader_image_int64>
+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_shader_image_int64.html SPV_EXT_shader_image_int64>
 --         SPIR-V extension.
 --
 --     -   This extension requires the
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_image_atomic_int64.hs-boot b/src/Vulkan/Extensions/VK_EXT_shader_image_atomic_int64.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_shader_image_atomic_int64.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_shader_image_atomic_int64.hs-boot
@@ -51,7 +51,7 @@
 -- [__Interactions and External Dependencies__]
 --
 --     -   This extension requires the
---         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_EXT_shader_image_atomic_int64.html SPV_EXT_shader_image_int64>
+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_shader_image_int64.html SPV_EXT_shader_image_int64>
 --         SPIR-V extension.
 --
 --     -   This extension requires the
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
@@ -823,12 +823,6 @@
 --
 -- == Valid Usage
 --
--- -   #VUID-vkCmdBeginQueryIndexedEXT-queryPool-01922# @queryPool@ /must/
---     have been created with a @queryType@ that differs from that of any
---     queries that are
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>
---     within @commandBuffer@
---
 -- -   #VUID-vkCmdBeginQueryIndexedEXT-None-00807# All queries used by the
 --     command /must/ be unavailable
 --
@@ -885,6 +879,12 @@
 --     in the current subpass’s view mask /must/ be less than or equal to
 --     the number of queries in @queryPool@
 --
+-- -   #VUID-vkCmdBeginQueryIndexedEXT-queryPool-04753# If the @queryPool@
+--     was created with the same @queryType@ as that of another
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>
+--     query within @commandBuffer@, then @index@ /must/ not match the
+--     index used for the active query
+--
 -- -   #VUID-vkCmdBeginQueryIndexedEXT-queryType-02338# If the @queryType@
 --     used to create @queryPool@ was
 --     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'
@@ -1189,6 +1189,16 @@
 --     /must/ contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
 --
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'
+--     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
+--     this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-02691# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
 --     operations as a result of this command, then the image view’s
@@ -1341,7 +1351,7 @@
 --     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@
 --     as a result of this command, then the @Type@ of the @Texel@ operand
 --     of that instruction /must/ have at least as many components as the
---     image view’s format.
+--     buffer view’s format.
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04470# If a
 --     'Vulkan.Core10.Handles.ImageView' with a
@@ -1587,6 +1597,13 @@
 --     then the @blendEnable@ member of the corresponding element of the
 --     @pAttachments@ member of @pColorBlendState@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-04740# If
+--     rasterization is not disabled in the bound graphics pipeline, and
+--     neither the @@ nor the @@ extensions are enabled, then
+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     /must/ be the same as the current subpass color and\/or
+--     depth\/stencil attachments
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-04007# All vertex input
 --     bindings accessed via vertex input variables declared in the vertex
diff --git a/src/Vulkan/Extensions/VK_FUCHSIA_external_memory.hs b/src/Vulkan/Extensions/VK_FUCHSIA_external_memory.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_FUCHSIA_external_memory.hs
@@ -0,0 +1,511 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_FUCHSIA_external_memory - device extension
+--
+-- == VK_FUCHSIA_external_memory
+--
+-- [__Name String__]
+--     @VK_FUCHSIA_external_memory@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     365
+--
+-- [__Revision__]
+--     1
+--
+-- [__Extension and Version Dependencies__]
+--
+--     -   Requires Vulkan 1.0
+--
+--     -   Requires @VK_KHR_external_memory_capabilities@
+--
+--     -   Requires @VK_KHR_external_memory@
+--
+-- [__Contact__]
+--
+--     -   John Rosasco
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_FUCHSIA_external_memory:%20&body=@rosasco%20 >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2021-03-01
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Craig Stout, Google
+--
+--     -   John Bauman, Google
+--
+--     -   John Rosasco, Google
+--
+-- == Description
+--
+-- Vulkan apps may wish to export or import device memory handles to or
+-- from other logical devices, instances or APIs.
+--
+-- This memory sharing can eliminate copies of memory buffers when
+-- different subsystems need to interoperate on them. Sharing memory
+-- buffers may also facilitate a better distribution of processing workload
+-- for more complex memory manipulation pipelines.
+--
+-- == New Commands
+--
+-- -   'getMemoryZirconHandleFUCHSIA'
+--
+-- -   'getMemoryZirconHandlePropertiesFUCHSIA'
+--
+-- == New Structures
+--
+-- -   'MemoryGetZirconHandleInfoFUCHSIA'
+--
+-- -   'MemoryZirconHandlePropertiesFUCHSIA'
+--
+-- -   Extending 'Vulkan.Core10.Memory.MemoryAllocateInfo':
+--
+--     -   'ImportMemoryZirconHandleInfoFUCHSIA'
+--
+-- == New Enum Constants
+--
+-- -   'FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME'
+--
+-- -   'FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits':
+--
+--     -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA'
+--
+-- == Issues
+--
+-- See @VK_KHR_external_memory@ issues list for further information.
+--
+-- == Version History
+--
+-- -   Revision 1, 2021-03-01 (John Rosasco)
+--
+--     -   Initial draft
+--
+-- = See Also
+--
+-- 'ImportMemoryZirconHandleInfoFUCHSIA',
+-- 'MemoryGetZirconHandleInfoFUCHSIA',
+-- 'MemoryZirconHandlePropertiesFUCHSIA', 'getMemoryZirconHandleFUCHSIA',
+-- 'getMemoryZirconHandlePropertiesFUCHSIA'
+--
+-- = Document Notes
+--
+-- For more information, see the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_FUCHSIA_external_memory Vulkan Specification>
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_FUCHSIA_external_memory  ( getMemoryZirconHandleFUCHSIA
+                                                     , getMemoryZirconHandlePropertiesFUCHSIA
+                                                     , ImportMemoryZirconHandleInfoFUCHSIA(..)
+                                                     , MemoryZirconHandlePropertiesFUCHSIA(..)
+                                                     , MemoryGetZirconHandleInfoFUCHSIA(..)
+                                                     , FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION
+                                                     , pattern FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION
+                                                     , FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME
+                                                     , pattern FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME
+                                                     , Zx_handle_t
+                                                     ) where
+
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Exception.Base (bracket)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Foreign.Marshal.Alloc (allocaBytesAligned)
+import Foreign.Marshal.Alloc (callocBytes)
+import Foreign.Marshal.Alloc (free)
+import GHC.Base (when)
+import GHC.IO (throwIO)
+import GHC.Ptr (nullFunPtr)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Control.Monad.IO.Class (MonadIO)
+import Data.String (IsString)
+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 GHC.IO.Exception (IOErrorType(..))
+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.NamedType ((:::))
+import Vulkan.Core10.Handles (Device)
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Dynamic (DeviceCmds(pVkGetMemoryZirconHandleFUCHSIA))
+import Vulkan.Dynamic (DeviceCmds(pVkGetMemoryZirconHandlePropertiesFUCHSIA))
+import Vulkan.Core10.Handles (DeviceMemory)
+import Vulkan.Core10.Handles (Device_T)
+import Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits)
+import Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits(..))
+import Vulkan.Core10.Enums.Result (Result)
+import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Exception (VulkanException(..))
+import Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface (Zx_handle_t)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface (Zx_handle_t)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetMemoryZirconHandleFUCHSIA
+  :: FunPtr (Ptr Device_T -> Ptr MemoryGetZirconHandleInfoFUCHSIA -> Ptr Zx_handle_t -> IO Result) -> Ptr Device_T -> Ptr MemoryGetZirconHandleInfoFUCHSIA -> Ptr Zx_handle_t -> IO Result
+
+-- | vkGetMemoryZirconHandleFUCHSIA - Get a Zircon handle for an external
+-- memory object
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_TOO_MANY_OBJECTS'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.Handles.Device', 'MemoryGetZirconHandleInfoFUCHSIA'
+getMemoryZirconHandleFUCHSIA :: forall io
+                              . (MonadIO io)
+                             => -- | @device@ is the VkDevice.
+                                --
+                                -- #VUID-vkGetMemoryZirconHandleFUCHSIA-device-parameter# @device@ /must/
+                                -- be a valid 'Vulkan.Core10.Handles.Device' handle
+                                Device
+                             -> -- | @pGetZirconHandleInfo@ is a pointer to a
+                                -- 'MemoryGetZirconHandleInfoFUCHSIA' structure.
+                                --
+                                -- #VUID-vkGetMemoryZirconHandleFUCHSIA-pGetZirconHandleInfo-parameter#
+                                -- @pGetZirconHandleInfo@ /must/ be a valid pointer to a valid
+                                -- 'MemoryGetZirconHandleInfoFUCHSIA' structure
+                                MemoryGetZirconHandleInfoFUCHSIA
+                             -> io (("zirconHandle" ::: Zx_handle_t))
+getMemoryZirconHandleFUCHSIA device getZirconHandleInfo = liftIO . evalContT $ do
+  let vkGetMemoryZirconHandleFUCHSIAPtr = pVkGetMemoryZirconHandleFUCHSIA (deviceCmds (device :: Device))
+  lift $ unless (vkGetMemoryZirconHandleFUCHSIAPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetMemoryZirconHandleFUCHSIA is null" Nothing Nothing
+  let vkGetMemoryZirconHandleFUCHSIA' = mkVkGetMemoryZirconHandleFUCHSIA vkGetMemoryZirconHandleFUCHSIAPtr
+  pGetZirconHandleInfo <- ContT $ withCStruct (getZirconHandleInfo)
+  pPZirconHandle <- ContT $ bracket (callocBytes @Zx_handle_t 4) free
+  r <- lift $ traceAroundEvent "vkGetMemoryZirconHandleFUCHSIA" (vkGetMemoryZirconHandleFUCHSIA' (deviceHandle (device)) pGetZirconHandleInfo (pPZirconHandle))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pZirconHandle <- lift $ peek @Zx_handle_t pPZirconHandle
+  pure $ (pZirconHandle)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetMemoryZirconHandlePropertiesFUCHSIA
+  :: FunPtr (Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> Zx_handle_t -> Ptr MemoryZirconHandlePropertiesFUCHSIA -> IO Result) -> Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> Zx_handle_t -> Ptr MemoryZirconHandlePropertiesFUCHSIA -> IO Result
+
+-- | vkGetMemoryZirconHandlePropertiesFUCHSIA - Get a Zircon handle
+-- properties for an external memory object
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE'
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits',
+-- 'MemoryZirconHandlePropertiesFUCHSIA'
+getMemoryZirconHandlePropertiesFUCHSIA :: forall io
+                                        . (MonadIO io)
+                                       => -- | @device@ is the VkDevice.
+                                          --
+                                          -- #VUID-vkGetMemoryZirconHandlePropertiesFUCHSIA-device-parameter#
+                                          -- @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+                                          Device
+                                       -> -- | @handleType@ is the type of @zirconHandle@
+                                          --
+                                          -- #VUID-vkGetMemoryZirconHandlePropertiesFUCHSIA-handleType-04773#
+                                          -- @handleType@ /must/ be
+                                          -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA'.
+                                          --
+                                          -- #VUID-vkGetMemoryZirconHandlePropertiesFUCHSIA-handleType-parameter#
+                                          -- @handleType@ /must/ be a valid
+                                          -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'
+                                          -- value
+                                          ExternalMemoryHandleTypeFlagBits
+                                       -> -- | @zirconHandle@ is a @zx_handle_t@ (Zircon) handle to the external
+                                          -- resource.
+                                          --
+                                          -- #VUID-vkGetMemoryZirconHandlePropertiesFUCHSIA-zirconHandle-04774#
+                                          -- @zirconHandle@ must reference a valid VMO.
+                                          ("zirconHandle" ::: Zx_handle_t)
+                                       -> io (MemoryZirconHandlePropertiesFUCHSIA)
+getMemoryZirconHandlePropertiesFUCHSIA device handleType zirconHandle = liftIO . evalContT $ do
+  let vkGetMemoryZirconHandlePropertiesFUCHSIAPtr = pVkGetMemoryZirconHandlePropertiesFUCHSIA (deviceCmds (device :: Device))
+  lift $ unless (vkGetMemoryZirconHandlePropertiesFUCHSIAPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetMemoryZirconHandlePropertiesFUCHSIA is null" Nothing Nothing
+  let vkGetMemoryZirconHandlePropertiesFUCHSIA' = mkVkGetMemoryZirconHandlePropertiesFUCHSIA vkGetMemoryZirconHandlePropertiesFUCHSIAPtr
+  pPMemoryZirconHandleProperties <- ContT (withZeroCStruct @MemoryZirconHandlePropertiesFUCHSIA)
+  r <- lift $ traceAroundEvent "vkGetMemoryZirconHandlePropertiesFUCHSIA" (vkGetMemoryZirconHandlePropertiesFUCHSIA' (deviceHandle (device)) (handleType) (zirconHandle) (pPMemoryZirconHandleProperties))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pMemoryZirconHandleProperties <- lift $ peekCStruct @MemoryZirconHandlePropertiesFUCHSIA pPMemoryZirconHandleProperties
+  pure $ (pMemoryZirconHandleProperties)
+
+
+-- | VkImportMemoryZirconHandleInfoFUCHSIA - Structure specifying import
+-- parameters for Zircon handle to external memory
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkImportMemoryZirconHandleInfoFUCHSIA-handleType-04771#
+--     @handleType@ /must/ be
+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA'.
+--
+-- -   #VUID-VkImportMemoryZirconHandleInfoFUCHSIA-handle-04772# @handle@
+--     must be a valid VMO handle.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkImportMemoryZirconHandleInfoFUCHSIA-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA'
+--
+-- -   #VUID-VkImportMemoryZirconHandleInfoFUCHSIA-handleType-parameter# If
+--     @handleType@ is not @0@, @handleType@ /must/ be a valid
+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'
+--     value
+--
+-- = See Also
+--
+-- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data ImportMemoryZirconHandleInfoFUCHSIA = ImportMemoryZirconHandleInfoFUCHSIA
+  { -- | @handleType@ is the type of @handle@.
+    handleType :: ExternalMemoryHandleTypeFlagBits
+  , -- | @handle@ is a @zx_handle_t@ (Zircon) handle to the external memory.
+    handle :: Zx_handle_t
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ImportMemoryZirconHandleInfoFUCHSIA)
+#endif
+deriving instance Show ImportMemoryZirconHandleInfoFUCHSIA
+
+instance ToCStruct ImportMemoryZirconHandleInfoFUCHSIA where
+  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ImportMemoryZirconHandleInfoFUCHSIA{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr ExternalMemoryHandleTypeFlagBits)) (handleType)
+    poke ((p `plusPtr` 20 :: Ptr Zx_handle_t)) (handle)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct ImportMemoryZirconHandleInfoFUCHSIA where
+  peekCStruct p = do
+    handleType <- peek @ExternalMemoryHandleTypeFlagBits ((p `plusPtr` 16 :: Ptr ExternalMemoryHandleTypeFlagBits))
+    handle <- peek @Zx_handle_t ((p `plusPtr` 20 :: Ptr Zx_handle_t))
+    pure $ ImportMemoryZirconHandleInfoFUCHSIA
+             handleType handle
+
+instance Storable ImportMemoryZirconHandleInfoFUCHSIA where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ImportMemoryZirconHandleInfoFUCHSIA where
+  zero = ImportMemoryZirconHandleInfoFUCHSIA
+           zero
+           zero
+
+
+-- | VkMemoryZirconHandlePropertiesFUCHSIA - Structure specifying Zircon
+-- handle compatible external memory
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getMemoryZirconHandlePropertiesFUCHSIA'
+data MemoryZirconHandlePropertiesFUCHSIA = MemoryZirconHandlePropertiesFUCHSIA
+  { -- | @memoryTypeBits@ a bitmask containing one bit set for every memory type
+    -- which the specified handle can be imported as.
+    memoryTypeBits :: Word32 }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (MemoryZirconHandlePropertiesFUCHSIA)
+#endif
+deriving instance Show MemoryZirconHandlePropertiesFUCHSIA
+
+instance ToCStruct MemoryZirconHandlePropertiesFUCHSIA where
+  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p MemoryZirconHandlePropertiesFUCHSIA{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (memoryTypeBits)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct MemoryZirconHandlePropertiesFUCHSIA where
+  peekCStruct p = do
+    memoryTypeBits <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pure $ MemoryZirconHandlePropertiesFUCHSIA
+             memoryTypeBits
+
+instance Storable MemoryZirconHandlePropertiesFUCHSIA where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero MemoryZirconHandlePropertiesFUCHSIA where
+  zero = MemoryZirconHandlePropertiesFUCHSIA
+           zero
+
+
+-- | VkMemoryGetZirconHandleInfoFUCHSIA - Structure specifying export
+-- parameters for Zircon handle to device memory
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.Handles.DeviceMemory',
+-- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getMemoryZirconHandleFUCHSIA'
+data MemoryGetZirconHandleInfoFUCHSIA = MemoryGetZirconHandleInfoFUCHSIA
+  { -- | @memory@ the 'Vulkan.Core10.Handles.DeviceMemory' being exported.
+    --
+    -- #VUID-VkMemoryGetZirconHandleInfoFUCHSIA-memory-parameter# @memory@
+    -- /must/ be a valid 'Vulkan.Core10.Handles.DeviceMemory' handle
+    memory :: DeviceMemory
+  , -- | @handleType@ is the type of the handle pointed to by @pZirconHandle@ as
+    -- retrieved by the call to 'getMemoryZirconHandleFUCHSIA'.
+    --
+    -- #VUID-VkMemoryGetZirconHandleInfoFUCHSIA-handleType-04775# @handleType@
+    -- /must/ be
+    -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA'.
+    --
+    -- #VUID-VkMemoryGetZirconHandleInfoFUCHSIA-handleType-04776# @handleType@
+    -- /must/ have been included in the @handleTypes@ field of the
+    -- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo'
+    -- structure when the external memory was allocated.
+    --
+    -- #VUID-VkMemoryGetZirconHandleInfoFUCHSIA-handleType-parameter#
+    -- @handleType@ /must/ be a valid
+    -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'
+    -- value
+    handleType :: ExternalMemoryHandleTypeFlagBits
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (MemoryGetZirconHandleInfoFUCHSIA)
+#endif
+deriving instance Show MemoryGetZirconHandleInfoFUCHSIA
+
+instance ToCStruct MemoryGetZirconHandleInfoFUCHSIA where
+  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p MemoryGetZirconHandleInfoFUCHSIA{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DeviceMemory)) (memory)
+    poke ((p `plusPtr` 24 :: Ptr ExternalMemoryHandleTypeFlagBits)) (handleType)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DeviceMemory)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr ExternalMemoryHandleTypeFlagBits)) (zero)
+    f
+
+instance FromCStruct MemoryGetZirconHandleInfoFUCHSIA where
+  peekCStruct p = do
+    memory <- peek @DeviceMemory ((p `plusPtr` 16 :: Ptr DeviceMemory))
+    handleType <- peek @ExternalMemoryHandleTypeFlagBits ((p `plusPtr` 24 :: Ptr ExternalMemoryHandleTypeFlagBits))
+    pure $ MemoryGetZirconHandleInfoFUCHSIA
+             memory handleType
+
+instance Storable MemoryGetZirconHandleInfoFUCHSIA where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero MemoryGetZirconHandleInfoFUCHSIA where
+  zero = MemoryGetZirconHandleInfoFUCHSIA
+           zero
+           zero
+
+
+type FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION"
+pattern FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION :: forall a . Integral a => a
+pattern FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION = 1
+
+
+type FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_FUCHSIA_external_memory"
+
+-- No documentation found for TopLevel "VK_FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME"
+pattern FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_FUCHSIA_external_memory"
+
diff --git a/src/Vulkan/Extensions/VK_FUCHSIA_external_memory.hs-boot b/src/Vulkan/Extensions/VK_FUCHSIA_external_memory.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_FUCHSIA_external_memory.hs-boot
@@ -0,0 +1,149 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_FUCHSIA_external_memory - device extension
+--
+-- == VK_FUCHSIA_external_memory
+--
+-- [__Name String__]
+--     @VK_FUCHSIA_external_memory@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     365
+--
+-- [__Revision__]
+--     1
+--
+-- [__Extension and Version Dependencies__]
+--
+--     -   Requires Vulkan 1.0
+--
+--     -   Requires @VK_KHR_external_memory_capabilities@
+--
+--     -   Requires @VK_KHR_external_memory@
+--
+-- [__Contact__]
+--
+--     -   John Rosasco
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_FUCHSIA_external_memory:%20&body=@rosasco%20 >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2021-03-01
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Craig Stout, Google
+--
+--     -   John Bauman, Google
+--
+--     -   John Rosasco, Google
+--
+-- == Description
+--
+-- Vulkan apps may wish to export or import device memory handles to or
+-- from other logical devices, instances or APIs.
+--
+-- This memory sharing can eliminate copies of memory buffers when
+-- different subsystems need to interoperate on them. Sharing memory
+-- buffers may also facilitate a better distribution of processing workload
+-- for more complex memory manipulation pipelines.
+--
+-- == New Commands
+--
+-- -   'getMemoryZirconHandleFUCHSIA'
+--
+-- -   'getMemoryZirconHandlePropertiesFUCHSIA'
+--
+-- == New Structures
+--
+-- -   'MemoryGetZirconHandleInfoFUCHSIA'
+--
+-- -   'MemoryZirconHandlePropertiesFUCHSIA'
+--
+-- -   Extending 'Vulkan.Core10.Memory.MemoryAllocateInfo':
+--
+--     -   'ImportMemoryZirconHandleInfoFUCHSIA'
+--
+-- == New Enum Constants
+--
+-- -   'FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME'
+--
+-- -   'FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits':
+--
+--     -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA'
+--
+-- == Issues
+--
+-- See @VK_KHR_external_memory@ issues list for further information.
+--
+-- == Version History
+--
+-- -   Revision 1, 2021-03-01 (John Rosasco)
+--
+--     -   Initial draft
+--
+-- = See Also
+--
+-- 'ImportMemoryZirconHandleInfoFUCHSIA',
+-- 'MemoryGetZirconHandleInfoFUCHSIA',
+-- 'MemoryZirconHandlePropertiesFUCHSIA', 'getMemoryZirconHandleFUCHSIA',
+-- 'getMemoryZirconHandlePropertiesFUCHSIA'
+--
+-- = Document Notes
+--
+-- For more information, see the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_FUCHSIA_external_memory Vulkan Specification>
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_FUCHSIA_external_memory  ( ImportMemoryZirconHandleInfoFUCHSIA
+                                                     , MemoryGetZirconHandleInfoFUCHSIA
+                                                     , MemoryZirconHandlePropertiesFUCHSIA
+                                                     ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data ImportMemoryZirconHandleInfoFUCHSIA
+
+instance ToCStruct ImportMemoryZirconHandleInfoFUCHSIA
+instance Show ImportMemoryZirconHandleInfoFUCHSIA
+
+instance FromCStruct ImportMemoryZirconHandleInfoFUCHSIA
+
+
+data MemoryGetZirconHandleInfoFUCHSIA
+
+instance ToCStruct MemoryGetZirconHandleInfoFUCHSIA
+instance Show MemoryGetZirconHandleInfoFUCHSIA
+
+instance FromCStruct MemoryGetZirconHandleInfoFUCHSIA
+
+
+data MemoryZirconHandlePropertiesFUCHSIA
+
+instance ToCStruct MemoryZirconHandlePropertiesFUCHSIA
+instance Show MemoryZirconHandlePropertiesFUCHSIA
+
+instance FromCStruct MemoryZirconHandlePropertiesFUCHSIA
+
diff --git a/src/Vulkan/Extensions/VK_FUCHSIA_external_semaphore.hs b/src/Vulkan/Extensions/VK_FUCHSIA_external_semaphore.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_FUCHSIA_external_semaphore.hs
@@ -0,0 +1,578 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_FUCHSIA_external_semaphore - device extension
+--
+-- == VK_FUCHSIA_external_semaphore
+--
+-- [__Name String__]
+--     @VK_FUCHSIA_external_semaphore@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     366
+--
+-- [__Revision__]
+--     1
+--
+-- [__Extension and Version Dependencies__]
+--
+--     -   Requires Vulkan 1.0
+--
+--     -   Requires @VK_KHR_external_semaphore_capabilities@
+--
+--     -   Requires @VK_KHR_external_semaphore@
+--
+-- [__Contact__]
+--
+--     -   John Rosasco
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_FUCHSIA_external_semaphore:%20&body=@rosasco%20 >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2021-03-08
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Craig Stout, Google
+--
+--     -   John Bauman, Google
+--
+--     -   John Rosasco, Google
+--
+-- == Description
+--
+-- An application using external memory may wish to synchronize access to
+-- that memory using semaphores. This extension enables an application to
+-- export semaphore payload to and import semaphore payload from Zircon
+-- event handles.
+--
+-- == New Commands
+--
+-- -   'getSemaphoreZirconHandleFUCHSIA'
+--
+-- -   'importSemaphoreZirconHandleFUCHSIA'
+--
+-- == New Structures
+--
+-- -   'ImportSemaphoreZirconHandleInfoFUCHSIA'
+--
+-- -   'SemaphoreGetZirconHandleInfoFUCHSIA'
+--
+-- == New Enum Constants
+--
+-- -   'FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME'
+--
+-- -   'FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits':
+--
+--     -   'Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA'
+--
+-- == Issues
+--
+-- 1) Does the application need to close the Zircon event handle returned
+-- by 'getSemaphoreZirconHandleFUCHSIA'?
+--
+-- __RESOLVED__: Yes, unless it is passed back in to a driver instance to
+-- import the semaphore. A successful get call transfers ownership of the
+-- Zircon event handle to the application, and a successful import
+-- transfers it back to the driver. Destroying the original semaphore
+-- object will not close the Zircon event handle nor remove its reference
+-- to the underlying semaphore resource associated with it.
+--
+-- == Version History
+--
+-- -   Revision 1, 2021-03-08 (John Rosasco)
+--
+--     -   Initial revision
+--
+-- = See Also
+--
+-- 'ImportSemaphoreZirconHandleInfoFUCHSIA',
+-- 'SemaphoreGetZirconHandleInfoFUCHSIA',
+-- 'getSemaphoreZirconHandleFUCHSIA', 'importSemaphoreZirconHandleFUCHSIA'
+--
+-- = Document Notes
+--
+-- For more information, see the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_FUCHSIA_external_semaphore Vulkan Specification>
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_FUCHSIA_external_semaphore  ( getSemaphoreZirconHandleFUCHSIA
+                                                        , importSemaphoreZirconHandleFUCHSIA
+                                                        , ImportSemaphoreZirconHandleInfoFUCHSIA(..)
+                                                        , SemaphoreGetZirconHandleInfoFUCHSIA(..)
+                                                        , FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION
+                                                        , pattern FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION
+                                                        , FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME
+                                                        , pattern FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME
+                                                        , Zx_handle_t
+                                                        ) where
+
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Exception.Base (bracket)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Foreign.Marshal.Alloc (allocaBytesAligned)
+import Foreign.Marshal.Alloc (callocBytes)
+import Foreign.Marshal.Alloc (free)
+import GHC.Base (when)
+import GHC.IO (throwIO)
+import GHC.Ptr (nullFunPtr)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Control.Monad.IO.Class (MonadIO)
+import Data.String (IsString)
+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 GHC.IO.Exception (IOErrorType(..))
+import GHC.IO.Exception (IOException(..))
+import Foreign.Ptr (FunPtr)
+import Foreign.Ptr (Ptr)
+import Data.Kind (Type)
+import Control.Monad.Trans.Cont (ContT(..))
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.Handles (Device)
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Dynamic (DeviceCmds(pVkGetSemaphoreZirconHandleFUCHSIA))
+import Vulkan.Dynamic (DeviceCmds(pVkImportSemaphoreZirconHandleFUCHSIA))
+import Vulkan.Core10.Handles (Device_T)
+import Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits (ExternalSemaphoreHandleTypeFlagBits)
+import Vulkan.Core10.Enums.Result (Result)
+import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.Core10.Handles (Semaphore)
+import Vulkan.Core11.Enums.SemaphoreImportFlagBits (SemaphoreImportFlags)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Exception (VulkanException(..))
+import Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface (Zx_handle_t)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface (Zx_handle_t)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetSemaphoreZirconHandleFUCHSIA
+  :: FunPtr (Ptr Device_T -> Ptr SemaphoreGetZirconHandleInfoFUCHSIA -> Ptr Zx_handle_t -> IO Result) -> Ptr Device_T -> Ptr SemaphoreGetZirconHandleInfoFUCHSIA -> Ptr Zx_handle_t -> IO Result
+
+-- | vkGetSemaphoreZirconHandleFUCHSIA - Get a Zircon event handle for a
+-- semaphore
+--
+-- = Description
+--
+-- Each call to 'getSemaphoreZirconHandleFUCHSIA' /must/ create a Zircon
+-- event handle and transfer ownership of it to the application. To avoid
+-- leaking resources, the application /must/ release ownership of the
+-- Zircon event handle when it is no longer needed.
+--
+-- Note
+--
+-- Ownership can be released in many ways. For example, the application can
+-- call zx_handle_close() on the file descriptor, or transfer ownership
+-- back to Vulkan by using the file descriptor to import a semaphore
+-- payload.
+--
+-- Exporting a Zircon event handle from a semaphore /may/ have side effects
+-- depending on the transference of the specified handle type, as described
+-- in
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore State>.
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_TOO_MANY_OBJECTS'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.Handles.Device', 'SemaphoreGetZirconHandleInfoFUCHSIA'
+getSemaphoreZirconHandleFUCHSIA :: forall io
+                                 . (MonadIO io)
+                                => -- | @device@ is the logical device that created the semaphore being
+                                   -- exported.
+                                   --
+                                   -- #VUID-vkGetSemaphoreZirconHandleFUCHSIA-device-parameter# @device@
+                                   -- /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+                                   Device
+                                -> -- | @pGetZirconHandleInfo@ is a pointer to a
+                                   -- 'SemaphoreGetZirconHandleInfoFUCHSIA' structure containing parameters of
+                                   -- the export operation.
+                                   --
+                                   -- #VUID-vkGetSemaphoreZirconHandleFUCHSIA-pGetZirconHandleInfo-parameter#
+                                   -- @pGetZirconHandleInfo@ /must/ be a valid pointer to a valid
+                                   -- 'SemaphoreGetZirconHandleInfoFUCHSIA' structure
+                                   SemaphoreGetZirconHandleInfoFUCHSIA
+                                -> io (("zirconHandle" ::: Zx_handle_t))
+getSemaphoreZirconHandleFUCHSIA device getZirconHandleInfo = liftIO . evalContT $ do
+  let vkGetSemaphoreZirconHandleFUCHSIAPtr = pVkGetSemaphoreZirconHandleFUCHSIA (deviceCmds (device :: Device))
+  lift $ unless (vkGetSemaphoreZirconHandleFUCHSIAPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetSemaphoreZirconHandleFUCHSIA is null" Nothing Nothing
+  let vkGetSemaphoreZirconHandleFUCHSIA' = mkVkGetSemaphoreZirconHandleFUCHSIA vkGetSemaphoreZirconHandleFUCHSIAPtr
+  pGetZirconHandleInfo <- ContT $ withCStruct (getZirconHandleInfo)
+  pPZirconHandle <- ContT $ bracket (callocBytes @Zx_handle_t 4) free
+  r <- lift $ traceAroundEvent "vkGetSemaphoreZirconHandleFUCHSIA" (vkGetSemaphoreZirconHandleFUCHSIA' (deviceHandle (device)) pGetZirconHandleInfo (pPZirconHandle))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pZirconHandle <- lift $ peek @Zx_handle_t pPZirconHandle
+  pure $ (pZirconHandle)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkImportSemaphoreZirconHandleFUCHSIA
+  :: FunPtr (Ptr Device_T -> Ptr ImportSemaphoreZirconHandleInfoFUCHSIA -> IO Result) -> Ptr Device_T -> Ptr ImportSemaphoreZirconHandleInfoFUCHSIA -> IO Result
+
+-- | vkImportSemaphoreZirconHandleFUCHSIA - Import a semaphore from a Zircon
+-- event handle
+--
+-- = Description
+--
+-- Importing a semaphore payload from a Zircon event handle transfers
+-- ownership of the handle from the application to the Vulkan
+-- implementation. The application /must/ not perform any operations on the
+-- handle after a successful import.
+--
+-- Applications /can/ import the same semaphore payload into multiple
+-- instances of Vulkan, into the same instance from which it was exported,
+-- and multiple times into a given Vulkan instance.
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE'
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.Handles.Device', 'ImportSemaphoreZirconHandleInfoFUCHSIA'
+importSemaphoreZirconHandleFUCHSIA :: forall io
+                                    . (MonadIO io)
+                                   => -- | @device@ is the logical device that created the semaphore.
+                                      --
+                                      -- #VUID-vkImportSemaphoreZirconHandleFUCHSIA-device-parameter# @device@
+                                      -- /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+                                      Device
+                                   -> -- | @pImportSemaphoreZirconHandleInfo@ is a pointer to a
+                                      -- 'ImportSemaphoreZirconHandleInfoFUCHSIA' structure specifying the
+                                      -- semaphore and import parameters.
+                                      --
+                                      -- #VUID-vkImportSemaphoreZirconHandleFUCHSIA-pImportSemaphoreZirconHandleInfo-parameter#
+                                      -- @pImportSemaphoreZirconHandleInfo@ /must/ be a valid pointer to a valid
+                                      -- 'ImportSemaphoreZirconHandleInfoFUCHSIA' structure
+                                      ImportSemaphoreZirconHandleInfoFUCHSIA
+                                   -> io ()
+importSemaphoreZirconHandleFUCHSIA device importSemaphoreZirconHandleInfo = liftIO . evalContT $ do
+  let vkImportSemaphoreZirconHandleFUCHSIAPtr = pVkImportSemaphoreZirconHandleFUCHSIA (deviceCmds (device :: Device))
+  lift $ unless (vkImportSemaphoreZirconHandleFUCHSIAPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkImportSemaphoreZirconHandleFUCHSIA is null" Nothing Nothing
+  let vkImportSemaphoreZirconHandleFUCHSIA' = mkVkImportSemaphoreZirconHandleFUCHSIA vkImportSemaphoreZirconHandleFUCHSIAPtr
+  pImportSemaphoreZirconHandleInfo <- ContT $ withCStruct (importSemaphoreZirconHandleInfo)
+  r <- lift $ traceAroundEvent "vkImportSemaphoreZirconHandleFUCHSIA" (vkImportSemaphoreZirconHandleFUCHSIA' (deviceHandle (device)) pImportSemaphoreZirconHandleInfo)
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+-- | VkImportSemaphoreZirconHandleInfoFUCHSIA - Structure specifying Zircon
+-- event handle to import to a semaphore
+--
+-- = Description
+--
+-- The handle types supported by @handleType@ are:
+--
+-- +-------------------------------------------------------------------------------------------------------------------+------------------+---------------------+
+-- | Handle Type                                                                                                       | Transference     | Permanence          |
+-- |                                                                                                                   |                  | Supported           |
+-- +===================================================================================================================+==================+=====================+
+-- | 'Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA' | Reference        | Temporary,Permanent |
+-- +-------------------------------------------------------------------------------------------------------------------+------------------+---------------------+
+--
+-- Handle Types Supported by 'ImportSemaphoreZirconHandleInfoFUCHSIA'
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-handleType-04765#
+--     @handleType@ /must/ be a value included in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphore-handletypes-zircon-handle Handle Types Supported by >
+--     table.
+--
+-- -   #VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-zirconHandle-04766#
+--     @zirconHandle@ /must/ obey any requirements listed for @handleType@
+--     in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility external semaphore handle types compatibility>.
+--
+-- -   #VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-zirconHandle-04767#
+--     @zirconHandle@ /must/ have @ZX_RIGHTS_BASIC@ and @ZX_RIGHTS_SIGNAL@
+--     rights.
+--
+-- -   #VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-semaphoreType-04768#
+--     The
+--     'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreTypeCreateInfo'::@semaphoreType@
+--     field /must/ not be
+--     'Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE'.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA'
+--
+-- -   #VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-pNext-pNext# @pNext@
+--     /must/ be @NULL@
+--
+-- -   #VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-semaphore-parameter#
+--     @semaphore@ /must/ be a valid 'Vulkan.Core10.Handles.Semaphore'
+--     handle
+--
+-- -   #VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-flags-parameter#
+--     @flags@ /must/ be a valid combination of
+--     'Vulkan.Core11.Enums.SemaphoreImportFlagBits.SemaphoreImportFlagBits'
+--     values
+--
+-- -   #VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-handleType-parameter#
+--     @handleType@ /must/ be a valid
+--     'Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits'
+--     value
+--
+-- == Host Synchronization
+--
+-- -   Host access to @semaphore@ /must/ be externally synchronized
+--
+-- = See Also
+--
+-- 'Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits',
+-- 'Vulkan.Core10.Handles.Semaphore',
+-- 'Vulkan.Core11.Enums.SemaphoreImportFlagBits.SemaphoreImportFlags',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'importSemaphoreZirconHandleFUCHSIA'
+data ImportSemaphoreZirconHandleInfoFUCHSIA = ImportSemaphoreZirconHandleInfoFUCHSIA
+  { -- | @semaphore@ is the semaphore into which the payload will be imported.
+    semaphore :: Semaphore
+  , -- | @flags@ is a bitmask of
+    -- 'Vulkan.Core11.Enums.SemaphoreImportFlagBits.SemaphoreImportFlagBits'
+    -- specifying additional parameters for the semaphore payload import
+    -- operation.
+    flags :: SemaphoreImportFlags
+  , -- | @handleType@ specifies the type of @zirconHandle@.
+    handleType :: ExternalSemaphoreHandleTypeFlagBits
+  , -- | @zirconHandle@ is the external handle to import.
+    zirconHandle :: Zx_handle_t
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ImportSemaphoreZirconHandleInfoFUCHSIA)
+#endif
+deriving instance Show ImportSemaphoreZirconHandleInfoFUCHSIA
+
+instance ToCStruct ImportSemaphoreZirconHandleInfoFUCHSIA where
+  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ImportSemaphoreZirconHandleInfoFUCHSIA{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Semaphore)) (semaphore)
+    poke ((p `plusPtr` 24 :: Ptr SemaphoreImportFlags)) (flags)
+    poke ((p `plusPtr` 28 :: Ptr ExternalSemaphoreHandleTypeFlagBits)) (handleType)
+    poke ((p `plusPtr` 32 :: Ptr Zx_handle_t)) (zirconHandle)
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Semaphore)) (zero)
+    poke ((p `plusPtr` 28 :: Ptr ExternalSemaphoreHandleTypeFlagBits)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr Zx_handle_t)) (zero)
+    f
+
+instance FromCStruct ImportSemaphoreZirconHandleInfoFUCHSIA where
+  peekCStruct p = do
+    semaphore <- peek @Semaphore ((p `plusPtr` 16 :: Ptr Semaphore))
+    flags <- peek @SemaphoreImportFlags ((p `plusPtr` 24 :: Ptr SemaphoreImportFlags))
+    handleType <- peek @ExternalSemaphoreHandleTypeFlagBits ((p `plusPtr` 28 :: Ptr ExternalSemaphoreHandleTypeFlagBits))
+    zirconHandle <- peek @Zx_handle_t ((p `plusPtr` 32 :: Ptr Zx_handle_t))
+    pure $ ImportSemaphoreZirconHandleInfoFUCHSIA
+             semaphore flags handleType zirconHandle
+
+instance Storable ImportSemaphoreZirconHandleInfoFUCHSIA where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ImportSemaphoreZirconHandleInfoFUCHSIA where
+  zero = ImportSemaphoreZirconHandleInfoFUCHSIA
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkSemaphoreGetZirconHandleInfoFUCHSIA - Structure describing a Zircon
+-- event handle semaphore export operation
+--
+-- = Description
+--
+-- The properties of the Zircon event handle returned depend on the value
+-- of @handleType@. See
+-- 'Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits'
+-- for a description of the properties of the defined external semaphore
+-- handle types.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-handleType-04758#
+--     @handleType@ /must/ have been included in
+--     'Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore.ExportSemaphoreCreateInfo'::@handleTypes@
+--     when @semaphore@’s current payload was created.
+--
+-- -   #VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-semaphore-04759#
+--     @semaphore@ /must/ not currently have its payload replaced by an
+--     imported payload as described below in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>
+--     unless that imported payload’s handle type was included in
+--     'Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.ExternalSemaphoreProperties'::@exportFromImportedHandleTypes@
+--     for @handleType@.
+--
+-- -   #VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-handleType-04760# If
+--     @handleType@ refers to a handle type with copy payload transference
+--     semantics, as defined below in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>,
+--     there /must/ be no queue waiting on @semaphore@.
+--
+-- -   #VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-handleType-04761# If
+--     @handleType@ refers to a handle type with copy payload transference
+--     semantics, @semaphore@ /must/ be signaled, or have an associated
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
+--     pending execution.
+--
+-- -   #VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-handleType-04762#
+--     @handleType@ /must/ be defined as a Zircon event handle.
+--
+-- -   #VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-semaphore-04763#
+--     @semaphore@ /must/ have been created with a
+--     'Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of
+--     'Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_BINARY'.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA'
+--
+-- -   #VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-pNext-pNext# @pNext@
+--     /must/ be @NULL@
+--
+-- -   #VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-semaphore-parameter#
+--     @semaphore@ /must/ be a valid 'Vulkan.Core10.Handles.Semaphore'
+--     handle
+--
+-- -   #VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-handleType-parameter#
+--     @handleType@ /must/ be a valid
+--     'Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits'
+--     value
+--
+-- = See Also
+--
+-- 'Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits',
+-- 'Vulkan.Core10.Handles.Semaphore',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getSemaphoreZirconHandleFUCHSIA'
+data SemaphoreGetZirconHandleInfoFUCHSIA = SemaphoreGetZirconHandleInfoFUCHSIA
+  { -- | @semaphore@ is the semaphore from which state will be exported.
+    semaphore :: Semaphore
+  , -- | @handleType@ is the type of handle requested.
+    handleType :: ExternalSemaphoreHandleTypeFlagBits
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (SemaphoreGetZirconHandleInfoFUCHSIA)
+#endif
+deriving instance Show SemaphoreGetZirconHandleInfoFUCHSIA
+
+instance ToCStruct SemaphoreGetZirconHandleInfoFUCHSIA where
+  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p SemaphoreGetZirconHandleInfoFUCHSIA{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Semaphore)) (semaphore)
+    poke ((p `plusPtr` 24 :: Ptr ExternalSemaphoreHandleTypeFlagBits)) (handleType)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Semaphore)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr ExternalSemaphoreHandleTypeFlagBits)) (zero)
+    f
+
+instance FromCStruct SemaphoreGetZirconHandleInfoFUCHSIA where
+  peekCStruct p = do
+    semaphore <- peek @Semaphore ((p `plusPtr` 16 :: Ptr Semaphore))
+    handleType <- peek @ExternalSemaphoreHandleTypeFlagBits ((p `plusPtr` 24 :: Ptr ExternalSemaphoreHandleTypeFlagBits))
+    pure $ SemaphoreGetZirconHandleInfoFUCHSIA
+             semaphore handleType
+
+instance Storable SemaphoreGetZirconHandleInfoFUCHSIA where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero SemaphoreGetZirconHandleInfoFUCHSIA where
+  zero = SemaphoreGetZirconHandleInfoFUCHSIA
+           zero
+           zero
+
+
+type FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION"
+pattern FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION :: forall a . Integral a => a
+pattern FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1
+
+
+type FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_FUCHSIA_external_semaphore"
+
+-- No documentation found for TopLevel "VK_FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME"
+pattern FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_FUCHSIA_external_semaphore"
+
diff --git a/src/Vulkan/Extensions/VK_FUCHSIA_external_semaphore.hs-boot b/src/Vulkan/Extensions/VK_FUCHSIA_external_semaphore.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_FUCHSIA_external_semaphore.hs-boot
@@ -0,0 +1,138 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_FUCHSIA_external_semaphore - device extension
+--
+-- == VK_FUCHSIA_external_semaphore
+--
+-- [__Name String__]
+--     @VK_FUCHSIA_external_semaphore@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     366
+--
+-- [__Revision__]
+--     1
+--
+-- [__Extension and Version Dependencies__]
+--
+--     -   Requires Vulkan 1.0
+--
+--     -   Requires @VK_KHR_external_semaphore_capabilities@
+--
+--     -   Requires @VK_KHR_external_semaphore@
+--
+-- [__Contact__]
+--
+--     -   John Rosasco
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_FUCHSIA_external_semaphore:%20&body=@rosasco%20 >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2021-03-08
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Craig Stout, Google
+--
+--     -   John Bauman, Google
+--
+--     -   John Rosasco, Google
+--
+-- == Description
+--
+-- An application using external memory may wish to synchronize access to
+-- that memory using semaphores. This extension enables an application to
+-- export semaphore payload to and import semaphore payload from Zircon
+-- event handles.
+--
+-- == New Commands
+--
+-- -   'getSemaphoreZirconHandleFUCHSIA'
+--
+-- -   'importSemaphoreZirconHandleFUCHSIA'
+--
+-- == New Structures
+--
+-- -   'ImportSemaphoreZirconHandleInfoFUCHSIA'
+--
+-- -   'SemaphoreGetZirconHandleInfoFUCHSIA'
+--
+-- == New Enum Constants
+--
+-- -   'FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME'
+--
+-- -   'FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits':
+--
+--     -   'Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA'
+--
+-- == Issues
+--
+-- 1) Does the application need to close the Zircon event handle returned
+-- by 'getSemaphoreZirconHandleFUCHSIA'?
+--
+-- __RESOLVED__: Yes, unless it is passed back in to a driver instance to
+-- import the semaphore. A successful get call transfers ownership of the
+-- Zircon event handle to the application, and a successful import
+-- transfers it back to the driver. Destroying the original semaphore
+-- object will not close the Zircon event handle nor remove its reference
+-- to the underlying semaphore resource associated with it.
+--
+-- == Version History
+--
+-- -   Revision 1, 2021-03-08 (John Rosasco)
+--
+--     -   Initial revision
+--
+-- = See Also
+--
+-- 'ImportSemaphoreZirconHandleInfoFUCHSIA',
+-- 'SemaphoreGetZirconHandleInfoFUCHSIA',
+-- 'getSemaphoreZirconHandleFUCHSIA', 'importSemaphoreZirconHandleFUCHSIA'
+--
+-- = Document Notes
+--
+-- For more information, see the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_FUCHSIA_external_semaphore Vulkan Specification>
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_FUCHSIA_external_semaphore  ( ImportSemaphoreZirconHandleInfoFUCHSIA
+                                                        , SemaphoreGetZirconHandleInfoFUCHSIA
+                                                        ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data ImportSemaphoreZirconHandleInfoFUCHSIA
+
+instance ToCStruct ImportSemaphoreZirconHandleInfoFUCHSIA
+instance Show ImportSemaphoreZirconHandleInfoFUCHSIA
+
+instance FromCStruct ImportSemaphoreZirconHandleInfoFUCHSIA
+
+
+data SemaphoreGetZirconHandleInfoFUCHSIA
+
+instance ToCStruct SemaphoreGetZirconHandleInfoFUCHSIA
+instance Show SemaphoreGetZirconHandleInfoFUCHSIA
+
+instance FromCStruct SemaphoreGetZirconHandleInfoFUCHSIA
+
diff --git a/src/Vulkan/Extensions/VK_FUCHSIA_imagepipe_surface.hs-boot b/src/Vulkan/Extensions/VK_FUCHSIA_imagepipe_surface.hs-boot
--- a/src/Vulkan/Extensions/VK_FUCHSIA_imagepipe_surface.hs-boot
+++ b/src/Vulkan/Extensions/VK_FUCHSIA_imagepipe_surface.hs-boot
@@ -91,10 +91,13 @@
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
-module Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface  (ImagePipeSurfaceCreateInfoFUCHSIA) where
+module Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface  ( ImagePipeSurfaceCreateInfoFUCHSIA
+                                                       , Zx_handle_t
+                                                       ) where
 
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (ToCStruct)
+import Data.Word (Word32)
 import Data.Kind (Type)
 
 data ImagePipeSurfaceCreateInfoFUCHSIA
@@ -103,4 +106,7 @@
 instance Show ImagePipeSurfaceCreateInfoFUCHSIA
 
 instance FromCStruct ImagePipeSurfaceCreateInfoFUCHSIA
+
+
+type Zx_handle_t = Word32
 
diff --git a/src/Vulkan/Extensions/VK_KHR_acceleration_structure.hs b/src/Vulkan/Extensions/VK_KHR_acceleration_structure.hs
--- a/src/Vulkan/Extensions/VK_KHR_acceleration_structure.hs
+++ b/src/Vulkan/Extensions/VK_KHR_acceleration_structure.hs
@@ -1705,7 +1705,10 @@
 --
 -- -   A 64-bit integer of the count of the number of acceleration
 --     structure handles following. This will be zero for a bottom-level
---     acceleration structure.
+--     acceleration structure. For top-level acceleration structures this
+--     number is implementation-dependent; the number of and ordering of
+--     the handles may not match the instance descriptions which were used
+--     to build the acceleration structure.
 --
 -- The corresponding handles matching the values returned by
 -- 'getAccelerationStructureDeviceAddressKHR' or
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
@@ -415,9 +415,6 @@
 -- -   #VUID-vkGetPipelineExecutableStatisticsKHR-pipeline-03274#
 --     @pipeline@ member of @pExecutableInfo@ /must/ have been created with
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR'
---     set in the @flags@ field of
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' or
---     'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo'
 --
 -- == Valid Usage (Implicit)
 --
@@ -525,9 +522,6 @@
 -- -   #VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipeline-03278#
 --     @pipeline@ member of @pExecutableInfo@ /must/ have been created with
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR'
---     set in the @flags@ field of
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' or
---     'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo'
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_ray_tracing_pipeline.hs b/src/Vulkan/Extensions/VK_KHR_ray_tracing_pipeline.hs
--- a/src/Vulkan/Extensions/VK_KHR_ray_tracing_pipeline.hs
+++ b/src/Vulkan/Extensions/VK_KHR_ray_tracing_pipeline.hs
@@ -895,6 +895,16 @@
 --     /must/ contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
 --
+-- -   #VUID-vkCmdTraceRaysKHR-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'
+--     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
+--     this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
 -- -   #VUID-vkCmdTraceRaysKHR-None-02691# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
 --     operations as a result of this command, then the image view’s
@@ -1045,7 +1055,7 @@
 --     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@
 --     as a result of this command, then the @Type@ of the @Texel@ operand
 --     of that instruction /must/ have at least as many components as the
---     image view’s format.
+--     buffer view’s format.
 --
 -- -   #VUID-vkCmdTraceRaysKHR-SampledType-04470# If a
 --     'Vulkan.Core10.Handles.ImageView' with a
@@ -1757,6 +1767,16 @@
 --     /must/ contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
 --
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'
+--     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
+--     this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
 -- -   #VUID-vkCmdTraceRaysIndirectKHR-None-02691# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
 --     operations as a result of this command, then the image view’s
@@ -1909,7 +1929,7 @@
 --     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@
 --     as a result of this command, then the @Type@ of the @Texel@ operand
 --     of that instruction /must/ have at least as many components as the
---     image view’s format.
+--     buffer view’s format.
 --
 -- -   #VUID-vkCmdTraceRaysIndirectKHR-SampledType-04470# If a
 --     'Vulkan.Core10.Handles.ImageView' with a
diff --git a/src/Vulkan/Extensions/VK_KHR_synchronization2.hs b/src/Vulkan/Extensions/VK_KHR_synchronization2.hs
--- a/src/Vulkan/Extensions/VK_KHR_synchronization2.hs
+++ b/src/Vulkan/Extensions/VK_KHR_synchronization2.hs
@@ -23,8 +23,6 @@
 --
 --     -   Requires @VK_KHR_get_physical_device_properties2@
 --
---     -   Requires @VK_KHR_create_renderpass2@
---
 -- [__Contact__]
 --
 --     -   Tobias Hector
@@ -446,8 +444,7 @@
                                                   , QueueFamilyCheckpointProperties2NV(..)
                                                   , CheckpointData2NV(..)
                                                   , PhysicalDeviceSynchronization2FeaturesKHR(..)
-                                                  , AccessFlags2KHR(..)
-                                                  , PipelineStageFlags2KHR(..)
+                                                  , AccessFlags2KHR
                                                   , AccessFlagBits2KHR( ACCESS_2_NONE_KHR
                                                                       , ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR
                                                                       , ACCESS_2_INDEX_READ_BIT_KHR
@@ -482,6 +479,7 @@
                                                                       , ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT
                                                                       , ..
                                                                       )
+                                                  , PipelineStageFlags2KHR
                                                   , PipelineStageFlagBits2KHR( PIPELINE_STAGE_2_NONE_KHR
                                                                              , PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR
                                                                              , PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR
@@ -526,6 +524,7 @@
                                                   , pattern KHR_SYNCHRONIZATION_2_SPEC_VERSION
                                                   , KHR_SYNCHRONIZATION_2_EXTENSION_NAME
                                                   , pattern KHR_SYNCHRONIZATION_2_EXTENSION_NAME
+                                                  , Flags64
                                                   ) where
 
 import Vulkan.Internal.Utils (enumReadPrec)
@@ -611,6 +610,7 @@
 import Vulkan.Core10.Handles (Fence)
 import Vulkan.Core10.Handles (Fence(..))
 import Vulkan.Core10.FundamentalTypes (Flags)
+import Vulkan.Core10.FundamentalTypes (Flags64)
 import Vulkan.Core10.Handles (Image)
 import Vulkan.Core10.Enums.ImageLayout (ImageLayout)
 import Vulkan.Core10.ImageView (ImageSubresourceRange)
@@ -644,6 +644,7 @@
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBMIT_INFO_2_KHR))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.FundamentalTypes (Flags64)
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -2316,10 +2317,11 @@
 --     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
 --     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
 --
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-03921# If @srcAccessMask@
+-- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-04747# If @srcAccessMask@
 --     includes 'ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT',
 --     @srcStageMask@ /must/ include
 --     'PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR',
+--     'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
 --     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
 --     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
 --
@@ -2544,10 +2546,11 @@
 --     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
 --     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
 --
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-03921# If @dstAccessMask@
+-- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-04747# If @dstAccessMask@
 --     includes 'ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT',
 --     @dstStageMask@ /must/ include
 --     'PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR',
+--     'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
 --     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
 --     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
 --
@@ -2623,16 +2626,16 @@
 deriving instance Show MemoryBarrier2KHR
 
 instance ToCStruct MemoryBarrier2KHR where
-  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)
+  withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)
   pokeCStruct p MemoryBarrier2KHR{..} f = do
     poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR)
     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
     poke ((p `plusPtr` 16 :: Ptr PipelineStageFlags2KHR)) (srcStageMask)
-    poke ((p `plusPtr` 20 :: Ptr AccessFlags2KHR)) (srcAccessMask)
-    poke ((p `plusPtr` 24 :: Ptr PipelineStageFlags2KHR)) (dstStageMask)
-    poke ((p `plusPtr` 28 :: Ptr AccessFlags2KHR)) (dstAccessMask)
+    poke ((p `plusPtr` 24 :: Ptr AccessFlags2KHR)) (srcAccessMask)
+    poke ((p `plusPtr` 32 :: Ptr PipelineStageFlags2KHR)) (dstStageMask)
+    poke ((p `plusPtr` 40 :: Ptr AccessFlags2KHR)) (dstAccessMask)
     f
-  cStructSize = 32
+  cStructSize = 48
   cStructAlignment = 8
   pokeZeroCStruct p f = do
     poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR)
@@ -2642,14 +2645,14 @@
 instance FromCStruct MemoryBarrier2KHR where
   peekCStruct p = do
     srcStageMask <- peek @PipelineStageFlags2KHR ((p `plusPtr` 16 :: Ptr PipelineStageFlags2KHR))
-    srcAccessMask <- peek @AccessFlags2KHR ((p `plusPtr` 20 :: Ptr AccessFlags2KHR))
-    dstStageMask <- peek @PipelineStageFlags2KHR ((p `plusPtr` 24 :: Ptr PipelineStageFlags2KHR))
-    dstAccessMask <- peek @AccessFlags2KHR ((p `plusPtr` 28 :: Ptr AccessFlags2KHR))
+    srcAccessMask <- peek @AccessFlags2KHR ((p `plusPtr` 24 :: Ptr AccessFlags2KHR))
+    dstStageMask <- peek @PipelineStageFlags2KHR ((p `plusPtr` 32 :: Ptr PipelineStageFlags2KHR))
+    dstAccessMask <- peek @AccessFlags2KHR ((p `plusPtr` 40 :: Ptr AccessFlags2KHR))
     pure $ MemoryBarrier2KHR
              srcStageMask srcAccessMask dstStageMask dstAccessMask
 
 instance Storable MemoryBarrier2KHR where
-  sizeOf ~_ = 32
+  sizeOf ~_ = 48
   alignment ~_ = 8
   peek = peekCStruct
   poke ptr poked = pokeCStruct ptr poked (pure ())
@@ -2937,10 +2940,11 @@
 --     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
 --     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
 --
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03921# If
+-- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-04747# If
 --     @srcAccessMask@ includes
 --     'ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT', @srcStageMask@
 --     /must/ include 'PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR',
+--     'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
 --     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
 --     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
 --
@@ -3183,10 +3187,11 @@
 --     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
 --     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
 --
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03921# If
+-- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-04747# If
 --     @dstAccessMask@ includes
 --     'ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT', @dstStageMask@
 --     /must/ include 'PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR',
+--     'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
 --     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
 --     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
 --
@@ -3421,7 +3426,7 @@
 --     @image@ /must/ have been created with
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
 --     or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL'
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
 --
 -- -   #VUID-VkImageMemoryBarrier2KHR-srcQueueFamilyIndex-03939# If
 --     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
@@ -3625,34 +3630,34 @@
     | otherwise = Nothing
 
 instance (Extendss ImageMemoryBarrier2KHR es, PokeChain es) => ToCStruct (ImageMemoryBarrier2KHR es) where
-  withCStruct x f = allocaBytesAligned 80 8 $ \p -> pokeCStruct p x (f p)
+  withCStruct x f = allocaBytesAligned 96 8 $ \p -> pokeCStruct p x (f p)
   pokeCStruct p ImageMemoryBarrier2KHR{..} f = evalContT $ do
     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR)
     pNext'' <- fmap castPtr . ContT $ withChain (next)
     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
     lift $ poke ((p `plusPtr` 16 :: Ptr PipelineStageFlags2KHR)) (srcStageMask)
-    lift $ poke ((p `plusPtr` 20 :: Ptr AccessFlags2KHR)) (srcAccessMask)
-    lift $ poke ((p `plusPtr` 24 :: Ptr PipelineStageFlags2KHR)) (dstStageMask)
-    lift $ poke ((p `plusPtr` 28 :: Ptr AccessFlags2KHR)) (dstAccessMask)
-    lift $ poke ((p `plusPtr` 32 :: Ptr ImageLayout)) (oldLayout)
-    lift $ poke ((p `plusPtr` 36 :: Ptr ImageLayout)) (newLayout)
-    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (srcQueueFamilyIndex)
-    lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) (dstQueueFamilyIndex)
-    lift $ poke ((p `plusPtr` 48 :: Ptr Image)) (image)
-    lift $ poke ((p `plusPtr` 56 :: Ptr ImageSubresourceRange)) (subresourceRange)
+    lift $ poke ((p `plusPtr` 24 :: Ptr AccessFlags2KHR)) (srcAccessMask)
+    lift $ poke ((p `plusPtr` 32 :: Ptr PipelineStageFlags2KHR)) (dstStageMask)
+    lift $ poke ((p `plusPtr` 40 :: Ptr AccessFlags2KHR)) (dstAccessMask)
+    lift $ poke ((p `plusPtr` 48 :: Ptr ImageLayout)) (oldLayout)
+    lift $ poke ((p `plusPtr` 52 :: Ptr ImageLayout)) (newLayout)
+    lift $ poke ((p `plusPtr` 56 :: Ptr Word32)) (srcQueueFamilyIndex)
+    lift $ poke ((p `plusPtr` 60 :: Ptr Word32)) (dstQueueFamilyIndex)
+    lift $ poke ((p `plusPtr` 64 :: Ptr Image)) (image)
+    lift $ poke ((p `plusPtr` 72 :: Ptr ImageSubresourceRange)) (subresourceRange)
     lift $ f
-  cStructSize = 80
+  cStructSize = 96
   cStructAlignment = 8
   pokeZeroCStruct p f = evalContT $ do
     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR)
     pNext' <- fmap castPtr . ContT $ withZeroChain @es
     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 32 :: Ptr ImageLayout)) (zero)
-    lift $ poke ((p `plusPtr` 36 :: Ptr ImageLayout)) (zero)
-    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)
-    lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) (zero)
-    lift $ poke ((p `plusPtr` 48 :: Ptr Image)) (zero)
-    lift $ poke ((p `plusPtr` 56 :: Ptr ImageSubresourceRange)) (zero)
+    lift $ poke ((p `plusPtr` 48 :: Ptr ImageLayout)) (zero)
+    lift $ poke ((p `plusPtr` 52 :: Ptr ImageLayout)) (zero)
+    lift $ poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 60 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 64 :: Ptr Image)) (zero)
+    lift $ poke ((p `plusPtr` 72 :: Ptr ImageSubresourceRange)) (zero)
     lift $ f
 
 instance (Extendss ImageMemoryBarrier2KHR es, PeekChain es) => FromCStruct (ImageMemoryBarrier2KHR es) where
@@ -3660,15 +3665,15 @@
     pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
     next <- peekChain (castPtr pNext)
     srcStageMask <- peek @PipelineStageFlags2KHR ((p `plusPtr` 16 :: Ptr PipelineStageFlags2KHR))
-    srcAccessMask <- peek @AccessFlags2KHR ((p `plusPtr` 20 :: Ptr AccessFlags2KHR))
-    dstStageMask <- peek @PipelineStageFlags2KHR ((p `plusPtr` 24 :: Ptr PipelineStageFlags2KHR))
-    dstAccessMask <- peek @AccessFlags2KHR ((p `plusPtr` 28 :: Ptr AccessFlags2KHR))
-    oldLayout <- peek @ImageLayout ((p `plusPtr` 32 :: Ptr ImageLayout))
-    newLayout <- peek @ImageLayout ((p `plusPtr` 36 :: Ptr ImageLayout))
-    srcQueueFamilyIndex <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
-    dstQueueFamilyIndex <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))
-    image <- peek @Image ((p `plusPtr` 48 :: Ptr Image))
-    subresourceRange <- peekCStruct @ImageSubresourceRange ((p `plusPtr` 56 :: Ptr ImageSubresourceRange))
+    srcAccessMask <- peek @AccessFlags2KHR ((p `plusPtr` 24 :: Ptr AccessFlags2KHR))
+    dstStageMask <- peek @PipelineStageFlags2KHR ((p `plusPtr` 32 :: Ptr PipelineStageFlags2KHR))
+    dstAccessMask <- peek @AccessFlags2KHR ((p `plusPtr` 40 :: Ptr AccessFlags2KHR))
+    oldLayout <- peek @ImageLayout ((p `plusPtr` 48 :: Ptr ImageLayout))
+    newLayout <- peek @ImageLayout ((p `plusPtr` 52 :: Ptr ImageLayout))
+    srcQueueFamilyIndex <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))
+    dstQueueFamilyIndex <- peek @Word32 ((p `plusPtr` 60 :: Ptr Word32))
+    image <- peek @Image ((p `plusPtr` 64 :: Ptr Image))
+    subresourceRange <- peekCStruct @ImageSubresourceRange ((p `plusPtr` 72 :: Ptr ImageSubresourceRange))
     pure $ ImageMemoryBarrier2KHR
              next srcStageMask srcAccessMask dstStageMask dstAccessMask oldLayout newLayout srcQueueFamilyIndex dstQueueFamilyIndex image subresourceRange
 
@@ -3937,10 +3942,11 @@
 --     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
 --     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
 --
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03921# If
+-- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-04747# If
 --     @srcAccessMask@ includes
 --     'ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT', @srcStageMask@
 --     /must/ include 'PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR',
+--     'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
 --     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
 --     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
 --
@@ -4183,10 +4189,11 @@
 --     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
 --     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
 --
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03921# If
+-- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-04747# If
 --     @dstAccessMask@ includes
 --     'ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT', @dstStageMask@
 --     /must/ include 'PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR',
+--     'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
 --     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
 --     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
 --
@@ -4355,48 +4362,48 @@
 deriving instance Show BufferMemoryBarrier2KHR
 
 instance ToCStruct BufferMemoryBarrier2KHR where
-  withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)
+  withCStruct x f = allocaBytesAligned 80 8 $ \p -> pokeCStruct p x (f p)
   pokeCStruct p BufferMemoryBarrier2KHR{..} f = do
     poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR)
     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
     poke ((p `plusPtr` 16 :: Ptr PipelineStageFlags2KHR)) (srcStageMask)
-    poke ((p `plusPtr` 20 :: Ptr AccessFlags2KHR)) (srcAccessMask)
-    poke ((p `plusPtr` 24 :: Ptr PipelineStageFlags2KHR)) (dstStageMask)
-    poke ((p `plusPtr` 28 :: Ptr AccessFlags2KHR)) (dstAccessMask)
-    poke ((p `plusPtr` 32 :: Ptr Word32)) (srcQueueFamilyIndex)
-    poke ((p `plusPtr` 36 :: Ptr Word32)) (dstQueueFamilyIndex)
-    poke ((p `plusPtr` 40 :: Ptr Buffer)) (buffer)
-    poke ((p `plusPtr` 48 :: Ptr DeviceSize)) (offset)
-    poke ((p `plusPtr` 56 :: Ptr DeviceSize)) (size)
+    poke ((p `plusPtr` 24 :: Ptr AccessFlags2KHR)) (srcAccessMask)
+    poke ((p `plusPtr` 32 :: Ptr PipelineStageFlags2KHR)) (dstStageMask)
+    poke ((p `plusPtr` 40 :: Ptr AccessFlags2KHR)) (dstAccessMask)
+    poke ((p `plusPtr` 48 :: Ptr Word32)) (srcQueueFamilyIndex)
+    poke ((p `plusPtr` 52 :: Ptr Word32)) (dstQueueFamilyIndex)
+    poke ((p `plusPtr` 56 :: Ptr Buffer)) (buffer)
+    poke ((p `plusPtr` 64 :: Ptr DeviceSize)) (offset)
+    poke ((p `plusPtr` 72 :: Ptr DeviceSize)) (size)
     f
-  cStructSize = 64
+  cStructSize = 80
   cStructAlignment = 8
   pokeZeroCStruct p f = do
     poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR)
     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 40 :: Ptr Buffer)) (zero)
-    poke ((p `plusPtr` 48 :: Ptr DeviceSize)) (zero)
-    poke ((p `plusPtr` 56 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 52 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 56 :: Ptr Buffer)) (zero)
+    poke ((p `plusPtr` 64 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 72 :: Ptr DeviceSize)) (zero)
     f
 
 instance FromCStruct BufferMemoryBarrier2KHR where
   peekCStruct p = do
     srcStageMask <- peek @PipelineStageFlags2KHR ((p `plusPtr` 16 :: Ptr PipelineStageFlags2KHR))
-    srcAccessMask <- peek @AccessFlags2KHR ((p `plusPtr` 20 :: Ptr AccessFlags2KHR))
-    dstStageMask <- peek @PipelineStageFlags2KHR ((p `plusPtr` 24 :: Ptr PipelineStageFlags2KHR))
-    dstAccessMask <- peek @AccessFlags2KHR ((p `plusPtr` 28 :: Ptr AccessFlags2KHR))
-    srcQueueFamilyIndex <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
-    dstQueueFamilyIndex <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
-    buffer <- peek @Buffer ((p `plusPtr` 40 :: Ptr Buffer))
-    offset <- peek @DeviceSize ((p `plusPtr` 48 :: Ptr DeviceSize))
-    size <- peek @DeviceSize ((p `plusPtr` 56 :: Ptr DeviceSize))
+    srcAccessMask <- peek @AccessFlags2KHR ((p `plusPtr` 24 :: Ptr AccessFlags2KHR))
+    dstStageMask <- peek @PipelineStageFlags2KHR ((p `plusPtr` 32 :: Ptr PipelineStageFlags2KHR))
+    dstAccessMask <- peek @AccessFlags2KHR ((p `plusPtr` 40 :: Ptr AccessFlags2KHR))
+    srcQueueFamilyIndex <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
+    dstQueueFamilyIndex <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))
+    buffer <- peek @Buffer ((p `plusPtr` 56 :: Ptr Buffer))
+    offset <- peek @DeviceSize ((p `plusPtr` 64 :: Ptr DeviceSize))
+    size <- peek @DeviceSize ((p `plusPtr` 72 :: Ptr DeviceSize))
     pure $ BufferMemoryBarrier2KHR
              srcStageMask srcAccessMask dstStageMask dstAccessMask srcQueueFamilyIndex dstQueueFamilyIndex buffer offset size
 
 instance Storable BufferMemoryBarrier2KHR where
-  sizeOf ~_ = 64
+  sizeOf ~_ = 80
   alignment ~_ = 8
   peek = peekCStruct
   poke ptr poked = pokeCStruct ptr poked (pure ())
@@ -4493,16 +4500,16 @@
     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
     lift $ poke ((p `plusPtr` 16 :: Ptr DependencyFlags)) (dependencyFlags)
     lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (memoryBarriers)) :: Word32))
-    pPMemoryBarriers' <- ContT $ allocaBytesAligned @MemoryBarrier2KHR ((Data.Vector.length (memoryBarriers)) * 32) 8
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPMemoryBarriers' `plusPtr` (32 * (i)) :: Ptr MemoryBarrier2KHR) (e)) (memoryBarriers)
+    pPMemoryBarriers' <- ContT $ allocaBytesAligned @MemoryBarrier2KHR ((Data.Vector.length (memoryBarriers)) * 48) 8
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPMemoryBarriers' `plusPtr` (48 * (i)) :: Ptr MemoryBarrier2KHR) (e)) (memoryBarriers)
     lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr MemoryBarrier2KHR))) (pPMemoryBarriers')
     lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (bufferMemoryBarriers)) :: Word32))
-    pPBufferMemoryBarriers' <- ContT $ allocaBytesAligned @BufferMemoryBarrier2KHR ((Data.Vector.length (bufferMemoryBarriers)) * 64) 8
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPBufferMemoryBarriers' `plusPtr` (64 * (i)) :: Ptr BufferMemoryBarrier2KHR) (e)) (bufferMemoryBarriers)
+    pPBufferMemoryBarriers' <- ContT $ allocaBytesAligned @BufferMemoryBarrier2KHR ((Data.Vector.length (bufferMemoryBarriers)) * 80) 8
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPBufferMemoryBarriers' `plusPtr` (80 * (i)) :: Ptr BufferMemoryBarrier2KHR) (e)) (bufferMemoryBarriers)
     lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr BufferMemoryBarrier2KHR))) (pPBufferMemoryBarriers')
     lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (imageMemoryBarriers)) :: Word32))
-    pPImageMemoryBarriers' <- ContT $ allocaBytesAligned @(ImageMemoryBarrier2KHR _) ((Data.Vector.length (imageMemoryBarriers)) * 80) 8
-    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPImageMemoryBarriers' `plusPtr` (80 * (i)) :: Ptr (ImageMemoryBarrier2KHR _))) (e) . ($ ())) (imageMemoryBarriers)
+    pPImageMemoryBarriers' <- ContT $ allocaBytesAligned @(ImageMemoryBarrier2KHR _) ((Data.Vector.length (imageMemoryBarriers)) * 96) 8
+    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPImageMemoryBarriers' `plusPtr` (96 * (i)) :: Ptr (ImageMemoryBarrier2KHR _))) (e) . ($ ())) (imageMemoryBarriers)
     lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr (ImageMemoryBarrier2KHR _)))) (pPImageMemoryBarriers')
     lift $ f
   cStructSize = 64
@@ -4517,13 +4524,13 @@
     dependencyFlags <- peek @DependencyFlags ((p `plusPtr` 16 :: Ptr DependencyFlags))
     memoryBarrierCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
     pMemoryBarriers <- peek @(Ptr MemoryBarrier2KHR) ((p `plusPtr` 24 :: Ptr (Ptr MemoryBarrier2KHR)))
-    pMemoryBarriers' <- generateM (fromIntegral memoryBarrierCount) (\i -> peekCStruct @MemoryBarrier2KHR ((pMemoryBarriers `advancePtrBytes` (32 * (i)) :: Ptr MemoryBarrier2KHR)))
+    pMemoryBarriers' <- generateM (fromIntegral memoryBarrierCount) (\i -> peekCStruct @MemoryBarrier2KHR ((pMemoryBarriers `advancePtrBytes` (48 * (i)) :: Ptr MemoryBarrier2KHR)))
     bufferMemoryBarrierCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
     pBufferMemoryBarriers <- peek @(Ptr BufferMemoryBarrier2KHR) ((p `plusPtr` 40 :: Ptr (Ptr BufferMemoryBarrier2KHR)))
-    pBufferMemoryBarriers' <- generateM (fromIntegral bufferMemoryBarrierCount) (\i -> peekCStruct @BufferMemoryBarrier2KHR ((pBufferMemoryBarriers `advancePtrBytes` (64 * (i)) :: Ptr BufferMemoryBarrier2KHR)))
+    pBufferMemoryBarriers' <- generateM (fromIntegral bufferMemoryBarrierCount) (\i -> peekCStruct @BufferMemoryBarrier2KHR ((pBufferMemoryBarriers `advancePtrBytes` (80 * (i)) :: Ptr BufferMemoryBarrier2KHR)))
     imageMemoryBarrierCount <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
     pImageMemoryBarriers <- peek @(Ptr (ImageMemoryBarrier2KHR _)) ((p `plusPtr` 56 :: Ptr (Ptr (ImageMemoryBarrier2KHR _))))
-    pImageMemoryBarriers' <- generateM (fromIntegral imageMemoryBarrierCount) (\i -> peekSomeCStruct (forgetExtensions ((pImageMemoryBarriers `advancePtrBytes` (80 * (i)) :: Ptr (ImageMemoryBarrier2KHR _)))))
+    pImageMemoryBarriers' <- generateM (fromIntegral imageMemoryBarrierCount) (\i -> peekSomeCStruct (forgetExtensions ((pImageMemoryBarriers `advancePtrBytes` (96 * (i)) :: Ptr (ImageMemoryBarrier2KHR _)))))
     pure $ DependencyInfoKHR
              dependencyFlags pMemoryBarriers' pBufferMemoryBarriers' pImageMemoryBarriers'
 
@@ -4633,23 +4640,23 @@
 deriving instance Show SemaphoreSubmitInfoKHR
 
 instance ToCStruct SemaphoreSubmitInfoKHR where
-  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)
+  withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)
   pokeCStruct p SemaphoreSubmitInfoKHR{..} f = do
     poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR)
     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
     poke ((p `plusPtr` 16 :: Ptr Semaphore)) (semaphore)
     poke ((p `plusPtr` 24 :: Ptr Word64)) (value)
     poke ((p `plusPtr` 32 :: Ptr PipelineStageFlags2KHR)) (stageMask)
-    poke ((p `plusPtr` 36 :: Ptr Word32)) (deviceIndex)
+    poke ((p `plusPtr` 40 :: Ptr Word32)) (deviceIndex)
     f
-  cStructSize = 40
+  cStructSize = 48
   cStructAlignment = 8
   pokeZeroCStruct p f = do
     poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR)
     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
     poke ((p `plusPtr` 16 :: Ptr Semaphore)) (zero)
     poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)
-    poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)
     f
 
 instance FromCStruct SemaphoreSubmitInfoKHR where
@@ -4657,12 +4664,12 @@
     semaphore <- peek @Semaphore ((p `plusPtr` 16 :: Ptr Semaphore))
     value <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))
     stageMask <- peek @PipelineStageFlags2KHR ((p `plusPtr` 32 :: Ptr PipelineStageFlags2KHR))
-    deviceIndex <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
+    deviceIndex <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
     pure $ SemaphoreSubmitInfoKHR
              semaphore value stageMask deviceIndex
 
 instance Storable SemaphoreSubmitInfoKHR where
-  sizeOf ~_ = 40
+  sizeOf ~_ = 48
   alignment ~_ = 8
   peek = peekCStruct
   poke ptr poked = pokeCStruct ptr poked (pure ())
@@ -4882,16 +4889,16 @@
     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
     lift $ poke ((p `plusPtr` 16 :: Ptr SubmitFlagsKHR)) (flags)
     lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (waitSemaphoreInfos)) :: Word32))
-    pPWaitSemaphoreInfos' <- ContT $ allocaBytesAligned @SemaphoreSubmitInfoKHR ((Data.Vector.length (waitSemaphoreInfos)) * 40) 8
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPWaitSemaphoreInfos' `plusPtr` (40 * (i)) :: Ptr SemaphoreSubmitInfoKHR) (e)) (waitSemaphoreInfos)
+    pPWaitSemaphoreInfos' <- ContT $ allocaBytesAligned @SemaphoreSubmitInfoKHR ((Data.Vector.length (waitSemaphoreInfos)) * 48) 8
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPWaitSemaphoreInfos' `plusPtr` (48 * (i)) :: Ptr SemaphoreSubmitInfoKHR) (e)) (waitSemaphoreInfos)
     lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr SemaphoreSubmitInfoKHR))) (pPWaitSemaphoreInfos')
     lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (commandBufferInfos)) :: Word32))
     pPCommandBufferInfos' <- ContT $ allocaBytesAligned @CommandBufferSubmitInfoKHR ((Data.Vector.length (commandBufferInfos)) * 32) 8
     lift $ Data.Vector.imapM_ (\i e -> poke (pPCommandBufferInfos' `plusPtr` (32 * (i)) :: Ptr CommandBufferSubmitInfoKHR) (e)) (commandBufferInfos)
     lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr CommandBufferSubmitInfoKHR))) (pPCommandBufferInfos')
     lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (signalSemaphoreInfos)) :: Word32))
-    pPSignalSemaphoreInfos' <- ContT $ allocaBytesAligned @SemaphoreSubmitInfoKHR ((Data.Vector.length (signalSemaphoreInfos)) * 40) 8
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPSignalSemaphoreInfos' `plusPtr` (40 * (i)) :: Ptr SemaphoreSubmitInfoKHR) (e)) (signalSemaphoreInfos)
+    pPSignalSemaphoreInfos' <- ContT $ allocaBytesAligned @SemaphoreSubmitInfoKHR ((Data.Vector.length (signalSemaphoreInfos)) * 48) 8
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPSignalSemaphoreInfos' `plusPtr` (48 * (i)) :: Ptr SemaphoreSubmitInfoKHR) (e)) (signalSemaphoreInfos)
     lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr SemaphoreSubmitInfoKHR))) (pPSignalSemaphoreInfos')
     lift $ f
   cStructSize = 64
@@ -4909,13 +4916,13 @@
     flags <- peek @SubmitFlagsKHR ((p `plusPtr` 16 :: Ptr SubmitFlagsKHR))
     waitSemaphoreInfoCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
     pWaitSemaphoreInfos <- peek @(Ptr SemaphoreSubmitInfoKHR) ((p `plusPtr` 24 :: Ptr (Ptr SemaphoreSubmitInfoKHR)))
-    pWaitSemaphoreInfos' <- generateM (fromIntegral waitSemaphoreInfoCount) (\i -> peekCStruct @SemaphoreSubmitInfoKHR ((pWaitSemaphoreInfos `advancePtrBytes` (40 * (i)) :: Ptr SemaphoreSubmitInfoKHR)))
+    pWaitSemaphoreInfos' <- generateM (fromIntegral waitSemaphoreInfoCount) (\i -> peekCStruct @SemaphoreSubmitInfoKHR ((pWaitSemaphoreInfos `advancePtrBytes` (48 * (i)) :: Ptr SemaphoreSubmitInfoKHR)))
     commandBufferInfoCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
     pCommandBufferInfos <- peek @(Ptr CommandBufferSubmitInfoKHR) ((p `plusPtr` 40 :: Ptr (Ptr CommandBufferSubmitInfoKHR)))
     pCommandBufferInfos' <- generateM (fromIntegral commandBufferInfoCount) (\i -> peekCStruct @CommandBufferSubmitInfoKHR ((pCommandBufferInfos `advancePtrBytes` (32 * (i)) :: Ptr CommandBufferSubmitInfoKHR)))
     signalSemaphoreInfoCount <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
     pSignalSemaphoreInfos <- peek @(Ptr SemaphoreSubmitInfoKHR) ((p `plusPtr` 56 :: Ptr (Ptr SemaphoreSubmitInfoKHR)))
-    pSignalSemaphoreInfos' <- generateM (fromIntegral signalSemaphoreInfoCount) (\i -> peekCStruct @SemaphoreSubmitInfoKHR ((pSignalSemaphoreInfos `advancePtrBytes` (40 * (i)) :: Ptr SemaphoreSubmitInfoKHR)))
+    pSignalSemaphoreInfos' <- generateM (fromIntegral signalSemaphoreInfoCount) (\i -> peekCStruct @SemaphoreSubmitInfoKHR ((pSignalSemaphoreInfos `advancePtrBytes` (48 * (i)) :: Ptr SemaphoreSubmitInfoKHR)))
     pure $ SubmitInfo2KHR
              next flags pWaitSemaphoreInfos' pCommandBufferInfos' pSignalSemaphoreInfos'
 
@@ -5116,71 +5123,7 @@
            zero
 
 
--- | VkAccessFlags2KHR - 64-bit mask of access flags
---
--- = See Also
---
--- 'BufferMemoryBarrier2KHR', 'ImageMemoryBarrier2KHR', 'MemoryBarrier2KHR'
-newtype AccessFlags2KHR = AccessFlags2KHR Flags
-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
-
-
-
-conNameAccessFlags2KHR :: String
-conNameAccessFlags2KHR = "AccessFlags2KHR"
-
-enumPrefixAccessFlags2KHR :: String
-enumPrefixAccessFlags2KHR = ""
-
-showTableAccessFlags2KHR :: [(AccessFlags2KHR, String)]
-showTableAccessFlags2KHR = []
-
-instance Show AccessFlags2KHR where
-  showsPrec = enumShowsPrec enumPrefixAccessFlags2KHR
-                            showTableAccessFlags2KHR
-                            conNameAccessFlags2KHR
-                            (\(AccessFlags2KHR x) -> x)
-                            (\x -> showString "0x" . showHex x)
-
-instance Read AccessFlags2KHR where
-  readPrec = enumReadPrec enumPrefixAccessFlags2KHR showTableAccessFlags2KHR conNameAccessFlags2KHR AccessFlags2KHR
-
-
--- | VkPipelineStageFlags2KHR - 64-bit mask of pipeline stage flags
---
--- = See Also
---
--- 'BufferMemoryBarrier2KHR', 'CheckpointData2NV',
--- 'ImageMemoryBarrier2KHR', 'MemoryBarrier2KHR',
--- 'QueueFamilyCheckpointProperties2NV', 'SemaphoreSubmitInfoKHR',
--- 'cmdResetEvent2KHR', 'cmdWriteBufferMarker2AMD', 'cmdWriteTimestamp2KHR'
-newtype PipelineStageFlags2KHR = PipelineStageFlags2KHR Flags
-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
-
-
-
-conNamePipelineStageFlags2KHR :: String
-conNamePipelineStageFlags2KHR = "PipelineStageFlags2KHR"
-
-enumPrefixPipelineStageFlags2KHR :: String
-enumPrefixPipelineStageFlags2KHR = ""
-
-showTablePipelineStageFlags2KHR :: [(PipelineStageFlags2KHR, String)]
-showTablePipelineStageFlags2KHR = []
-
-instance Show PipelineStageFlags2KHR where
-  showsPrec = enumShowsPrec enumPrefixPipelineStageFlags2KHR
-                            showTablePipelineStageFlags2KHR
-                            conNamePipelineStageFlags2KHR
-                            (\(PipelineStageFlags2KHR x) -> x)
-                            (\x -> showString "0x" . showHex x)
-
-instance Read PipelineStageFlags2KHR where
-  readPrec = enumReadPrec enumPrefixPipelineStageFlags2KHR
-                          showTablePipelineStageFlags2KHR
-                          conNamePipelineStageFlags2KHR
-                          PipelineStageFlags2KHR
-
+type AccessFlags2KHR = AccessFlagBits2KHR
 
 -- | VkAccessFlagBits2KHR - Access flags for VkAccessFlags2KHR
 --
@@ -5203,30 +5146,30 @@
 -- = See Also
 --
 -- No cross-references are available
-newtype AccessFlagBits2KHR = AccessFlagBits2KHR Flags
+newtype AccessFlagBits2KHR = AccessFlagBits2KHR Flags64
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
 -- | 'ACCESS_2_NONE_KHR' specifies no accesses.
-pattern ACCESS_2_NONE_KHR                               = AccessFlagBits2KHR 0x00000000
+pattern ACCESS_2_NONE_KHR                               = AccessFlagBits2KHR 0x0000000000000000
 -- | 'ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR' specifies read access to
 -- indirect buffers in the 'PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR'
 -- pipeline stage.
-pattern ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR          = AccessFlagBits2KHR 0x00000001
+pattern ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR          = AccessFlagBits2KHR 0x0000000000000001
 -- | 'ACCESS_2_INDEX_READ_BIT_KHR' specifies read access to an index buffer
 -- in the 'PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR' pipeline stage.
-pattern ACCESS_2_INDEX_READ_BIT_KHR                     = AccessFlagBits2KHR 0x00000002
+pattern ACCESS_2_INDEX_READ_BIT_KHR                     = AccessFlagBits2KHR 0x0000000000000002
 -- | 'ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR' specifies read access to a
 -- vertex buffer in the 'PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR'
 -- pipeline stage.
-pattern ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR          = AccessFlagBits2KHR 0x00000004
+pattern ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR          = AccessFlagBits2KHR 0x0000000000000004
 -- | 'ACCESS_2_UNIFORM_READ_BIT_KHR' specifies read access to a
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbuffer uniform buffer>
 -- in any shader pipeline stage.
-pattern ACCESS_2_UNIFORM_READ_BIT_KHR                   = AccessFlagBits2KHR 0x00000008
+pattern ACCESS_2_UNIFORM_READ_BIT_KHR                   = AccessFlagBits2KHR 0x0000000000000008
 -- | 'ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR' specifies read access to an
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass input attachment>
 -- in the 'PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR' pipeline stage.
-pattern ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR          = AccessFlagBits2KHR 0x00000010
+pattern ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR          = AccessFlagBits2KHR 0x0000000000000010
 -- | 'ACCESS_2_SHADER_READ_BIT_KHR' is equivalent to the logical OR of:
 --
 -- -   VK_ACCESS_2_UNIFORM_READ_BIT_KHR
@@ -5234,64 +5177,64 @@
 -- -   VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR
 --
 -- -   VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR
-pattern ACCESS_2_SHADER_READ_BIT_KHR                    = AccessFlagBits2KHR 0x00000020
+pattern ACCESS_2_SHADER_READ_BIT_KHR                    = AccessFlagBits2KHR 0x0000000000000020
 -- | 'ACCESS_2_SHADER_WRITE_BIT_KHR' is equivalent to
 -- 'ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR'.
-pattern ACCESS_2_SHADER_WRITE_BIT_KHR                   = AccessFlagBits2KHR 0x00000040
+pattern ACCESS_2_SHADER_WRITE_BIT_KHR                   = AccessFlagBits2KHR 0x0000000000000040
 -- | 'ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR' specifies read access to a
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass color attachment>
 -- (excluding
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operations>)
 -- in the 'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR' pipeline
 -- stage.
-pattern ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR          = AccessFlagBits2KHR 0x00000080
+pattern ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR          = AccessFlagBits2KHR 0x0000000000000080
 -- | 'ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR' specifies write access to a
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass color or resolve attachment>
 -- in the 'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR' pipeline
 -- stage.
-pattern ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR         = AccessFlagBits2KHR 0x00000100
+pattern ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR         = AccessFlagBits2KHR 0x0000000000000100
 -- | 'ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR' specifies read access
 -- to a
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass depth\/stencil attachment>
 -- in the 'PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR' or
 -- 'PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR' pipeline stages.
-pattern ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR  = AccessFlagBits2KHR 0x00000200
+pattern ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR  = AccessFlagBits2KHR 0x0000000000000200
 -- | 'ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR' specifies write access
 -- to a
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass depth\/stencil attachment>
 -- in the 'PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR' or
 -- 'PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR' pipeline stages.
-pattern ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR = AccessFlagBits2KHR 0x00000400
+pattern ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR = AccessFlagBits2KHR 0x0000000000000400
 -- | 'ACCESS_2_TRANSFER_READ_BIT_KHR' specifies read access to an image or
 -- buffer in the 'PIPELINE_STAGE_2_COPY_BIT_KHR',
 -- 'PIPELINE_STAGE_2_BLIT_BIT_KHR', or 'PIPELINE_STAGE_2_RESOLVE_BIT_KHR'
 -- pipeline stages.
-pattern ACCESS_2_TRANSFER_READ_BIT_KHR                  = AccessFlagBits2KHR 0x00000800
+pattern ACCESS_2_TRANSFER_READ_BIT_KHR                  = AccessFlagBits2KHR 0x0000000000000800
 -- | 'ACCESS_2_TRANSFER_WRITE_BIT_KHR' specifies write access to an image or
 -- buffer in the 'PIPELINE_STAGE_2_COPY_BIT_KHR',
 -- 'PIPELINE_STAGE_2_BLIT_BIT_KHR', 'PIPELINE_STAGE_2_CLEAR_BIT_KHR', or
 -- 'PIPELINE_STAGE_2_RESOLVE_BIT_KHR' pipeline stages.
-pattern ACCESS_2_TRANSFER_WRITE_BIT_KHR                 = AccessFlagBits2KHR 0x00001000
+pattern ACCESS_2_TRANSFER_WRITE_BIT_KHR                 = AccessFlagBits2KHR 0x0000000000001000
 -- | 'ACCESS_2_HOST_READ_BIT_KHR' specifies read access to memory in the
 -- 'PIPELINE_STAGE_2_HOST_BIT_KHR' pipeline stage.
-pattern ACCESS_2_HOST_READ_BIT_KHR                      = AccessFlagBits2KHR 0x00002000
+pattern ACCESS_2_HOST_READ_BIT_KHR                      = AccessFlagBits2KHR 0x0000000000002000
 -- | 'ACCESS_2_HOST_WRITE_BIT_KHR' specifies write access to memory in the
 -- 'PIPELINE_STAGE_2_HOST_BIT_KHR' pipeline stage.
-pattern ACCESS_2_HOST_WRITE_BIT_KHR                     = AccessFlagBits2KHR 0x00004000
+pattern ACCESS_2_HOST_WRITE_BIT_KHR                     = AccessFlagBits2KHR 0x0000000000004000
 -- | 'ACCESS_2_MEMORY_READ_BIT_KHR' specifies all read accesses. It is always
 -- valid in any access mask, and is treated as equivalent to setting all
 -- @READ@ access flags that are valid where it is used.
-pattern ACCESS_2_MEMORY_READ_BIT_KHR                    = AccessFlagBits2KHR 0x00008000
+pattern ACCESS_2_MEMORY_READ_BIT_KHR                    = AccessFlagBits2KHR 0x0000000000008000
 -- | 'ACCESS_2_MEMORY_WRITE_BIT_KHR' specifies all write accesses. It is
 -- always valid in any access mask, and is treated as equivalent to setting
 -- all @WRITE@ access flags that are valid where it is used.
-pattern ACCESS_2_MEMORY_WRITE_BIT_KHR                   = AccessFlagBits2KHR 0x00010000
+pattern ACCESS_2_MEMORY_WRITE_BIT_KHR                   = AccessFlagBits2KHR 0x0000000000010000
 -- | 'ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR' specifies read access to a
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer uniform texel buffer>
 -- or
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage sampled image>
 -- in any shader pipeline stage.
-pattern ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR            = AccessFlagBits2KHR 0x100000000
+pattern ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR            = AccessFlagBits2KHR 0x0000000100000000
 -- | 'ACCESS_2_SHADER_STORAGE_READ_BIT_KHR' specifies read access to a
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebuffer storage buffer>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-physical-storage-buffer physical storage buffer>,
@@ -5299,7 +5242,7 @@
 -- or
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage image>
 -- in any shader pipeline stage.
-pattern ACCESS_2_SHADER_STORAGE_READ_BIT_KHR            = AccessFlagBits2KHR 0x200000000
+pattern ACCESS_2_SHADER_STORAGE_READ_BIT_KHR            = AccessFlagBits2KHR 0x0000000200000000
 -- | 'ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR' specifies write access to a
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebuffer storage buffer>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-physical-storage-buffer physical storage buffer>,
@@ -5307,7 +5250,7 @@
 -- or
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage image>
 -- in any shader pipeline stage.
-pattern ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR           = AccessFlagBits2KHR 0x400000000
+pattern ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR           = AccessFlagBits2KHR 0x0000000400000000
 -- | 'ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT' specifies read
 -- access to
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass color attachments>,
@@ -5315,48 +5258,48 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operations>,
 -- in the 'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR' pipeline
 -- stage.
-pattern ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = AccessFlagBits2KHR 0x00080000
+pattern ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = AccessFlagBits2KHR 0x0000000000080000
 -- | 'ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT' specifies read access to a
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>
 -- in the 'PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT' pipeline
 -- stage.
-pattern ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT      = AccessFlagBits2KHR 0x01000000
+pattern ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT      = AccessFlagBits2KHR 0x0000000001000000
 -- | 'ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR' specifies write access
 -- to an acceleration structure in the
 -- 'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR' pipeline stage.
-pattern ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR   = AccessFlagBits2KHR 0x00400000
+pattern ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR   = AccessFlagBits2KHR 0x0000000000400000
 -- | 'ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR' specifies read access to
 -- an acceleration structure in the
 -- 'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR' or
 -- 'PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR' pipeline stages.
-pattern ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR    = AccessFlagBits2KHR 0x00200000
+pattern ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR    = AccessFlagBits2KHR 0x0000000000200000
 -- No documentation found for Nested "VkAccessFlagBits2KHR" "VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR"
-pattern ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = AccessFlagBits2KHR 0x00800000
+pattern ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = AccessFlagBits2KHR 0x0000000000800000
 -- | 'ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV' specifies writes to the
 -- target command buffer in the
 -- 'PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV' pipeline stage.
-pattern ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV        = AccessFlagBits2KHR 0x00040000
+pattern ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV        = AccessFlagBits2KHR 0x0000000000040000
 -- | 'ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV' specifies reads from
 -- 'Vulkan.Core10.Handles.Buffer' inputs to
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdPreprocessGeneratedCommandsNV'
 -- in the 'PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV' pipeline stage.
-pattern ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV         = AccessFlagBits2KHR 0x00020000
+pattern ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV         = AccessFlagBits2KHR 0x0000000000020000
 -- | 'ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT' specifies read access to a
 -- predicate in the 'PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
 -- pipeline stage.
-pattern ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT     = AccessFlagBits2KHR 0x00100000
+pattern ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT     = AccessFlagBits2KHR 0x0000000000100000
 -- | 'ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT' specifies write
 -- access to a transform feedback counter buffer in the
 -- 'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT' pipeline stage.
-pattern ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = AccessFlagBits2KHR 0x08000000
+pattern ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = AccessFlagBits2KHR 0x0000000008000000
 -- | 'ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT' specifies read access
 -- to a transform feedback counter buffer in the
 -- 'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT' pipeline stage.
-pattern ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = AccessFlagBits2KHR 0x04000000
+pattern ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = AccessFlagBits2KHR 0x0000000004000000
 -- | 'ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT' specifies write access to a
 -- transform feedback buffer in the
 -- 'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT' pipeline stage.
-pattern ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT       = AccessFlagBits2KHR 0x02000000
+pattern ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT       = AccessFlagBits2KHR 0x0000000002000000
 
 conNameAccessFlagBits2KHR :: String
 conNameAccessFlagBits2KHR = "AccessFlagBits2KHR"
@@ -5412,6 +5355,8 @@
     enumReadPrec enumPrefixAccessFlagBits2KHR showTableAccessFlagBits2KHR conNameAccessFlagBits2KHR AccessFlagBits2KHR
 
 
+type PipelineStageFlags2KHR = PipelineStageFlagBits2KHR
+
 -- | VkPipelineStageFlagBits2KHR - Pipeline stage flags for
 -- VkPipelineStageFlags2KHR
 --
@@ -5434,65 +5379,65 @@
 -- = See Also
 --
 -- No cross-references are available
-newtype PipelineStageFlagBits2KHR = PipelineStageFlagBits2KHR Flags
+newtype PipelineStageFlagBits2KHR = PipelineStageFlagBits2KHR Flags64
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
 -- | 'PIPELINE_STAGE_2_NONE_KHR' specifies no stages of execution.
-pattern PIPELINE_STAGE_2_NONE_KHR                               = PipelineStageFlagBits2KHR 0x00000000
+pattern PIPELINE_STAGE_2_NONE_KHR                               = PipelineStageFlagBits2KHR 0x0000000000000000
 -- | 'PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR' is equivalent to
 -- 'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR' with 'AccessFlags2KHR' set to
 -- @0@ when specified in the second synchronization scope, but equivalent
 -- to 'PIPELINE_STAGE_2_NONE_KHR' in the first scope.
-pattern PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR                    = PipelineStageFlagBits2KHR 0x00000001
+pattern PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR                    = PipelineStageFlagBits2KHR 0x0000000000000001
 -- | 'PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR' specifies the stage of the
 -- pipeline where indirect command parameters are consumed. This stage also
 -- includes reading commands written by
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdPreprocessGeneratedCommandsNV'.
-pattern PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR                  = PipelineStageFlagBits2KHR 0x00000002
+pattern PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR                  = PipelineStageFlagBits2KHR 0x0000000000000002
 -- | 'PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR' is equivalent to the logical OR
 -- of:
 --
 -- -   'PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR'
 --
 -- -   'PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR'
-pattern PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR                   = PipelineStageFlagBits2KHR 0x00000004
+pattern PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR                   = PipelineStageFlagBits2KHR 0x0000000000000004
 -- | 'PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR' specifies the vertex shader
 -- stage.
-pattern PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR                  = PipelineStageFlagBits2KHR 0x00000008
+pattern PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR                  = PipelineStageFlagBits2KHR 0x0000000000000008
 -- | 'PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR' specifies the
 -- tessellation control shader stage.
-pattern PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR    = PipelineStageFlagBits2KHR 0x00000010
+pattern PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR    = PipelineStageFlagBits2KHR 0x0000000000000010
 -- | 'PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR' specifies the
 -- tessellation evaluation shader stage.
-pattern PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR = PipelineStageFlagBits2KHR 0x00000020
+pattern PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR = PipelineStageFlagBits2KHR 0x0000000000000020
 -- | 'PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR' specifies the geometry shader
 -- stage.
-pattern PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR                = PipelineStageFlagBits2KHR 0x00000040
+pattern PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR                = PipelineStageFlagBits2KHR 0x0000000000000040
 -- | 'PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR' specifies the fragment shader
 -- stage.
-pattern PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR                = PipelineStageFlagBits2KHR 0x00000080
+pattern PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR                = PipelineStageFlagBits2KHR 0x0000000000000080
 -- | 'PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR' specifies the stage of
 -- the pipeline where early fragment tests (depth and stencil tests before
 -- fragment shading) are performed. This stage also includes
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass load operations>
 -- for framebuffer attachments with a depth\/stencil format.
-pattern PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR           = PipelineStageFlagBits2KHR 0x00000100
+pattern PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR           = PipelineStageFlagBits2KHR 0x0000000000000100
 -- | 'PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR' specifies the stage of
 -- the pipeline where late fragment tests (depth and stencil tests after
 -- fragment shading) are performed. This stage also includes
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass store operations>
 -- for framebuffer attachments with a depth\/stencil format.
-pattern PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR            = PipelineStageFlagBits2KHR 0x00000200
+pattern PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR            = PipelineStageFlagBits2KHR 0x0000000000000200
 -- | 'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR' specifies the stage
 -- of the pipeline after blending where the final color values are output
 -- from the pipeline. This stage also includes
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass load and store operations>
 -- and multisample resolve operations for framebuffer attachments with a
 -- color or depth\/stencil format.
-pattern PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR        = PipelineStageFlagBits2KHR 0x00000400
+pattern PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR        = PipelineStageFlagBits2KHR 0x0000000000000400
 -- | 'PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR' specifies the compute shader
 -- stage.
-pattern PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR                 = PipelineStageFlagBits2KHR 0x00000800
+pattern PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR                 = PipelineStageFlagBits2KHR 0x0000000000000800
 -- | 'PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR' is equivalent to specifying all
 -- of:
 --
@@ -5503,16 +5448,16 @@
 -- -   'PIPELINE_STAGE_2_RESOLVE_BIT_KHR'
 --
 -- -   'PIPELINE_STAGE_2_CLEAR_BIT_KHR'
-pattern PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR                   = PipelineStageFlagBits2KHR 0x00001000
+pattern PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR                   = PipelineStageFlagBits2KHR 0x0000000000001000
 -- | 'PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR' is equivalent to
 -- 'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR' with 'AccessFlags2KHR' set to
 -- @0@ when specified in the first synchronization scope, but equivalent to
 -- 'PIPELINE_STAGE_2_NONE_KHR' in the second scope.
-pattern PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR                 = PipelineStageFlagBits2KHR 0x00002000
+pattern PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR                 = PipelineStageFlagBits2KHR 0x0000000000002000
 -- | 'PIPELINE_STAGE_2_HOST_BIT_KHR' specifies a pseudo-stage indicating
 -- execution on the host of reads\/writes of device memory. This stage is
 -- not invoked by any commands recorded in a command buffer.
-pattern PIPELINE_STAGE_2_HOST_BIT_KHR                           = PipelineStageFlagBits2KHR 0x00004000
+pattern PIPELINE_STAGE_2_HOST_BIT_KHR                           = PipelineStageFlagBits2KHR 0x0000000000004000
 -- | 'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR' specifies the execution of all
 -- graphics pipeline stages, and is equivalent to the logical OR of:
 --
@@ -5547,31 +5492,31 @@
 -- -   'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'
 --
 -- -   'PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
-pattern PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR                   = PipelineStageFlagBits2KHR 0x00008000
+pattern PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR                   = PipelineStageFlagBits2KHR 0x0000000000008000
 -- | 'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR' specifies all operations
 -- performed by all commands supported on the queue it is used with.
-pattern PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR                   = PipelineStageFlagBits2KHR 0x00010000
+pattern PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR                   = PipelineStageFlagBits2KHR 0x0000000000010000
 -- | 'PIPELINE_STAGE_2_COPY_BIT_KHR' specifies the execution of all
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands>,
 -- including 'Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults'.
-pattern PIPELINE_STAGE_2_COPY_BIT_KHR                           = PipelineStageFlagBits2KHR 0x100000000
+pattern PIPELINE_STAGE_2_COPY_BIT_KHR                           = PipelineStageFlagBits2KHR 0x0000000100000000
 -- | 'PIPELINE_STAGE_2_RESOLVE_BIT_KHR' specifies the execution of
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdResolveImage'.
-pattern PIPELINE_STAGE_2_RESOLVE_BIT_KHR                        = PipelineStageFlagBits2KHR 0x200000000
+pattern PIPELINE_STAGE_2_RESOLVE_BIT_KHR                        = PipelineStageFlagBits2KHR 0x0000000200000000
 -- | 'PIPELINE_STAGE_2_BLIT_BIT_KHR' specifies the execution of
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage'.
-pattern PIPELINE_STAGE_2_BLIT_BIT_KHR                           = PipelineStageFlagBits2KHR 0x400000000
+pattern PIPELINE_STAGE_2_BLIT_BIT_KHR                           = PipelineStageFlagBits2KHR 0x0000000400000000
 -- | 'PIPELINE_STAGE_2_CLEAR_BIT_KHR' specifies the execution of
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears clear commands>,
 -- with the exception of
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdClearAttachments'.
-pattern PIPELINE_STAGE_2_CLEAR_BIT_KHR                          = PipelineStageFlagBits2KHR 0x800000000
+pattern PIPELINE_STAGE_2_CLEAR_BIT_KHR                          = PipelineStageFlagBits2KHR 0x0000000800000000
 -- | 'PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR' specifies the stage of the
 -- pipeline where index buffers are consumed.
-pattern PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR                    = PipelineStageFlagBits2KHR 0x1000000000
+pattern PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR                    = PipelineStageFlagBits2KHR 0x0000001000000000
 -- | 'PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR' specifies the stage of
 -- the pipeline where vertex buffers are consumed.
-pattern PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR         = PipelineStageFlagBits2KHR 0x2000000000
+pattern PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR         = PipelineStageFlagBits2KHR 0x0000002000000000
 -- | 'PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR' is equivalent to
 -- specifying all supported stages from:
 --
@@ -5586,22 +5531,22 @@
 -- -   'PIPELINE_STAGE_2_TASK_SHADER_BIT_NV'
 --
 -- -   'PIPELINE_STAGE_2_MESH_SHADER_BIT_NV'
-pattern PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR      = PipelineStageFlagBits2KHR 0x4000000000
+pattern PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR      = PipelineStageFlagBits2KHR 0x0000004000000000
 -- | 'PIPELINE_STAGE_2_MESH_SHADER_BIT_NV' specifies the mesh shader stage.
-pattern PIPELINE_STAGE_2_MESH_SHADER_BIT_NV                     = PipelineStageFlagBits2KHR 0x00100000
+pattern PIPELINE_STAGE_2_MESH_SHADER_BIT_NV                     = PipelineStageFlagBits2KHR 0x0000000000100000
 -- | 'PIPELINE_STAGE_2_TASK_SHADER_BIT_NV' specifies the task shader stage.
-pattern PIPELINE_STAGE_2_TASK_SHADER_BIT_NV                     = PipelineStageFlagBits2KHR 0x00080000
+pattern PIPELINE_STAGE_2_TASK_SHADER_BIT_NV                     = PipelineStageFlagBits2KHR 0x0000000000080000
 -- | 'PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT' specifies the stage
 -- of the pipeline where the fragment density map is read to
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapops generate the fragment areas>.
-pattern PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT       = PipelineStageFlagBits2KHR 0x00800000
+pattern PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT       = PipelineStageFlagBits2KHR 0x0000000000800000
 -- | 'PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR' specifies the execution of
 -- the ray tracing shader stages.
-pattern PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR             = PipelineStageFlagBits2KHR 0x00200000
+pattern PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR             = PipelineStageFlagBits2KHR 0x0000000000200000
 -- | 'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR' specifies the
 -- execution of
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure acceleration structure commands>.
-pattern PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR   = PipelineStageFlagBits2KHR 0x02000000
+pattern PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR   = PipelineStageFlagBits2KHR 0x0000000002000000
 -- | 'PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' specifies
 -- the stage of the pipeline where the
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
@@ -5609,19 +5554,19 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-attachment shading rate image>
 -- is read to determine the fragment shading rate for portions of a
 -- rasterized primitive.
-pattern PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = PipelineStageFlagBits2KHR 0x00400000
+pattern PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = PipelineStageFlagBits2KHR 0x0000000000400000
 -- | 'PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV' specifies the stage of the
 -- pipeline where device-side generation of commands via
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdPreprocessGeneratedCommandsNV'
 -- is handled.
-pattern PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV              = PipelineStageFlagBits2KHR 0x00020000
+pattern PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV              = PipelineStageFlagBits2KHR 0x0000000000020000
 -- | 'PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT' specifies the stage of
 -- the pipeline where the predicate of conditional rendering is consumed.
-pattern PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT          = PipelineStageFlagBits2KHR 0x00040000
+pattern PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT          = PipelineStageFlagBits2KHR 0x0000000000040000
 -- | 'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT' specifies the stage of the
 -- pipeline where vertex attribute output values are written to the
 -- transform feedback buffers.
-pattern PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT             = PipelineStageFlagBits2KHR 0x01000000
+pattern PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT             = PipelineStageFlagBits2KHR 0x0000000001000000
 
 conNamePipelineStageFlagBits2KHR :: String
 conNamePipelineStageFlagBits2KHR = "PipelineStageFlagBits2KHR"
diff --git a/src/Vulkan/Extensions/VK_KHR_synchronization2.hs-boot b/src/Vulkan/Extensions/VK_KHR_synchronization2.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_synchronization2.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_synchronization2.hs-boot
@@ -23,8 +23,6 @@
 --
 --     -   Requires @VK_KHR_get_physical_device_properties2@
 --
---     -   Requires @VK_KHR_create_renderpass2@
---
 -- [__Contact__]
 --
 --     -   Tobias Hector
@@ -431,6 +429,7 @@
                                                   , SemaphoreSubmitInfoKHR
                                                   , SubmitInfo2KHR
                                                   , PipelineStageFlags2KHR
+                                                  , PipelineStageFlagBits2KHR
                                                   ) where
 
 import Vulkan.CStruct (FromCStruct)
@@ -522,5 +521,7 @@
 instance (Extendss SubmitInfo2KHR es, PeekChain es) => FromCStruct (SubmitInfo2KHR es)
 
 
-data PipelineStageFlags2KHR
+type PipelineStageFlags2KHR = PipelineStageFlagBits2KHR
+
+data PipelineStageFlagBits2KHR
 
diff --git a/src/Vulkan/Extensions/VK_KHR_timeline_semaphore.hs b/src/Vulkan/Extensions/VK_KHR_timeline_semaphore.hs
--- a/src/Vulkan/Extensions/VK_KHR_timeline_semaphore.hs
+++ b/src/Vulkan/Extensions/VK_KHR_timeline_semaphore.hs
@@ -184,9 +184,9 @@
 --
 -- 2) What type of payload the new synchronization primitive has?
 --
--- __RESOLVED__: A 64-bit unsigned integer that can only be set to
--- monotonically increasing values by signal operations and is not changed
--- by wait operations.
+-- __RESOLVED__: A 64-bit unsigned integer that can only be set to strictly
+-- increasing values by signal operations and is not changed by wait
+-- operations.
 --
 -- 3) Does the new synchronization primitive have the same
 -- signal-before-wait requirement as the existing semaphores do?
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
@@ -711,6 +711,16 @@
 --     /must/ contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
 --
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'
+--     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
+--     this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-02691# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
 --     operations as a result of this command, then the image view’s
@@ -863,7 +873,7 @@
 --     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@
 --     as a result of this command, then the @Type@ of the @Texel@ operand
 --     of that instruction /must/ have at least as many components as the
---     image view’s format.
+--     buffer view’s format.
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-SampledType-04470# If a
 --     'Vulkan.Core10.Handles.ImageView' with a
@@ -1109,6 +1119,13 @@
 --     then the @blendEnable@ member of the corresponding element of the
 --     @pAttachments@ member of @pColorBlendState@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-rasterizationSamples-04740# If
+--     rasterization is not disabled in the bound graphics pipeline, and
+--     neither the @@ nor the @@ extensions are enabled, then
+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     /must/ be the same as the current subpass color and\/or
+--     depth\/stencil attachments
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-04007# All vertex input
 --     bindings accessed via vertex input variables declared in the vertex
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
@@ -339,6 +339,16 @@
 --     /must/ contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
 --
+-- -   #VUID-vkCmdDrawMeshTasksNV-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'
+--     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
+--     this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
 -- -   #VUID-vkCmdDrawMeshTasksNV-None-02691# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
 --     operations as a result of this command, then the image view’s
@@ -489,7 +499,7 @@
 --     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@
 --     as a result of this command, then the @Type@ of the @Texel@ operand
 --     of that instruction /must/ have at least as many components as the
---     image view’s format.
+--     buffer view’s format.
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-SampledType-04470# If a
 --     'Vulkan.Core10.Handles.ImageView' with a
@@ -733,6 +743,13 @@
 --     @pAttachments@ member of @pColorBlendState@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
+-- -   #VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-04740# If
+--     rasterization is not disabled in the bound graphics pipeline, and
+--     neither the @@ nor the @@ extensions are enabled, then
+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     /must/ be the same as the current subpass color and\/or
+--     depth\/stencil attachments
+--
 -- -   #VUID-vkCmdDrawMeshTasksNV-taskCount-02119# @taskCount@ /must/ be
 --     less than or equal to
 --     'PhysicalDeviceMeshShaderPropertiesNV'::@maxDrawMeshTasksCount@
@@ -826,6 +843,16 @@
 --     /must/ contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
 --
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'
+--     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
+--     this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-02691# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
 --     operations as a result of this command, then the image view’s
@@ -978,7 +1005,7 @@
 --     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@
 --     as a result of this command, then the @Type@ of the @Texel@ operand
 --     of that instruction /must/ have at least as many components as the
---     image view’s format.
+--     buffer view’s format.
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-SampledType-04470# If a
 --     'Vulkan.Core10.Handles.ImageView' with a
@@ -1225,6 +1252,13 @@
 --     @pAttachments@ member of @pColorBlendState@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-04740# If
+--     rasterization is not disabled in the bound graphics pipeline, and
+--     neither the @@ nor the @@ extensions are enabled, then
+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     /must/ be the same as the current subpass color and\/or
+--     depth\/stencil attachments
+--
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02708# If @buffer@ is
 --     non-sparse then it /must/ be bound completely and contiguously to a
 --     single 'Vulkan.Core10.Handles.DeviceMemory' object
@@ -1362,6 +1396,16 @@
 --     /must/ contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
 --
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'
+--     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
+--     this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02691# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
 --     operations as a result of this command, then the image view’s
@@ -1514,7 +1558,7 @@
 --     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@
 --     as a result of this command, then the @Type@ of the @Texel@ operand
 --     of that instruction /must/ have at least as many components as the
---     image view’s format.
+--     buffer view’s format.
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-SampledType-04470# If a
 --     'Vulkan.Core10.Handles.ImageView' with a
@@ -1760,6 +1804,13 @@
 --     then the @blendEnable@ member of the corresponding element of the
 --     @pAttachments@ member of @pColorBlendState@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-04740#
+--     If rasterization is not disabled in the bound graphics pipeline, and
+--     neither the @@ nor the @@ extensions are enabled, then
+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     /must/ be the same as the current subpass color and\/or
+--     depth\/stencil attachments
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02708# If @buffer@ is
 --     non-sparse then it /must/ be bound completely and contiguously to a
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
@@ -1617,6 +1617,16 @@
 --     /must/ contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
 --
+-- -   #VUID-vkCmdTraceRaysNV-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'
+--     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
+--     this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
 -- -   #VUID-vkCmdTraceRaysNV-None-02691# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
 --     operations as a result of this command, then the image view’s
@@ -1767,7 +1777,7 @@
 --     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@
 --     as a result of this command, then the @Type@ of the @Texel@ operand
 --     of that instruction /must/ have at least as many components as the
---     image view’s format.
+--     buffer view’s format.
 --
 -- -   #VUID-vkCmdTraceRaysNV-SampledType-04470# If a
 --     'Vulkan.Core10.Handles.ImageView' with a
diff --git a/src/Vulkan/Extensions/VK_QNX_screen_surface.hs b/src/Vulkan/Extensions/VK_QNX_screen_surface.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_QNX_screen_surface.hs
@@ -0,0 +1,423 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_QNX_screen_surface - instance extension
+--
+-- == VK_QNX_screen_surface
+--
+-- [__Name String__]
+--     @VK_QNX_screen_surface@
+--
+-- [__Extension Type__]
+--     Instance extension
+--
+-- [__Registered Extension Number__]
+--     379
+--
+-- [__Revision__]
+--     1
+--
+-- [__Extension and Version Dependencies__]
+--
+--     -   Requires Vulkan 1.0
+--
+--     -   Requires @VK_KHR_surface@
+--
+-- [__Contact__]
+--
+--     -   Mike Gorchak
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_QNX_screen_surface:%20&body=@mgorchak-blackberry%20 >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2021-01-11
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Mike Gorchak, BlackBerry Limited
+--
+-- == Description
+--
+-- The @VK_QNX_screen_surface@ extension is an instance extension. It
+-- provides a mechanism to create a 'Vulkan.Extensions.Handles.SurfaceKHR'
+-- object (defined by the @VK_KHR_surface@ extension) that refers to a QNX
+-- Screen @window@, as well as a query to determine support for rendering
+-- to a QNX Screen compositor.
+--
+-- == New Commands
+--
+-- -   'createScreenSurfaceQNX'
+--
+-- -   'getPhysicalDeviceScreenPresentationSupportQNX'
+--
+-- == New Structures
+--
+-- -   'ScreenSurfaceCreateInfoQNX'
+--
+-- == New Bitmasks
+--
+-- -   'ScreenSurfaceCreateFlagsQNX'
+--
+-- == New Enum Constants
+--
+-- -   'QNX_SCREEN_SURFACE_EXTENSION_NAME'
+--
+-- -   'QNX_SCREEN_SURFACE_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX'
+--
+-- == Version History
+--
+-- -   Revision 1, 2021-01-11 (Mike Gorchak)
+--
+--     -   Initial draft.
+--
+-- = See Also
+--
+-- 'ScreenSurfaceCreateFlagsQNX', 'ScreenSurfaceCreateInfoQNX',
+-- 'createScreenSurfaceQNX',
+-- 'getPhysicalDeviceScreenPresentationSupportQNX'
+--
+-- = Document Notes
+--
+-- For more information, see the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QNX_screen_surface Vulkan Specification>
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_QNX_screen_surface  ( createScreenSurfaceQNX
+                                                , getPhysicalDeviceScreenPresentationSupportQNX
+                                                , ScreenSurfaceCreateInfoQNX(..)
+                                                , ScreenSurfaceCreateFlagsQNX(..)
+                                                , QNX_SCREEN_SURFACE_SPEC_VERSION
+                                                , pattern QNX_SCREEN_SURFACE_SPEC_VERSION
+                                                , QNX_SCREEN_SURFACE_EXTENSION_NAME
+                                                , pattern QNX_SCREEN_SURFACE_EXTENSION_NAME
+                                                , Screen_window
+                                                , Screen_context
+                                                , SurfaceKHR(..)
+                                                ) where
+
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Exception.Base (bracket)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Foreign.Marshal.Alloc (allocaBytesAligned)
+import Foreign.Marshal.Alloc (callocBytes)
+import Foreign.Marshal.Alloc (free)
+import GHC.Base (when)
+import GHC.IO (throwIO)
+import GHC.Ptr (nullFunPtr)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import GHC.Show (showString)
+import Numeric (showHex)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+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 Control.Monad.IO.Class (MonadIO)
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+import Data.String (IsString)
+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 GHC.IO.Exception (IOErrorType(..))
+import GHC.IO.Exception (IOException(..))
+import Foreign.Ptr (FunPtr)
+import Foreign.Ptr (Ptr)
+import GHC.Read (Read(readPrec))
+import GHC.Show (Show(showsPrec))
+import Data.Word (Word32)
+import Data.Kind (Type)
+import Control.Monad.Trans.Cont (ContT(..))
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32(..))
+import Vulkan.Core10.FundamentalTypes (Flags)
+import Vulkan.Core10.Handles (Instance)
+import Vulkan.Core10.Handles (Instance(..))
+import Vulkan.Dynamic (InstanceCmds(pVkCreateScreenSurfaceQNX))
+import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceScreenPresentationSupportQNX))
+import Vulkan.Core10.Handles (Instance_T)
+import Vulkan.Core10.Handles (PhysicalDevice)
+import Vulkan.Core10.Handles (PhysicalDevice(..))
+import Vulkan.Core10.Handles (PhysicalDevice_T)
+import Vulkan.Core10.Enums.Result (Result)
+import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Extensions.Handles (SurfaceKHR)
+import Vulkan.Extensions.Handles (SurfaceKHR(..))
+import Vulkan.Exception (VulkanException(..))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Extensions.Handles (SurfaceKHR(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateScreenSurfaceQNX
+  :: FunPtr (Ptr Instance_T -> Ptr ScreenSurfaceCreateInfoQNX -> Ptr AllocationCallbacks -> Ptr SurfaceKHR -> IO Result) -> Ptr Instance_T -> Ptr ScreenSurfaceCreateInfoQNX -> Ptr AllocationCallbacks -> Ptr SurfaceKHR -> IO Result
+
+-- | vkCreateScreenSurfaceQNX - Create a
+-- 'Vulkan.Extensions.Handles.SurfaceKHR' object for a QNX Screen window
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCreateScreenSurfaceQNX-instance-parameter# @instance@ /must/
+--     be a valid 'Vulkan.Core10.Handles.Instance' handle
+--
+-- -   #VUID-vkCreateScreenSurfaceQNX-pCreateInfo-parameter# @pCreateInfo@
+--     /must/ be a valid pointer to a valid 'ScreenSurfaceCreateInfoQNX'
+--     structure
+--
+-- -   #VUID-vkCreateScreenSurfaceQNX-pAllocator-parameter# If @pAllocator@
+--     is not @NULL@, @pAllocator@ /must/ be a valid pointer to a valid
+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure
+--
+-- -   #VUID-vkCreateScreenSurfaceQNX-pSurface-parameter# @pSurface@ /must/
+--     be a valid pointer to a 'Vulkan.Extensions.Handles.SurfaceKHR'
+--     handle
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Instance', 'ScreenSurfaceCreateInfoQNX',
+-- 'Vulkan.Extensions.Handles.SurfaceKHR'
+createScreenSurfaceQNX :: forall io
+                        . (MonadIO io)
+                       => -- | @instance@ is the instance to associate the surface with.
+                          Instance
+                       -> -- | @pCreateInfo@ is a pointer to a 'ScreenSurfaceCreateInfoQNX' structure
+                          -- containing parameters affecting the creation of the surface object.
+                          ScreenSurfaceCreateInfoQNX
+                       -> -- | @pAllocator@ is the allocator used for host memory allocated for the
+                          -- surface object when there is no more specific allocator available (see
+                          -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                          ("allocator" ::: Maybe AllocationCallbacks)
+                       -> io (SurfaceKHR)
+createScreenSurfaceQNX instance' createInfo allocator = liftIO . evalContT $ do
+  let vkCreateScreenSurfaceQNXPtr = pVkCreateScreenSurfaceQNX (instanceCmds (instance' :: Instance))
+  lift $ unless (vkCreateScreenSurfaceQNXPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateScreenSurfaceQNX is null" Nothing Nothing
+  let vkCreateScreenSurfaceQNX' = mkVkCreateScreenSurfaceQNX vkCreateScreenSurfaceQNXPtr
+  pCreateInfo <- ContT $ withCStruct (createInfo)
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  pPSurface <- ContT $ bracket (callocBytes @SurfaceKHR 8) free
+  r <- lift $ traceAroundEvent "vkCreateScreenSurfaceQNX" (vkCreateScreenSurfaceQNX' (instanceHandle (instance')) pCreateInfo pAllocator (pPSurface))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pSurface <- lift $ peek @SurfaceKHR pPSurface
+  pure $ (pSurface)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceScreenPresentationSupportQNX
+  :: FunPtr (Ptr PhysicalDevice_T -> Word32 -> Ptr Screen_window -> IO Bool32) -> Ptr PhysicalDevice_T -> Word32 -> Ptr Screen_window -> IO Bool32
+
+-- | vkGetPhysicalDeviceScreenPresentationSupportQNX - Query physical device
+-- for presentation to QNX Screen
+--
+-- = Description
+--
+-- This platform-specific function /can/ be called prior to creating a
+-- surface.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.Handles.PhysicalDevice'
+getPhysicalDeviceScreenPresentationSupportQNX :: forall io
+                                               . (MonadIO io)
+                                              => -- | @physicalDevice@ is the physical device.
+                                                 --
+                                                 -- #VUID-vkGetPhysicalDeviceScreenPresentationSupportQNX-physicalDevice-parameter#
+                                                 -- @physicalDevice@ /must/ be a valid
+                                                 -- 'Vulkan.Core10.Handles.PhysicalDevice' handle
+                                                 PhysicalDevice
+                                              -> -- | @queueFamilyIndex@ is the queue family index.
+                                                 --
+                                                 -- #VUID-vkGetPhysicalDeviceScreenPresentationSupportQNX-queueFamilyIndex-04743#
+                                                 -- @queueFamilyIndex@ /must/ be less than @pQueueFamilyPropertyCount@
+                                                 -- returned by
+                                                 -- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceQueueFamilyProperties'
+                                                 -- for the given @physicalDevice@
+                                                 ("queueFamilyIndex" ::: Word32)
+                                              -> -- | @window@ is the QNX Screen @window@ object.
+                                                 --
+                                                 -- #VUID-vkGetPhysicalDeviceScreenPresentationSupportQNX-window-parameter#
+                                                 -- @window@ /must/ be a valid pointer to a 'Screen_window' value
+                                                 (Ptr Screen_window)
+                                              -> io (Bool)
+getPhysicalDeviceScreenPresentationSupportQNX physicalDevice queueFamilyIndex window = liftIO $ do
+  let vkGetPhysicalDeviceScreenPresentationSupportQNXPtr = pVkGetPhysicalDeviceScreenPresentationSupportQNX (instanceCmds (physicalDevice :: PhysicalDevice))
+  unless (vkGetPhysicalDeviceScreenPresentationSupportQNXPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPhysicalDeviceScreenPresentationSupportQNX is null" Nothing Nothing
+  let vkGetPhysicalDeviceScreenPresentationSupportQNX' = mkVkGetPhysicalDeviceScreenPresentationSupportQNX vkGetPhysicalDeviceScreenPresentationSupportQNXPtr
+  r <- traceAroundEvent "vkGetPhysicalDeviceScreenPresentationSupportQNX" (vkGetPhysicalDeviceScreenPresentationSupportQNX' (physicalDeviceHandle (physicalDevice)) (queueFamilyIndex) (window))
+  pure $ ((bool32ToBool r))
+
+
+-- | VkScreenSurfaceCreateInfoQNX - Structure specifying parameters of a
+-- newly created QNX Screen surface object
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- 'ScreenSurfaceCreateFlagsQNX',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'createScreenSurfaceQNX'
+data ScreenSurfaceCreateInfoQNX = ScreenSurfaceCreateInfoQNX
+  { -- | @flags@ is reserved for future use.
+    --
+    -- #VUID-VkScreenSurfaceCreateInfoQNX-flags-zerobitmask# @flags@ /must/ be
+    -- @0@
+    flags :: ScreenSurfaceCreateFlagsQNX
+  , -- | @context@ and @window@ are QNX Screen @context@ and @window@ to
+    -- associate the surface with.
+    --
+    -- #VUID-VkScreenSurfaceCreateInfoQNX-context-04741# @context@ /must/ point
+    -- to a valid QNX Screen @struct@ _screen_context
+    context :: Ptr Screen_context
+  , -- | #VUID-VkScreenSurfaceCreateInfoQNX-window-04742# @window@ /must/ point
+    -- to a valid QNX Screen @struct@ _screen_window
+    window :: Ptr Screen_window
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ScreenSurfaceCreateInfoQNX)
+#endif
+deriving instance Show ScreenSurfaceCreateInfoQNX
+
+instance ToCStruct ScreenSurfaceCreateInfoQNX where
+  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ScreenSurfaceCreateInfoQNX{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr ScreenSurfaceCreateFlagsQNX)) (flags)
+    poke ((p `plusPtr` 24 :: Ptr (Ptr Screen_context))) (context)
+    poke ((p `plusPtr` 32 :: Ptr (Ptr Screen_window))) (window)
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 24 :: Ptr (Ptr Screen_context))) (zero)
+    poke ((p `plusPtr` 32 :: Ptr (Ptr Screen_window))) (zero)
+    f
+
+instance FromCStruct ScreenSurfaceCreateInfoQNX where
+  peekCStruct p = do
+    flags <- peek @ScreenSurfaceCreateFlagsQNX ((p `plusPtr` 16 :: Ptr ScreenSurfaceCreateFlagsQNX))
+    context <- peek @(Ptr Screen_context) ((p `plusPtr` 24 :: Ptr (Ptr Screen_context)))
+    window <- peek @(Ptr Screen_window) ((p `plusPtr` 32 :: Ptr (Ptr Screen_window)))
+    pure $ ScreenSurfaceCreateInfoQNX
+             flags context window
+
+instance Storable ScreenSurfaceCreateInfoQNX where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ScreenSurfaceCreateInfoQNX where
+  zero = ScreenSurfaceCreateInfoQNX
+           zero
+           zero
+           zero
+
+
+-- | VkScreenSurfaceCreateFlagsQNX - Reserved for future use
+--
+-- = Description
+--
+-- 'ScreenSurfaceCreateFlagsQNX' is a bitmask type for setting a mask, but
+-- is currently reserved for future use.
+--
+-- = See Also
+--
+-- 'ScreenSurfaceCreateInfoQNX'
+newtype ScreenSurfaceCreateFlagsQNX = ScreenSurfaceCreateFlagsQNX Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+
+
+conNameScreenSurfaceCreateFlagsQNX :: String
+conNameScreenSurfaceCreateFlagsQNX = "ScreenSurfaceCreateFlagsQNX"
+
+enumPrefixScreenSurfaceCreateFlagsQNX :: String
+enumPrefixScreenSurfaceCreateFlagsQNX = ""
+
+showTableScreenSurfaceCreateFlagsQNX :: [(ScreenSurfaceCreateFlagsQNX, String)]
+showTableScreenSurfaceCreateFlagsQNX = []
+
+instance Show ScreenSurfaceCreateFlagsQNX where
+  showsPrec = enumShowsPrec enumPrefixScreenSurfaceCreateFlagsQNX
+                            showTableScreenSurfaceCreateFlagsQNX
+                            conNameScreenSurfaceCreateFlagsQNX
+                            (\(ScreenSurfaceCreateFlagsQNX x) -> x)
+                            (\x -> showString "0x" . showHex x)
+
+instance Read ScreenSurfaceCreateFlagsQNX where
+  readPrec = enumReadPrec enumPrefixScreenSurfaceCreateFlagsQNX
+                          showTableScreenSurfaceCreateFlagsQNX
+                          conNameScreenSurfaceCreateFlagsQNX
+                          ScreenSurfaceCreateFlagsQNX
+
+
+type QNX_SCREEN_SURFACE_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_QNX_SCREEN_SURFACE_SPEC_VERSION"
+pattern QNX_SCREEN_SURFACE_SPEC_VERSION :: forall a . Integral a => a
+pattern QNX_SCREEN_SURFACE_SPEC_VERSION = 1
+
+
+type QNX_SCREEN_SURFACE_EXTENSION_NAME = "VK_QNX_screen_surface"
+
+-- No documentation found for TopLevel "VK_QNX_SCREEN_SURFACE_EXTENSION_NAME"
+pattern QNX_SCREEN_SURFACE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern QNX_SCREEN_SURFACE_EXTENSION_NAME = "VK_QNX_screen_surface"
+
+
+data Screen_window
+
+
+data Screen_context
+
diff --git a/src/Vulkan/Extensions/VK_QNX_screen_surface.hs-boot b/src/Vulkan/Extensions/VK_QNX_screen_surface.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_QNX_screen_surface.hs-boot
@@ -0,0 +1,111 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_QNX_screen_surface - instance extension
+--
+-- == VK_QNX_screen_surface
+--
+-- [__Name String__]
+--     @VK_QNX_screen_surface@
+--
+-- [__Extension Type__]
+--     Instance extension
+--
+-- [__Registered Extension Number__]
+--     379
+--
+-- [__Revision__]
+--     1
+--
+-- [__Extension and Version Dependencies__]
+--
+--     -   Requires Vulkan 1.0
+--
+--     -   Requires @VK_KHR_surface@
+--
+-- [__Contact__]
+--
+--     -   Mike Gorchak
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_QNX_screen_surface:%20&body=@mgorchak-blackberry%20 >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2021-01-11
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Mike Gorchak, BlackBerry Limited
+--
+-- == Description
+--
+-- The @VK_QNX_screen_surface@ extension is an instance extension. It
+-- provides a mechanism to create a 'Vulkan.Extensions.Handles.SurfaceKHR'
+-- object (defined by the @VK_KHR_surface@ extension) that refers to a QNX
+-- Screen @window@, as well as a query to determine support for rendering
+-- to a QNX Screen compositor.
+--
+-- == New Commands
+--
+-- -   'createScreenSurfaceQNX'
+--
+-- -   'getPhysicalDeviceScreenPresentationSupportQNX'
+--
+-- == New Structures
+--
+-- -   'ScreenSurfaceCreateInfoQNX'
+--
+-- == New Bitmasks
+--
+-- -   'ScreenSurfaceCreateFlagsQNX'
+--
+-- == New Enum Constants
+--
+-- -   'QNX_SCREEN_SURFACE_EXTENSION_NAME'
+--
+-- -   'QNX_SCREEN_SURFACE_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX'
+--
+-- == Version History
+--
+-- -   Revision 1, 2021-01-11 (Mike Gorchak)
+--
+--     -   Initial draft.
+--
+-- = See Also
+--
+-- 'ScreenSurfaceCreateFlagsQNX', 'ScreenSurfaceCreateInfoQNX',
+-- 'createScreenSurfaceQNX',
+-- 'getPhysicalDeviceScreenPresentationSupportQNX'
+--
+-- = Document Notes
+--
+-- For more information, see the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QNX_screen_surface Vulkan Specification>
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_QNX_screen_surface  ( ScreenSurfaceCreateInfoQNX
+                                                , Screen_window
+                                                ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data ScreenSurfaceCreateInfoQNX
+
+instance ToCStruct ScreenSurfaceCreateInfoQNX
+instance Show ScreenSurfaceCreateInfoQNX
+
+instance FromCStruct ScreenSurfaceCreateInfoQNX
+
+
+data Screen_window
+
diff --git a/src/Vulkan/SPIRVRequirements.hs b/src/Vulkan/SPIRVRequirements.hs
--- a/src/Vulkan/SPIRVRequirements.hs
+++ b/src/Vulkan/SPIRVRequirements.hs
@@ -14,6 +14,8 @@
 import Data.ByteString (ByteString)
 import Vulkan.Core10.Handles (Instance)
 import Vulkan.Core10.Handles (PhysicalDevice)
+import Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage (PhysicalDevice16BitStorageFeatures)
+import Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage (PhysicalDevice16BitStorageFeatures(..))
 import Vulkan.Extensions.VK_EXT_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeaturesEXT)
 import Vulkan.Extensions.VK_EXT_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeaturesEXT(..))
 import Vulkan.Extensions.VK_NV_compute_shader_derivatives (PhysicalDeviceComputeShaderDerivativesFeaturesNV)
@@ -30,6 +32,8 @@
 import Vulkan.Extensions.VK_EXT_fragment_shader_interlock (PhysicalDeviceFragmentShaderInterlockFeaturesEXT(..))
 import Vulkan.Extensions.VK_KHR_fragment_shading_rate (PhysicalDeviceFragmentShadingRateFeaturesKHR)
 import Vulkan.Extensions.VK_KHR_fragment_shading_rate (PhysicalDeviceFragmentShadingRateFeaturesKHR(..))
+import Vulkan.Core11.Promoted_From_VK_KHR_multiview (PhysicalDeviceMultiviewFeatures)
+import Vulkan.Core11.Promoted_From_VK_KHR_multiview (PhysicalDeviceMultiviewFeatures(..))
 import Vulkan.Extensions.VK_KHR_ray_query (PhysicalDeviceRayQueryFeaturesKHR)
 import Vulkan.Extensions.VK_KHR_ray_query (PhysicalDeviceRayQueryFeaturesKHR(..))
 import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (PhysicalDeviceRayTracingPipelineFeaturesKHR)
@@ -38,6 +42,8 @@
 import Vulkan.Extensions.VK_EXT_shader_atomic_float (PhysicalDeviceShaderAtomicFloatFeaturesEXT(..))
 import Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation (PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT)
 import Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation (PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT(..))
+import Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters (PhysicalDeviceShaderDrawParametersFeatures)
+import Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters (PhysicalDeviceShaderDrawParametersFeatures(..))
 import Vulkan.Extensions.VK_EXT_shader_image_atomic_int64 (PhysicalDeviceShaderImageAtomicInt64FeaturesEXT)
 import Vulkan.Extensions.VK_EXT_shader_image_atomic_int64 (PhysicalDeviceShaderImageAtomicInt64FeaturesEXT(..))
 import Vulkan.Extensions.VK_NV_shader_image_footprint (PhysicalDeviceShaderImageFootprintFeaturesNV)
@@ -50,6 +56,8 @@
 import Vulkan.Extensions.VK_NV_shading_rate_image (PhysicalDeviceShadingRateImageFeaturesNV(..))
 import Vulkan.Extensions.VK_EXT_transform_feedback (PhysicalDeviceTransformFeedbackFeaturesEXT)
 import Vulkan.Extensions.VK_EXT_transform_feedback (PhysicalDeviceTransformFeedbackFeaturesEXT(..))
+import Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers (PhysicalDeviceVariablePointersFeatures)
+import Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers (PhysicalDeviceVariablePointersFeatures(..))
 import Vulkan.Core12 (PhysicalDeviceVulkan11Features)
 import Vulkan.Core12 (PhysicalDeviceVulkan11Features(..))
 import Vulkan.Core12 (PhysicalDeviceVulkan11Properties)
@@ -616,6 +624,17 @@
                              , deviceExtensionMinVersion = 0
                              }
     ]
+  "SPV_EXT_shader_atomic_float_add" -> (,)
+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing
+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
+                               , instanceExtensionMinVersion = 0
+                               }
+    ]
+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing
+                             , deviceExtensionName       = EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME
+                             , deviceExtensionMinVersion = 0
+                             }
+    ]
   _ -> ([], [])
 
 spirvCapabilityRequirements :: ByteString -> ([InstanceRequirement], [DeviceRequirement])
@@ -881,73 +900,38 @@
                            }
     ]
   "DrawParameters" -> (,)
-    [RequireInstanceVersion $ MAKE_VERSION 1 1 0]
+    [RequireInstanceVersion $ MAKE_VERSION 1 2 0]
     [ RequireDeviceFeature { featureName   = "shaderDrawParameters"
                            , checkFeature  = shaderDrawParameters :: PhysicalDeviceVulkan11Features -> Bool
                            , enableFeature = \f -> f { shaderDrawParameters = True } :: PhysicalDeviceVulkan11Features
                            }
-    , RequireDeviceVersion $ MAKE_VERSION 1 1 0
+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
     ]
   "MultiView" -> (,)
-    [ RequireInstanceVersion $ MAKE_VERSION 1 1 0
-    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
-                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
-                               , instanceExtensionMinVersion = 0
-                               }
-    ]
+    [RequireInstanceVersion $ MAKE_VERSION 1 2 0]
     [ RequireDeviceFeature { featureName   = "multiview"
                            , checkFeature  = multiview :: PhysicalDeviceVulkan11Features -> Bool
                            , enableFeature = \f -> f { multiview = True } :: PhysicalDeviceVulkan11Features
                            }
-    , RequireDeviceVersion $ MAKE_VERSION 1 1 0
-    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
-                             , deviceExtensionName       = KHR_MULTIVIEW_EXTENSION_NAME
-                             , deviceExtensionMinVersion = 0
-                             }
+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
     ]
   "DeviceGroup" -> (,) [RequireInstanceVersion $ MAKE_VERSION 1 1 0] [RequireDeviceVersion $ MAKE_VERSION 1 1 0]
   "VariablePointersStorageBuffer" -> (,)
-    [ RequireInstanceVersion $ MAKE_VERSION 1 1 0
-    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
-                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
-                               , instanceExtensionMinVersion = 0
-                               }
-    ]
+    [RequireInstanceVersion $ MAKE_VERSION 1 2 0]
     [ RequireDeviceFeature
       { featureName   = "variablePointersStorageBuffer"
       , checkFeature  = variablePointersStorageBuffer :: PhysicalDeviceVulkan11Features -> Bool
       , enableFeature = \f -> f { variablePointersStorageBuffer = True } :: PhysicalDeviceVulkan11Features
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 1 0
-    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
-                             , deviceExtensionName       = KHR_VARIABLE_POINTERS_EXTENSION_NAME
-                             , deviceExtensionMinVersion = 0
-                             }
-    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
-                             , deviceExtensionName       = KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME
-                             , deviceExtensionMinVersion = 0
-                             }
+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
     ]
   "VariablePointers" -> (,)
-    [ RequireInstanceVersion $ MAKE_VERSION 1 1 0
-    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
-                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
-                               , instanceExtensionMinVersion = 0
-                               }
-    ]
+    [RequireInstanceVersion $ MAKE_VERSION 1 2 0]
     [ RequireDeviceFeature { featureName   = "variablePointers"
                            , checkFeature  = variablePointers :: PhysicalDeviceVulkan11Features -> Bool
                            , enableFeature = \f -> f { variablePointers = True } :: PhysicalDeviceVulkan11Features
                            }
-    , RequireDeviceVersion $ MAKE_VERSION 1 1 0
-    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
-                             , deviceExtensionName       = KHR_VARIABLE_POINTERS_EXTENSION_NAME
-                             , deviceExtensionMinVersion = 0
-                             }
-    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
-                             , deviceExtensionName       = KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME
-                             , deviceExtensionMinVersion = 0
-                             }
+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
     ]
   "ShaderClockKHR" -> (,)
     [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing
@@ -1074,90 +1058,38 @@
                              }
     ]
   "StorageBuffer16BitAccess" -> (,)
-    [ RequireInstanceVersion $ MAKE_VERSION 1 1 0
-    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
-                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
-                               , instanceExtensionMinVersion = 0
-                               }
-    ]
+    [RequireInstanceVersion $ MAKE_VERSION 1 2 0]
     [ RequireDeviceFeature
       { featureName   = "storageBuffer16BitAccess"
       , checkFeature  = storageBuffer16BitAccess :: PhysicalDeviceVulkan11Features -> Bool
       , enableFeature = \f -> f { storageBuffer16BitAccess = True } :: PhysicalDeviceVulkan11Features
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 1 0
-    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
-                             , deviceExtensionName       = KHR_16BIT_STORAGE_EXTENSION_NAME
-                             , deviceExtensionMinVersion = 0
-                             }
-    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
-                             , deviceExtensionName       = KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME
-                             , deviceExtensionMinVersion = 0
-                             }
+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
     ]
   "UniformAndStorageBuffer16BitAccess" -> (,)
-    [ RequireInstanceVersion $ MAKE_VERSION 1 1 0
-    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
-                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
-                               , instanceExtensionMinVersion = 0
-                               }
-    ]
+    [RequireInstanceVersion $ MAKE_VERSION 1 2 0]
     [ RequireDeviceFeature
       { featureName   = "uniformAndStorageBuffer16BitAccess"
       , checkFeature  = uniformAndStorageBuffer16BitAccess :: PhysicalDeviceVulkan11Features -> Bool
       , enableFeature = \f -> f { uniformAndStorageBuffer16BitAccess = True } :: PhysicalDeviceVulkan11Features
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 1 0
-    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
-                             , deviceExtensionName       = KHR_16BIT_STORAGE_EXTENSION_NAME
-                             , deviceExtensionMinVersion = 0
-                             }
-    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
-                             , deviceExtensionName       = KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME
-                             , deviceExtensionMinVersion = 0
-                             }
+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
     ]
   "StoragePushConstant16" -> (,)
-    [ RequireInstanceVersion $ MAKE_VERSION 1 1 0
-    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
-                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
-                               , instanceExtensionMinVersion = 0
-                               }
-    ]
+    [RequireInstanceVersion $ MAKE_VERSION 1 2 0]
     [ RequireDeviceFeature { featureName   = "storagePushConstant16"
                            , checkFeature  = storagePushConstant16 :: PhysicalDeviceVulkan11Features -> Bool
                            , enableFeature = \f -> f { storagePushConstant16 = True } :: PhysicalDeviceVulkan11Features
                            }
-    , RequireDeviceVersion $ MAKE_VERSION 1 1 0
-    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
-                             , deviceExtensionName       = KHR_16BIT_STORAGE_EXTENSION_NAME
-                             , deviceExtensionMinVersion = 0
-                             }
-    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
-                             , deviceExtensionName       = KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME
-                             , deviceExtensionMinVersion = 0
-                             }
+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
     ]
   "StorageInputOutput16" -> (,)
-    [ RequireInstanceVersion $ MAKE_VERSION 1 1 0
-    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
-                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
-                               , instanceExtensionMinVersion = 0
-                               }
-    ]
+    [RequireInstanceVersion $ MAKE_VERSION 1 2 0]
     [ RequireDeviceFeature { featureName   = "storageInputOutput16"
                            , checkFeature  = storageInputOutput16 :: PhysicalDeviceVulkan11Features -> Bool
                            , enableFeature = \f -> f { storageInputOutput16 = True } :: PhysicalDeviceVulkan11Features
                            }
-    , RequireDeviceVersion $ MAKE_VERSION 1 1 0
-    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
-                             , deviceExtensionName       = KHR_16BIT_STORAGE_EXTENSION_NAME
-                             , deviceExtensionMinVersion = 0
-                             }
-    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
-                             , deviceExtensionName       = KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME
-                             , deviceExtensionMinVersion = 0
-                             }
+    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
     ]
   "GroupNonUniform" -> (,)
     [RequireInstanceVersion $ MAKE_VERSION 1 1 0]
diff --git a/src/Vulkan/Version.hs b/src/Vulkan/Version.hs
--- a/src/Vulkan/Version.hs
+++ b/src/Vulkan/Version.hs
@@ -15,11 +15,11 @@
 import Data.Word (Word32)
 
 pattern HEADER_VERSION :: Word32
-pattern HEADER_VERSION = 170
+pattern HEADER_VERSION = 174
 
 
 pattern HEADER_VERSION_COMPLETE :: Word32
-pattern HEADER_VERSION_COMPLETE = MAKE_VERSION 1 2 170
+pattern HEADER_VERSION_COMPLETE = MAKE_VERSION 1 2 174
 
 
 pattern MAKE_VERSION :: Word32 -> Word32 -> Word32 -> Word32
diff --git a/vulkan.cabal b/vulkan.cabal
--- a/vulkan.cabal
+++ b/vulkan.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           vulkan
-version:        3.10
+version:        3.10.1
 synopsis:       Bindings to the Vulkan graphics API.
 category:       Graphics
 homepage:       https://github.com/expipiplus1/vulkan#readme
@@ -345,6 +345,8 @@
       Vulkan.Extensions.VK_EXT_validation_flags
       Vulkan.Extensions.VK_EXT_vertex_attribute_divisor
       Vulkan.Extensions.VK_EXT_ycbcr_image_arrays
+      Vulkan.Extensions.VK_FUCHSIA_external_memory
+      Vulkan.Extensions.VK_FUCHSIA_external_semaphore
       Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface
       Vulkan.Extensions.VK_GGP_frame_token
       Vulkan.Extensions.VK_GGP_stream_descriptor_surface
@@ -478,6 +480,7 @@
       Vulkan.Extensions.VK_QCOM_render_pass_store_ops
       Vulkan.Extensions.VK_QCOM_render_pass_transform
       Vulkan.Extensions.VK_QCOM_rotated_copy_commands
+      Vulkan.Extensions.VK_QNX_screen_surface
       Vulkan.Extensions.VK_VALVE_mutable_descriptor_type
       Vulkan.NamedType
       Vulkan.SPIRVRequirements
