diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -2,6 +2,9 @@
 
 ## WIP
 
+## [3.23.3] - 2022-12-27
+- Bump API version to v1.3.233
+
 ## [3.23.2] - 2022-12-27
 - Bump API version to v1.3.232
 
diff --git a/package.yaml b/package.yaml
--- a/package.yaml
+++ b/package.yaml
@@ -1,5 +1,5 @@
 name: vulkan
-version: "3.23.2"
+version: "3.23.3"
 synopsis: Bindings to the Vulkan graphics API.
 description: Please see [the readme](https://github.com/expipiplus1/vulkan/#readme)
 category: Graphics
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
@@ -150,7 +150,9 @@
 import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (CopyDescriptorSet)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (CopyImageInfo2)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (CopyImageToBufferInfo2)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_copy_memory_indirect (CopyMemoryIndirectCommandNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (CopyMemoryToAccelerationStructureInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_copy_memory_indirect (CopyMemoryToImageIndirectCommandNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (CopyMemoryToMicromapInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (CopyMicromapInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_opacity_micromap (CopyMicromapToMemoryInfoEXT)
@@ -167,6 +169,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsMessengerCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsObjectNameInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsObjectTagInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_memory_decompression (DecompressMemoryRegionNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_dedicated_allocation (DedicatedAllocationBufferCreateInfoNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_dedicated_allocation (DedicatedAllocationImageCreateInfoNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_dedicated_allocation (DedicatedAllocationMemoryAllocateInfoNV)
@@ -428,6 +431,8 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conservative_rasterization (PhysicalDeviceConservativeRasterizationPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_matrix (PhysicalDeviceCooperativeMatrixFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_matrix (PhysicalDeviceCooperativeMatrixPropertiesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_copy_memory_indirect (PhysicalDeviceCopyMemoryIndirectFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_copy_memory_indirect (PhysicalDeviceCopyMemoryIndirectPropertiesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_corner_sampled_image (PhysicalDeviceCornerSampledImageFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_coverage_reduction_mode (PhysicalDeviceCoverageReductionModeFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_custom_border_color (PhysicalDeviceCustomBorderColorFeaturesEXT)
@@ -508,6 +513,8 @@
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_maintenance4 (PhysicalDeviceMaintenance4Features)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_maintenance4 (PhysicalDeviceMaintenance4Properties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_memory_budget (PhysicalDeviceMemoryBudgetPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_memory_decompression (PhysicalDeviceMemoryDecompressionFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_memory_decompression (PhysicalDeviceMemoryDecompressionPropertiesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_memory_priority (PhysicalDeviceMemoryPriorityFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (PhysicalDeviceMemoryProperties)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceMemoryProperties2)
@@ -556,6 +563,8 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_rgba10x6_formats (PhysicalDeviceRGBA10X6FormatsFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_rasterization_order_attachment_access (PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_query (PhysicalDeviceRayQueryFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder (PhysicalDeviceRayTracingInvocationReorderFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder (PhysicalDeviceRayTracingInvocationReorderPropertiesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1 (PhysicalDeviceRayTracingMaintenance1FeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (PhysicalDeviceRayTracingMotionBlurFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (PhysicalDeviceRayTracingPipelineFeaturesKHR)
@@ -1019,6 +1028,8 @@
   Extends DeviceCreateInfo PhysicalDeviceComputeShaderDerivativesFeaturesNV = ()
   Extends DeviceCreateInfo PhysicalDeviceShaderImageFootprintFeaturesNV = ()
   Extends DeviceCreateInfo PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceCopyMemoryIndirectFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceMemoryDecompressionFeaturesNV = ()
   Extends DeviceCreateInfo PhysicalDeviceShadingRateImageFeaturesNV = ()
   Extends DeviceCreateInfo PhysicalDeviceInvocationMaskFeaturesHUAWEI = ()
   Extends DeviceCreateInfo PhysicalDeviceMeshShaderFeaturesNV = ()
@@ -1123,6 +1134,7 @@
   Extends DeviceCreateInfo PhysicalDeviceOpticalFlowFeaturesNV = ()
   Extends DeviceCreateInfo PhysicalDeviceFaultFeaturesEXT = ()
   Extends DeviceCreateInfo PhysicalDeviceShaderCoreBuiltinsFeaturesARM = ()
+  Extends DeviceCreateInfo PhysicalDeviceRayTracingInvocationReorderFeaturesNV = ()
   Extends DeviceQueueCreateInfo DeviceQueueGlobalPriorityCreateInfoKHR = ()
   Extends EventCreateInfo ExportMetalObjectCreateInfoEXT = ()
   Extends EventCreateInfo ImportMetalSharedEventInfoEXT = ()
@@ -1245,6 +1257,8 @@
   Extends PhysicalDeviceFeatures2 PhysicalDeviceComputeShaderDerivativesFeaturesNV = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderImageFootprintFeaturesNV = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceCopyMemoryIndirectFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceMemoryDecompressionFeaturesNV = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceShadingRateImageFeaturesNV = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceInvocationMaskFeaturesHUAWEI = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceMeshShaderFeaturesNV = ()
@@ -1347,6 +1361,7 @@
   Extends PhysicalDeviceFeatures2 PhysicalDeviceOpticalFlowFeaturesNV = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceFaultFeaturesEXT = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderCoreBuiltinsFeaturesARM = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceRayTracingInvocationReorderFeaturesNV = ()
   Extends PhysicalDeviceImageFormatInfo2 PhysicalDeviceExternalImageFormatInfo = ()
   Extends PhysicalDeviceImageFormatInfo2 ImageFormatListCreateInfo = ()
   Extends PhysicalDeviceImageFormatInfo2 PhysicalDeviceImageDrmFormatModifierInfoEXT = ()
@@ -1383,6 +1398,8 @@
   Extends PhysicalDeviceProperties2 PhysicalDevicePCIBusInfoPropertiesEXT = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceDepthStencilResolveProperties = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceTransformFeedbackPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceCopyMemoryIndirectPropertiesNV = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceMemoryDecompressionPropertiesNV = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceShadingRateImagePropertiesNV = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceMeshShaderPropertiesNV = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceMeshShaderPropertiesEXT = ()
@@ -1419,6 +1436,7 @@
   Extends PhysicalDeviceProperties2 PhysicalDeviceImageProcessingPropertiesQCOM = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceOpticalFlowPropertiesNV = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceShaderCoreBuiltinsPropertiesARM = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceRayTracingInvocationReorderPropertiesNV = ()
   Extends PhysicalDeviceSurfaceInfo2KHR SurfaceFullScreenExclusiveInfoEXT = ()
   Extends PhysicalDeviceSurfaceInfo2KHR SurfaceFullScreenExclusiveWin32InfoEXT = ()
   Extends PipelineColorBlendStateCreateInfo PipelineColorBlendAdvancedStateCreateInfoEXT = ()
@@ -1790,6 +1808,10 @@
   STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV -> go @PhysicalDeviceComputeShaderDerivativesFeaturesNV
   STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV -> go @PhysicalDeviceShaderImageFootprintFeaturesNV
   STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV -> go @PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV -> go @PhysicalDeviceCopyMemoryIndirectFeaturesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV -> go @PhysicalDeviceCopyMemoryIndirectPropertiesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV -> go @PhysicalDeviceMemoryDecompressionFeaturesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV -> go @PhysicalDeviceMemoryDecompressionPropertiesNV
   STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV -> go @PipelineViewportShadingRateImageStateCreateInfoNV
   STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV -> go @PhysicalDeviceShadingRateImageFeaturesNV
   STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV -> go @PhysicalDeviceShadingRateImagePropertiesNV
@@ -2027,6 +2049,8 @@
   STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT -> go @PhysicalDeviceFaultFeaturesEXT
   STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM -> go @PhysicalDeviceShaderCoreBuiltinsPropertiesARM
   STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM -> go @PhysicalDeviceShaderCoreBuiltinsFeaturesARM
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV -> go @PhysicalDeviceRayTracingInvocationReorderFeaturesNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV -> go @PhysicalDeviceRayTracingInvocationReorderPropertiesNV
   t -> throwIO $ IOError Nothing InvalidArgument "peekChainHead" ("Unrecognized struct type: " <> show t) Nothing Nothing
  where
   go :: forall e . (Typeable e, FromCStruct e, ToCStruct e, Show e) => IO b
@@ -2245,6 +2269,10 @@
 {-# complete (::&) :: PhysicalDeviceComputeShaderDerivativesFeaturesNV #-}
 {-# complete (::&) :: PhysicalDeviceShaderImageFootprintFeaturesNV #-}
 {-# complete (::&) :: PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV #-}
+{-# complete (::&) :: PhysicalDeviceCopyMemoryIndirectFeaturesNV #-}
+{-# complete (::&) :: PhysicalDeviceCopyMemoryIndirectPropertiesNV #-}
+{-# complete (::&) :: PhysicalDeviceMemoryDecompressionFeaturesNV #-}
+{-# complete (::&) :: PhysicalDeviceMemoryDecompressionPropertiesNV #-}
 {-# complete (::&) :: PipelineViewportShadingRateImageStateCreateInfoNV #-}
 {-# complete (::&) :: PhysicalDeviceShadingRateImageFeaturesNV #-}
 {-# complete (::&) :: PhysicalDeviceShadingRateImagePropertiesNV #-}
@@ -2482,6 +2510,8 @@
 {-# complete (::&) :: PhysicalDeviceFaultFeaturesEXT #-}
 {-# complete (::&) :: PhysicalDeviceShaderCoreBuiltinsPropertiesARM #-}
 {-# complete (::&) :: PhysicalDeviceShaderCoreBuiltinsFeaturesARM #-}
+{-# complete (::&) :: PhysicalDeviceRayTracingInvocationReorderFeaturesNV #-}
+{-# complete (::&) :: PhysicalDeviceRayTracingInvocationReorderPropertiesNV #-}
 
 -- | View the head and tail of a 'Chain', see '::&'
 --
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
@@ -1411,6 +1411,31 @@
 -- even if the pipeline layout includes a non-trivial descriptor set layout
 -- for that set number.
 --
+-- When consuming a descriptor, a descriptor is considered valid if the
+-- descriptor is not undefined as described by
+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptor-set-initial-state descriptor set allocation>.
+-- If the
+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
+-- feature is enabled, a null descriptor is also considered valid. A
+-- descriptor that was disturbed by
+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-compatibility Pipeline Layout Compatibility>,
+-- or was never bound by 'cmdBindDescriptorSets' is not considered valid.
+-- If a pipeline accesses a descriptor either statically or dynamically
+-- depending on the
+-- 'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DescriptorBindingFlagBits',
+-- the consuming descriptor type in the pipeline /must/ match the
+-- 'Vulkan.Core10.Enums.DescriptorType.DescriptorType' in
+-- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutCreateInfo' for the
+-- descriptor to be considered valid. If a descriptor is a mutable
+-- descriptor, the consuming descriptor type in the pipeline /must/ match
+-- the active descriptor type for the descriptor to be considered valid.
+--
+-- Note
+--
+-- Further validation may be carried out beyond validation for descriptor
+-- types, e.g.
+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#textures-input-validation Texel Input Validation>.
+--
 -- If any of the sets being bound include dynamic uniform or storage
 -- buffers, then @pDynamicOffsets@ includes one element for each array
 -- element in each dynamic descriptor type binding in each set. Values are
@@ -2047,9 +2072,11 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
 --
 -- -   #VUID-vkCmdDraw-None-02699# Descriptors in each bound descriptor
---     set, specified via 'cmdBindDescriptorSets', /must/ be valid if they
---     are statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to
---     the pipeline bind point used by this command
+--     set, specified via 'cmdBindDescriptorSets', /must/ be valid as
+--     described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
+--     bound to the pipeline bind point used by this command
 --
 -- -   #VUID-vkCmdDraw-None-02700# A valid pipeline /must/ be bound to the
 --     pipeline bind point used by this command
@@ -3503,7 +3530,7 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
 --     is 'Vulkan.Core10.FundamentalTypes.FALSE', then the
 --     @primitiveTopology@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
 --     /must/ be of the same
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
 --     as the pipeline
@@ -3550,9 +3577,9 @@
 --
 -- -   #VUID-vkCmdDraw-None-04879# If the bound graphics pipeline state was
 --     created with the
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
 --     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command
 --
@@ -3805,9 +3832,10 @@
 --
 -- -   #VUID-vkCmdDrawIndexed-None-02699# Descriptors in each bound
 --     descriptor set, specified via 'cmdBindDescriptorSets', /must/ be
---     valid if they are statically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command
+--     valid as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
+--     bound to the pipeline bind point used by this command
 --
 -- -   #VUID-vkCmdDrawIndexed-None-02700# A valid pipeline /must/ be bound
 --     to the pipeline bind point used by this command
@@ -5268,7 +5296,7 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
 --     is 'Vulkan.Core10.FundamentalTypes.FALSE', then the
 --     @primitiveTopology@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
 --     /must/ be of the same
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
 --     as the pipeline
@@ -5315,9 +5343,9 @@
 --
 -- -   #VUID-vkCmdDrawIndexed-None-04879# If the bound graphics pipeline
 --     state was created with the
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
 --     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command
 --
@@ -5568,9 +5596,10 @@
 --
 -- -   #VUID-vkCmdDrawIndirect-None-02699# Descriptors in each bound
 --     descriptor set, specified via 'cmdBindDescriptorSets', /must/ be
---     valid if they are statically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command
+--     valid as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
+--     bound to the pipeline bind point used by this command
 --
 -- -   #VUID-vkCmdDrawIndirect-None-02700# A valid pipeline /must/ be bound
 --     to the pipeline bind point used by this command
@@ -7010,7 +7039,7 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
 --     is 'Vulkan.Core10.FundamentalTypes.FALSE', then the
 --     @primitiveTopology@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
 --     /must/ be of the same
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
 --     as the pipeline
@@ -7057,9 +7086,9 @@
 --
 -- -   #VUID-vkCmdDrawIndirect-None-04879# If the bound graphics pipeline
 --     state was created with the
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
 --     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command
 --
@@ -7341,9 +7370,10 @@
 --
 -- -   #VUID-vkCmdDrawIndexedIndirect-None-02699# Descriptors in each bound
 --     descriptor set, specified via 'cmdBindDescriptorSets', /must/ be
---     valid if they are statically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command
+--     valid as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
+--     bound to the pipeline bind point used by this command
 --
 -- -   #VUID-vkCmdDrawIndexedIndirect-None-02700# A valid pipeline /must/
 --     be bound to the pipeline bind point used by this command
@@ -8783,7 +8813,7 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
 --     is 'Vulkan.Core10.FundamentalTypes.FALSE', then the
 --     @primitiveTopology@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
 --     /must/ be of the same
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
 --     as the pipeline
@@ -8830,9 +8860,9 @@
 --
 -- -   #VUID-vkCmdDrawIndexedIndirect-None-04879# If the bound graphics
 --     pipeline state was created with the
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
 --     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command
 --
@@ -9115,9 +9145,11 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
 --
 -- -   #VUID-vkCmdDispatch-None-02699# Descriptors in each bound descriptor
---     set, specified via 'cmdBindDescriptorSets', /must/ be valid if they
---     are statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to
---     the pipeline bind point used by this command
+--     set, specified via 'cmdBindDescriptorSets', /must/ be valid as
+--     described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
+--     bound to the pipeline bind point used by this command
 --
 -- -   #VUID-vkCmdDispatch-None-02700# A valid pipeline /must/ be bound to
 --     the pipeline bind point used by this command
@@ -9591,9 +9623,10 @@
 --
 -- -   #VUID-vkCmdDispatchIndirect-None-02699# Descriptors in each bound
 --     descriptor set, specified via 'cmdBindDescriptorSets', /must/ be
---     valid if they are statically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command
+--     valid as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
+--     bound to the pipeline bind point used by this command
 --
 -- -   #VUID-vkCmdDispatchIndirect-None-02700# A valid pipeline /must/ be
 --     bound to the pipeline bind point used by this command
@@ -16680,12 +16713,14 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'BufferImageCopy',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BufferImageCopy2',
+-- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.CopyMemoryToImageIndirectCommandNV',
 -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags', 'ImageBlit',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageBlit2',
 -- 'ImageCopy',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageCopy2',
 -- 'ImageResolve',
--- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageResolve2'
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageResolve2',
+-- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.cmdCopyMemoryToImageIndirectNV'
 data ImageSubresourceLayers = ImageSubresourceLayers
   { -- | @aspectMask@ is a combination of
     -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits', selecting
diff --git a/src/Vulkan/Core10/DescriptorSet.hs b/src/Vulkan/Core10/DescriptorSet.hs
--- a/src/Vulkan/Core10/DescriptorSet.hs
+++ b/src/Vulkan/Core10/DescriptorSet.hs
@@ -584,10 +584,12 @@
 -- The allocated descriptor sets are returned in @pDescriptorSets@.
 --
 -- When a descriptor set is allocated, the initial state is largely
--- uninitialized and all descriptors are undefined. Descriptors also become
--- undefined if the underlying resource is destroyed. Descriptor sets
--- containing undefined descriptors /can/ still be bound and used, subject
--- to the following conditions:
+-- uninitialized and all descriptors are undefined, with the exception that
+-- samplers with a non-null @pImmutableSamplers@ are initialized on
+-- allocation. Descriptors also become undefined if the underlying resource
+-- or view object is destroyed. Descriptor sets containing undefined
+-- descriptors /can/ still be bound and used, subject to the following
+-- conditions:
 --
 -- -   For descriptor set bindings created with the
 --     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT'
@@ -1409,9 +1411,8 @@
 --     is
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
 --     or
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
 --     the @imageView@ member of each element of @pImageInfo@ /must/ be
 --     either a valid 'Vulkan.Core10.Handles.ImageView' handle or
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE'
@@ -1420,13 +1421,18 @@
 --     is
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
 --     or
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
 --     and the
 --     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
 --     feature is not enabled, the @imageView@ member of each element of
 --     @pImageInfo@ /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkWriteDescriptorSet-descriptorType-07683# If @descriptorType@
+--     is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT',
+--     the @imageView@ member of each element of @pImageInfo@ /must/ not be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
 --
 -- -   #VUID-VkWriteDescriptorSet-descriptorType-02221# If @descriptorType@
 --     is
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
@@ -105,6 +105,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_compute_shader_derivatives (PhysicalDeviceComputeShaderDerivativesFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conditional_rendering (PhysicalDeviceConditionalRenderingFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_matrix (PhysicalDeviceCooperativeMatrixFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_copy_memory_indirect (PhysicalDeviceCopyMemoryIndirectFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_corner_sampled_image (PhysicalDeviceCornerSampledImageFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_coverage_reduction_mode (PhysicalDeviceCoverageReductionModeFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_custom_border_color (PhysicalDeviceCustomBorderColorFeaturesEXT)
@@ -151,6 +152,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_line_rasterization (PhysicalDeviceLineRasterizationFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_linear_color_attachment (PhysicalDeviceLinearColorAttachmentFeaturesNV)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_maintenance4 (PhysicalDeviceMaintenance4Features)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_memory_decompression (PhysicalDeviceMemoryDecompressionFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_memory_priority (PhysicalDeviceMemoryPriorityFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_mesh_shader (PhysicalDeviceMeshShaderFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_mesh_shader (PhysicalDeviceMeshShaderFeaturesNV)
@@ -180,6 +182,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_rgba10x6_formats (PhysicalDeviceRGBA10X6FormatsFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_rasterization_order_attachment_access (PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_query (PhysicalDeviceRayQueryFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder (PhysicalDeviceRayTracingInvocationReorderFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1 (PhysicalDeviceRayTracingMaintenance1FeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (PhysicalDeviceRayTracingMotionBlurFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (PhysicalDeviceRayTracingPipelineFeaturesKHR)
@@ -840,6 +843,7 @@
 --     'Vulkan.Extensions.VK_NV_compute_shader_derivatives.PhysicalDeviceComputeShaderDerivativesFeaturesNV',
 --     'Vulkan.Extensions.VK_EXT_conditional_rendering.PhysicalDeviceConditionalRenderingFeaturesEXT',
 --     'Vulkan.Extensions.VK_NV_cooperative_matrix.PhysicalDeviceCooperativeMatrixFeaturesNV',
+--     'Vulkan.Extensions.VK_NV_copy_memory_indirect.PhysicalDeviceCopyMemoryIndirectFeaturesNV',
 --     'Vulkan.Extensions.VK_NV_corner_sampled_image.PhysicalDeviceCornerSampledImageFeaturesNV',
 --     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PhysicalDeviceCoverageReductionModeFeaturesNV',
 --     'Vulkan.Extensions.VK_EXT_custom_border_color.PhysicalDeviceCustomBorderColorFeaturesEXT',
@@ -885,6 +889,7 @@
 --     'Vulkan.Extensions.VK_EXT_line_rasterization.PhysicalDeviceLineRasterizationFeaturesEXT',
 --     'Vulkan.Extensions.VK_NV_linear_color_attachment.PhysicalDeviceLinearColorAttachmentFeaturesNV',
 --     'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.PhysicalDeviceMaintenance4Features',
+--     'Vulkan.Extensions.VK_NV_memory_decompression.PhysicalDeviceMemoryDecompressionFeaturesNV',
 --     'Vulkan.Extensions.VK_EXT_memory_priority.PhysicalDeviceMemoryPriorityFeaturesEXT',
 --     'Vulkan.Extensions.VK_EXT_mesh_shader.PhysicalDeviceMeshShaderFeaturesEXT',
 --     'Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderFeaturesNV',
@@ -914,6 +919,7 @@
 --     'Vulkan.Extensions.VK_EXT_rgba10x6_formats.PhysicalDeviceRGBA10X6FormatsFeaturesEXT',
 --     'Vulkan.Extensions.VK_EXT_rasterization_order_attachment_access.PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT',
 --     'Vulkan.Extensions.VK_KHR_ray_query.PhysicalDeviceRayQueryFeaturesKHR',
+--     'Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder.PhysicalDeviceRayTracingInvocationReorderFeaturesNV',
 --     'Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1.PhysicalDeviceRayTracingMaintenance1FeaturesKHR',
 --     'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.PhysicalDeviceRayTracingMotionBlurFeaturesNV',
 --     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelineFeaturesKHR',
@@ -1043,6 +1049,7 @@
   getNext DeviceCreateInfo{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends DeviceCreateInfo e => b) -> Maybe b
   extends _ f
+    | Just Refl <- eqT @e @PhysicalDeviceRayTracingInvocationReorderFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderCoreBuiltinsFeaturesARM = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFaultFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceOpticalFlowFeaturesNV = Just f
@@ -1147,6 +1154,8 @@
     | Just Refl <- eqT @e @PhysicalDeviceMeshShaderFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceInvocationMaskFeaturesHUAWEI = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShadingRateImageFeaturesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceMemoryDecompressionFeaturesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceCopyMemoryIndirectFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderImageFootprintFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceComputeShaderDerivativesFeaturesNV = Just f
diff --git a/src/Vulkan/Core10/Enums/ImageLayout.hs b/src/Vulkan/Core10/Enums/ImageLayout.hs
--- a/src/Vulkan/Core10/Enums/ImageLayout.hs
+++ b/src/Vulkan/Core10/Enums/ImageLayout.hs
@@ -87,6 +87,7 @@
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyImage',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyImageToBuffer',
+-- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.cmdCopyMemoryToImageIndirectNV',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdResolveImage'
 newtype ImageLayout = ImageLayout Int32
   deriving newtype (Eq, Ord, Storable, Zero)
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
@@ -53,6 +53,8 @@
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM
                                                         , STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV
                                                         , STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC
                                                         , STRUCTURE_TYPE_TILE_PROPERTIES_QCOM
@@ -82,6 +84,10 @@
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV
                                                         , STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM
@@ -983,6 +989,8 @@
 -- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.PhysicalDeviceConservativeRasterizationPropertiesEXT',
 -- 'Vulkan.Extensions.VK_NV_cooperative_matrix.PhysicalDeviceCooperativeMatrixFeaturesNV',
 -- 'Vulkan.Extensions.VK_NV_cooperative_matrix.PhysicalDeviceCooperativeMatrixPropertiesNV',
+-- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.PhysicalDeviceCopyMemoryIndirectFeaturesNV',
+-- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.PhysicalDeviceCopyMemoryIndirectPropertiesNV',
 -- 'Vulkan.Extensions.VK_NV_corner_sampled_image.PhysicalDeviceCornerSampledImageFeaturesNV',
 -- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PhysicalDeviceCoverageReductionModeFeaturesNV',
 -- 'Vulkan.Extensions.VK_EXT_custom_border_color.PhysicalDeviceCustomBorderColorFeaturesEXT',
@@ -1061,6 +1069,8 @@
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.PhysicalDeviceMaintenance4Features',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.PhysicalDeviceMaintenance4Properties',
 -- 'Vulkan.Extensions.VK_EXT_memory_budget.PhysicalDeviceMemoryBudgetPropertiesEXT',
+-- 'Vulkan.Extensions.VK_NV_memory_decompression.PhysicalDeviceMemoryDecompressionFeaturesNV',
+-- 'Vulkan.Extensions.VK_NV_memory_decompression.PhysicalDeviceMemoryDecompressionPropertiesNV',
 -- 'Vulkan.Extensions.VK_EXT_memory_priority.PhysicalDeviceMemoryPriorityFeaturesEXT',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceMemoryProperties2',
 -- 'Vulkan.Extensions.VK_EXT_mesh_shader.PhysicalDeviceMeshShaderFeaturesEXT',
@@ -1107,6 +1117,8 @@
 -- 'Vulkan.Extensions.VK_EXT_rgba10x6_formats.PhysicalDeviceRGBA10X6FormatsFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_rasterization_order_attachment_access.PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT',
 -- 'Vulkan.Extensions.VK_KHR_ray_query.PhysicalDeviceRayQueryFeaturesKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder.PhysicalDeviceRayTracingInvocationReorderFeaturesNV',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder.PhysicalDeviceRayTracingInvocationReorderPropertiesNV',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1.PhysicalDeviceRayTracingMaintenance1FeaturesKHR',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.PhysicalDeviceRayTracingMotionBlurFeaturesNV',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelineFeaturesKHR',
@@ -1552,6 +1564,12 @@
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT"
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT = StructureType 1000351000
 
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV = StructureType 1000490001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV = StructureType 1000490000
+
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC"
 pattern STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC = StructureType 1000485001
 
@@ -1639,6 +1657,18 @@
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV"
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = StructureType 1000430000
 
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV = StructureType 1000427001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV = StructureType 1000427000
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV = StructureType 1000426001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV = StructureType 1000426000
+
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM"
 pattern STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = StructureType 1000425002
 
@@ -3418,6 +3448,8 @@
   , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM
   , STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT
   , STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV
   , STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC
   , STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC
   , STRUCTURE_TYPE_TILE_PROPERTIES_QCOM
@@ -3447,6 +3479,10 @@
   , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM
   , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT
   , STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV
   , STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM
   , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM
   , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM
@@ -4234,6 +4270,14 @@
     , "PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT"
     )
   ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV
+    , "PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV
+    , "PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV"
+    )
+  ,
     ( STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC
     , "AMIGO_PROFILING_SUBMIT_INFO_SEC"
     )
@@ -4348,6 +4392,22 @@
   ,
     ( STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV
     , "PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV
+    , "PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV
+    , "PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV
+    , "PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV
+    , "PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV"
     )
   ,
     ( STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM
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
@@ -119,6 +119,7 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'Vulkan.Core10.CommandBufferBuilding.BufferImageCopy',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BufferImageCopy2',
+-- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.CopyMemoryToImageIndirectCommandNV',
 -- 'Vulkan.Core10.CommandBufferBuilding.ImageBlit',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageBlit2',
 -- 'Vulkan.Core10.CommandBufferBuilding.ImageCopy',
@@ -261,6 +262,7 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'Vulkan.Core10.CommandBufferBuilding.BufferImageCopy',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BufferImageCopy2',
+-- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.CopyMemoryToImageIndirectCommandNV',
 -- 'Vulkan.Core10.CommandBufferBuilding.ImageCopy',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageCopy2',
 -- 'Vulkan.Core10.Image.ImageCreateInfo',
@@ -443,6 +445,7 @@
 -- 'Vulkan.Extensions.VK_EXT_conditional_rendering.PhysicalDeviceConditionalRenderingFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.PhysicalDeviceConservativeRasterizationPropertiesEXT',
 -- 'Vulkan.Extensions.VK_NV_cooperative_matrix.PhysicalDeviceCooperativeMatrixFeaturesNV',
+-- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.PhysicalDeviceCopyMemoryIndirectFeaturesNV',
 -- 'Vulkan.Extensions.VK_NV_corner_sampled_image.PhysicalDeviceCornerSampledImageFeaturesNV',
 -- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PhysicalDeviceCoverageReductionModeFeaturesNV',
 -- 'Vulkan.Extensions.VK_EXT_custom_border_color.PhysicalDeviceCustomBorderColorFeaturesEXT',
@@ -501,6 +504,7 @@
 -- 'Vulkan.Extensions.VK_EXT_line_rasterization.PhysicalDeviceLineRasterizationFeaturesEXT',
 -- 'Vulkan.Extensions.VK_NV_linear_color_attachment.PhysicalDeviceLinearColorAttachmentFeaturesNV',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.PhysicalDeviceMaintenance4Features',
+-- 'Vulkan.Extensions.VK_NV_memory_decompression.PhysicalDeviceMemoryDecompressionFeaturesNV',
 -- 'Vulkan.Extensions.VK_EXT_memory_priority.PhysicalDeviceMemoryPriorityFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_mesh_shader.PhysicalDeviceMeshShaderFeaturesEXT',
 -- 'Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderFeaturesNV',
@@ -536,6 +540,7 @@
 -- 'Vulkan.Extensions.VK_EXT_rgba10x6_formats.PhysicalDeviceRGBA10X6FormatsFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_rasterization_order_attachment_access.PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT',
 -- 'Vulkan.Extensions.VK_KHR_ray_query.PhysicalDeviceRayQueryFeaturesKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder.PhysicalDeviceRayTracingInvocationReorderFeaturesNV',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1.PhysicalDeviceRayTracingMaintenance1FeaturesKHR',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.PhysicalDeviceRayTracingMotionBlurFeaturesNV',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelineFeaturesKHR',
@@ -837,6 +842,8 @@
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.BufferMemoryBarrier2',
 -- 'Vulkan.Core10.BufferView.BufferViewCreateInfo',
 -- 'Vulkan.Extensions.VK_EXT_conditional_rendering.ConditionalRenderingBeginInfoEXT',
+-- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.CopyMemoryIndirectCommandNV',
+-- 'Vulkan.Extensions.VK_NV_memory_decompression.DecompressMemoryRegionNV',
 -- 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo',
 -- 'Vulkan.Extensions.VK_EXT_device_address_binding_report.DeviceAddressBindingCallbackDataEXT',
 -- 'Vulkan.Extensions.VK_EXT_device_fault.DeviceFaultAddressInfoEXT',
@@ -919,6 +926,9 @@
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.BindIndexBufferIndirectCommandNV',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.BindVertexBufferIndirectCommandNV',
 -- 'Vulkan.Extensions.VK_EXT_buffer_device_address.BufferDeviceAddressCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.CopyMemoryIndirectCommandNV',
+-- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.CopyMemoryToImageIndirectCommandNV',
+-- 'Vulkan.Extensions.VK_NV_memory_decompression.DecompressMemoryRegionNV',
 -- 'Vulkan.Extensions.VK_EXT_device_address_binding_report.DeviceAddressBindingCallbackDataEXT',
 -- 'Vulkan.Extensions.VK_EXT_device_fault.DeviceFaultAddressInfoEXT',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR',
@@ -928,6 +938,9 @@
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.StridedDeviceAddressRegionKHR',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1.TraceRaysIndirectCommand2KHR',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdBuildAccelerationStructuresIndirectKHR',
+-- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.cmdCopyMemoryIndirectNV',
+-- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.cmdCopyMemoryToImageIndirectNV',
+-- 'Vulkan.Extensions.VK_NV_memory_decompression.cmdDecompressMemoryIndirectCountNV',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1.cmdTraceRaysIndirect2KHR',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdTraceRaysIndirectKHR'
 type DeviceAddress = Word64
diff --git a/src/Vulkan/Core10/FundamentalTypes.hs-boot b/src/Vulkan/Core10/FundamentalTypes.hs-boot
--- a/src/Vulkan/Core10/FundamentalTypes.hs-boot
+++ b/src/Vulkan/Core10/FundamentalTypes.hs-boot
@@ -69,6 +69,9 @@
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.BindIndexBufferIndirectCommandNV',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.BindVertexBufferIndirectCommandNV',
 -- 'Vulkan.Extensions.VK_EXT_buffer_device_address.BufferDeviceAddressCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.CopyMemoryIndirectCommandNV',
+-- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.CopyMemoryToImageIndirectCommandNV',
+-- 'Vulkan.Extensions.VK_NV_memory_decompression.DecompressMemoryRegionNV',
 -- 'Vulkan.Extensions.VK_EXT_device_address_binding_report.DeviceAddressBindingCallbackDataEXT',
 -- 'Vulkan.Extensions.VK_EXT_device_fault.DeviceFaultAddressInfoEXT',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR',
@@ -78,6 +81,9 @@
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.StridedDeviceAddressRegionKHR',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1.TraceRaysIndirectCommand2KHR',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdBuildAccelerationStructuresIndirectKHR',
+-- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.cmdCopyMemoryIndirectNV',
+-- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.cmdCopyMemoryToImageIndirectNV',
+-- 'Vulkan.Extensions.VK_NV_memory_decompression.cmdDecompressMemoryIndirectCountNV',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1.cmdTraceRaysIndirect2KHR',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdTraceRaysIndirectKHR'
 type DeviceAddress = Word64
@@ -108,6 +114,8 @@
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.BufferMemoryBarrier2',
 -- 'Vulkan.Core10.BufferView.BufferViewCreateInfo',
 -- 'Vulkan.Extensions.VK_EXT_conditional_rendering.ConditionalRenderingBeginInfoEXT',
+-- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.CopyMemoryIndirectCommandNV',
+-- 'Vulkan.Extensions.VK_NV_memory_decompression.DecompressMemoryRegionNV',
 -- 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo',
 -- 'Vulkan.Extensions.VK_EXT_device_address_binding_report.DeviceAddressBindingCallbackDataEXT',
 -- 'Vulkan.Extensions.VK_EXT_device_fault.DeviceFaultAddressInfoEXT',
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
@@ -591,7 +591,9 @@
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyImageToBuffer',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdCopyImageToBuffer2',
 -- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyImageToBuffer2KHR',
+-- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.cmdCopyMemoryIndirectNV',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdCopyMemoryToAccelerationStructureKHR',
+-- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.cmdCopyMemoryToImageIndirectNV',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.cmdCopyMemoryToMicromapEXT',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.cmdCopyMicromapEXT',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.cmdCopyMicromapToMemoryEXT',
@@ -601,6 +603,8 @@
 -- 'Vulkan.Extensions.VK_EXT_debug_marker.cmdDebugMarkerEndEXT',
 -- 'Vulkan.Extensions.VK_EXT_debug_marker.cmdDebugMarkerInsertEXT',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdDecodeVideoKHR vkCmdDecodeVideoKHR>,
+-- 'Vulkan.Extensions.VK_NV_memory_decompression.cmdDecompressMemoryIndirectCountNV',
+-- 'Vulkan.Extensions.VK_NV_memory_decompression.cmdDecompressMemoryNV',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdDispatch',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.cmdDispatchBase',
 -- 'Vulkan.Extensions.VK_KHR_device_group.cmdDispatchBaseKHR',
@@ -960,6 +964,7 @@
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyImage',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyImageToBuffer',
+-- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.cmdCopyMemoryToImageIndirectNV',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdResolveImage',
 -- 'Vulkan.Core10.Image.createImage', 'Vulkan.Core10.Image.destroyImage',
 -- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.getImageDrmFormatModifierPropertiesEXT',
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
@@ -401,9 +401,10 @@
 -- -   #VUID-vkCmdDispatchBase-None-02699# Descriptors in each bound
 --     descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid if they are statically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command
+--     be valid as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
+--     bound to the pipeline bind point used by this command
 --
 -- -   #VUID-vkCmdDispatchBase-None-02700# A valid pipeline /must/ be bound
 --     to the pipeline bind point used by this command
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_get_physical_device_properties2.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_get_physical_device_properties2.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_get_physical_device_properties2.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_get_physical_device_properties2.hs
@@ -116,6 +116,8 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conservative_rasterization (PhysicalDeviceConservativeRasterizationPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_matrix (PhysicalDeviceCooperativeMatrixFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_matrix (PhysicalDeviceCooperativeMatrixPropertiesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_copy_memory_indirect (PhysicalDeviceCopyMemoryIndirectFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_copy_memory_indirect (PhysicalDeviceCopyMemoryIndirectPropertiesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_corner_sampled_image (PhysicalDeviceCornerSampledImageFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_coverage_reduction_mode (PhysicalDeviceCoverageReductionModeFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_custom_border_color (PhysicalDeviceCustomBorderColorFeaturesEXT)
@@ -188,6 +190,8 @@
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_maintenance4 (PhysicalDeviceMaintenance4Features)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_maintenance4 (PhysicalDeviceMaintenance4Properties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_memory_budget (PhysicalDeviceMemoryBudgetPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_memory_decompression (PhysicalDeviceMemoryDecompressionFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_memory_decompression (PhysicalDeviceMemoryDecompressionPropertiesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_memory_priority (PhysicalDeviceMemoryPriorityFeaturesEXT)
 import Vulkan.Core10.DeviceInitialization (PhysicalDeviceMemoryProperties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_mesh_shader (PhysicalDeviceMeshShaderFeaturesEXT)
@@ -234,6 +238,8 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_rgba10x6_formats (PhysicalDeviceRGBA10X6FormatsFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_rasterization_order_attachment_access (PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_query (PhysicalDeviceRayQueryFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder (PhysicalDeviceRayTracingInvocationReorderFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder (PhysicalDeviceRayTracingInvocationReorderPropertiesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_maintenance1 (PhysicalDeviceRayTracingMaintenance1FeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (PhysicalDeviceRayTracingMotionBlurFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (PhysicalDeviceRayTracingPipelineFeaturesKHR)
@@ -839,6 +845,7 @@
   getNext PhysicalDeviceFeatures2{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends PhysicalDeviceFeatures2 e => b) -> Maybe b
   extends _ f
+    | Just Refl <- eqT @e @PhysicalDeviceRayTracingInvocationReorderFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderCoreBuiltinsFeaturesARM = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFaultFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceOpticalFlowFeaturesNV = Just f
@@ -941,6 +948,8 @@
     | Just Refl <- eqT @e @PhysicalDeviceMeshShaderFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceInvocationMaskFeaturesHUAWEI = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShadingRateImageFeaturesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceMemoryDecompressionFeaturesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceCopyMemoryIndirectFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderImageFootprintFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceComputeShaderDerivativesFeaturesNV = Just f
@@ -1032,6 +1041,7 @@
 --     'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT',
 --     'Vulkan.Extensions.VK_EXT_conservative_rasterization.PhysicalDeviceConservativeRasterizationPropertiesEXT',
 --     'Vulkan.Extensions.VK_NV_cooperative_matrix.PhysicalDeviceCooperativeMatrixPropertiesNV',
+--     'Vulkan.Extensions.VK_NV_copy_memory_indirect.PhysicalDeviceCopyMemoryIndirectPropertiesNV',
 --     'Vulkan.Extensions.VK_EXT_custom_border_color.PhysicalDeviceCustomBorderColorPropertiesEXT',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties',
 --     'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties',
@@ -1055,6 +1065,7 @@
 --     'Vulkan.Extensions.VK_EXT_line_rasterization.PhysicalDeviceLineRasterizationPropertiesEXT',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.PhysicalDeviceMaintenance3Properties',
 --     'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.PhysicalDeviceMaintenance4Properties',
+--     'Vulkan.Extensions.VK_NV_memory_decompression.PhysicalDeviceMemoryDecompressionPropertiesNV',
 --     'Vulkan.Extensions.VK_EXT_mesh_shader.PhysicalDeviceMeshShaderPropertiesEXT',
 --     'Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderPropertiesNV',
 --     'Vulkan.Extensions.VK_EXT_multi_draw.PhysicalDeviceMultiDrawPropertiesEXT',
@@ -1070,6 +1081,7 @@
 --     'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryProperties',
 --     'Vulkan.Extensions.VK_EXT_provoking_vertex.PhysicalDeviceProvokingVertexPropertiesEXT',
 --     'Vulkan.Extensions.VK_KHR_push_descriptor.PhysicalDevicePushDescriptorPropertiesKHR',
+--     'Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder.PhysicalDeviceRayTracingInvocationReorderPropertiesNV',
 --     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelinePropertiesKHR',
 --     'Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV',
 --     'Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2PropertiesEXT',
@@ -1125,6 +1137,7 @@
   getNext PhysicalDeviceProperties2{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends PhysicalDeviceProperties2 e => b) -> Maybe b
   extends _ f
+    | Just Refl <- eqT @e @PhysicalDeviceRayTracingInvocationReorderPropertiesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderCoreBuiltinsPropertiesARM = Just f
     | Just Refl <- eqT @e @PhysicalDeviceOpticalFlowPropertiesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceImageProcessingPropertiesQCOM = Just f
@@ -1161,6 +1174,8 @@
     | Just Refl <- eqT @e @PhysicalDeviceMeshShaderPropertiesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceMeshShaderPropertiesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShadingRateImagePropertiesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceMemoryDecompressionPropertiesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceCopyMemoryIndirectPropertiesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceTransformFeedbackPropertiesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDepthStencilResolveProperties = Just f
     | Just Refl <- eqT @e @PhysicalDevicePCIBusInfoPropertiesEXT = Just f
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
@@ -176,9 +176,10 @@
 -- -   #VUID-vkCmdDrawIndirectCount-None-02699# Descriptors in each bound
 --     descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid if they are statically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command
+--     be valid as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
+--     bound to the pipeline bind point used by this command
 --
 -- -   #VUID-vkCmdDrawIndirectCount-None-02700# A valid pipeline /must/ be
 --     bound to the pipeline bind point used by this command
@@ -1618,7 +1619,7 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
 --     is 'Vulkan.Core10.FundamentalTypes.FALSE', then the
 --     @primitiveTopology@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
 --     /must/ be of the same
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
 --     as the pipeline
@@ -1665,9 +1666,9 @@
 --
 -- -   #VUID-vkCmdDrawIndirectCount-None-04879# If the bound graphics
 --     pipeline state was created with the
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
 --     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command
 --
@@ -1988,9 +1989,10 @@
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-None-02699# Descriptors in each
 --     bound descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid if they are statically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command
+--     be valid as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
+--     bound to the pipeline bind point used by this command
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-None-02700# A valid pipeline
 --     /must/ be bound to the pipeline bind point used by this command
@@ -3434,7 +3436,7 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
 --     is 'Vulkan.Core10.FundamentalTypes.FALSE', then the
 --     @primitiveTopology@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
 --     /must/ be of the same
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
 --     as the pipeline
@@ -3481,9 +3483,9 @@
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-None-04879# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
 --     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command
 --
diff --git a/src/Vulkan/Core13/Enums/FormatFeatureFlags2.hs b/src/Vulkan/Core13/Enums/FormatFeatureFlags2.hs
--- a/src/Vulkan/Core13/Enums/FormatFeatureFlags2.hs
+++ b/src/Vulkan/Core13/Enums/FormatFeatureFlags2.hs
@@ -406,7 +406,7 @@
 --
 -- -   'FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV' specifies that the
 --     format is supported as a renderable
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary Linear Color Attachment>.
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-linear-color-attachment Linear Color Attachment>.
 --     This bit will be set for renderable color formats in the
 --     @linearTilingFeatures@. This /must/ not be set in the
 --     @optimalTilingFeatures@ or @bufferFeatures@ members.
@@ -758,7 +758,7 @@
 
 -- | 'FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV' specifies that the
 -- format is supported as a renderable
--- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary Linear Color Attachment>.
+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-linear-color-attachment Linear Color Attachment>.
 -- This bit will be set for renderable color formats in the
 -- @linearTilingFeatures@. This /must/ not be set in the
 -- @optimalTilingFeatures@ or @bufferFeatures@ members.
diff --git a/src/Vulkan/Core13/Promoted_From_VK_KHR_dynamic_rendering.hs b/src/Vulkan/Core13/Promoted_From_VK_KHR_dynamic_rendering.hs
--- a/src/Vulkan/Core13/Promoted_From_VK_KHR_dynamic_rendering.hs
+++ b/src/Vulkan/Core13/Promoted_From_VK_KHR_dynamic_rendering.hs
@@ -1396,14 +1396,6 @@
 --     feature is not enabled, @rasterizationSamples@ /must/ be a valid
 --     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
 --
--- -   #VUID-VkCommandBufferInheritanceRenderingInfo-pColorAttachmentFormats-06006#
---     If any element of @pColorAttachmentFormats@ is not
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format
---     with
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
---     that include
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'
---
 -- -   #VUID-VkCommandBufferInheritanceRenderingInfo-depthAttachmentFormat-06540#
 --     If @depthAttachmentFormat@ is not
 --     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format
@@ -1418,14 +1410,17 @@
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'
 --
 -- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-pColorAttachmentFormats-06492#
---     When rendering to a
---     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary Linear Color attachment>,
---     if any element of @pColorAttachmentFormats@ is not
+--     If any element of @pColorAttachmentFormats@ is not
 --     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format
 --     with
 --     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
 --     that include
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT',
+--     or
 --     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
+--     if the
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
+--     feature is enabled
 --
 -- -   #VUID-VkCommandBufferInheritanceRenderingInfo-stencilAttachmentFormat-06541#
 --     If @stencilAttachmentFormat@ is not
diff --git a/src/Vulkan/Dynamic.hs b/src/Vulkan/Dynamic.hs
--- a/src/Vulkan/Dynamic.hs
+++ b/src/Vulkan/Dynamic.hs
@@ -124,6 +124,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.Handles (DebugUtilsMessengerEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsObjectNameInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsObjectTagInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_memory_decompression (DecompressMemoryRegionNV)
 import {-# SOURCE #-} Vulkan.Extensions.Handles (DeferredOperationKHR)
 import {-# SOURCE #-} Vulkan.Core10.Enums.DependencyFlagBits (DependencyFlags)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (DependencyInfo)
@@ -220,6 +221,7 @@
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (ImageSparseMemoryRequirementsInfo2)
 import {-# SOURCE #-} Vulkan.Core10.SparseResourceMemoryManagement (ImageSubresource)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_compression_control (ImageSubresource2EXT)
+import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ImageSubresourceLayers)
 import {-# SOURCE #-} Vulkan.Core10.ImageView (ImageSubresourceRange)
 import {-# SOURCE #-} Vulkan.Core10.Enums.ImageTiling (ImageTiling)
 import {-# SOURCE #-} Vulkan.Core10.Enums.ImageType (ImageType)
@@ -917,6 +919,8 @@
   , pVkCmdBlitImage :: FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr ImageBlit) -> Filter -> IO ())
   , pVkCmdCopyBufferToImage :: FunPtr (Ptr CommandBuffer_T -> ("srcBuffer" ::: Buffer) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr BufferImageCopy) -> IO ())
   , pVkCmdCopyImageToBuffer :: FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("dstBuffer" ::: Buffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr BufferImageCopy) -> IO ())
+  , pVkCmdCopyMemoryIndirectNV :: FunPtr (Ptr CommandBuffer_T -> ("copyBufferAddress" ::: DeviceAddress) -> ("copyCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())
+  , pVkCmdCopyMemoryToImageIndirectNV :: FunPtr (Ptr CommandBuffer_T -> ("copyBufferAddress" ::: DeviceAddress) -> ("copyCount" ::: Word32) -> ("stride" ::: Word32) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("pImageSubresources" ::: Ptr ImageSubresourceLayers) -> IO ())
   , pVkCmdUpdateBuffer :: FunPtr (Ptr CommandBuffer_T -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> ("dataSize" ::: DeviceSize) -> ("pData" ::: Ptr ()) -> IO ())
   , pVkCmdFillBuffer :: FunPtr (Ptr CommandBuffer_T -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> DeviceSize -> ("data" ::: Word32) -> IO ())
   , pVkCmdClearColorImage :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> ("pColor" ::: Ptr ClearColorValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr ImageSubresourceRange) -> IO ())
@@ -1190,6 +1194,8 @@
   , pVkCmdWriteTimestamp2 :: FunPtr (Ptr CommandBuffer_T -> PipelineStageFlags2 -> QueryPool -> ("query" ::: Word32) -> IO ())
   , pVkCmdWriteBufferMarker2AMD :: FunPtr (Ptr CommandBuffer_T -> PipelineStageFlags2 -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> ("marker" ::: Word32) -> IO ())
   , pVkGetQueueCheckpointData2NV :: FunPtr (Ptr Queue_T -> ("pCheckpointDataCount" ::: Ptr Word32) -> ("pCheckpointData" ::: Ptr CheckpointData2NV) -> IO ())
+  , pVkCmdDecompressMemoryNV :: FunPtr (Ptr CommandBuffer_T -> ("decompressRegionCount" ::: Word32) -> ("pDecompressMemoryRegions" ::: Ptr DecompressMemoryRegionNV) -> IO ())
+  , pVkCmdDecompressMemoryIndirectCountNV :: FunPtr (Ptr CommandBuffer_T -> ("indirectCommandsAddress" ::: DeviceAddress) -> ("indirectCommandsCountAddress" ::: DeviceAddress) -> ("stride" ::: Word32) -> IO ())
   , pVkCreateCuModuleNVX :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr CuModuleCreateInfoNVX) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pModule" ::: Ptr CuModuleNVX) -> IO Result)
   , pVkCreateCuFunctionNVX :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr CuFunctionCreateInfoNVX) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pFunction" ::: Ptr CuFunctionNVX) -> IO Result)
   , pVkDestroyCuModuleNVX :: FunPtr (Ptr Device_T -> CuModuleNVX -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
@@ -1654,7 +1660,15 @@
     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)
@@ -1782,6 +1796,8 @@
   vkCmdBlitImage <- getDeviceProcAddr' handle (Ptr "vkCmdBlitImage"#)
   vkCmdCopyBufferToImage <- getDeviceProcAddr' handle (Ptr "vkCmdCopyBufferToImage"#)
   vkCmdCopyImageToBuffer <- getDeviceProcAddr' handle (Ptr "vkCmdCopyImageToBuffer"#)
+  vkCmdCopyMemoryIndirectNV <- getDeviceProcAddr' handle (Ptr "vkCmdCopyMemoryIndirectNV"#)
+  vkCmdCopyMemoryToImageIndirectNV <- getDeviceProcAddr' handle (Ptr "vkCmdCopyMemoryToImageIndirectNV"#)
   vkCmdUpdateBuffer <- getDeviceProcAddr' handle (Ptr "vkCmdUpdateBuffer"#)
   vkCmdFillBuffer <- getDeviceProcAddr' handle (Ptr "vkCmdFillBuffer"#)
   vkCmdClearColorImage <- getDeviceProcAddr' handle (Ptr "vkCmdClearColorImage"#)
@@ -2120,6 +2136,8 @@
                                                  , (Ptr "vkCmdWriteTimestamp2"#) ]
   vkCmdWriteBufferMarker2AMD <- getDeviceProcAddr' handle (Ptr "vkCmdWriteBufferMarker2AMD"#)
   vkGetQueueCheckpointData2NV <- getDeviceProcAddr' handle (Ptr "vkGetQueueCheckpointData2NV"#)
+  vkCmdDecompressMemoryNV <- getDeviceProcAddr' handle (Ptr "vkCmdDecompressMemoryNV"#)
+  vkCmdDecompressMemoryIndirectCountNV <- getDeviceProcAddr' handle (Ptr "vkCmdDecompressMemoryIndirectCountNV"#)
   vkCreateCuModuleNVX <- getDeviceProcAddr' handle (Ptr "vkCreateCuModuleNVX"#)
   vkCreateCuFunctionNVX <- getDeviceProcAddr' handle (Ptr "vkCreateCuFunctionNVX"#)
   vkDestroyCuModuleNVX <- getDeviceProcAddr' handle (Ptr "vkDestroyCuModuleNVX"#)
@@ -2271,6 +2289,8 @@
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr ImageBlit) -> Filter -> IO ()) vkCmdBlitImage)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("srcBuffer" ::: Buffer) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr BufferImageCopy) -> IO ()) vkCmdCopyBufferToImage)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("dstBuffer" ::: Buffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr BufferImageCopy) -> IO ()) vkCmdCopyImageToBuffer)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("copyBufferAddress" ::: DeviceAddress) -> ("copyCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()) vkCmdCopyMemoryIndirectNV)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("copyBufferAddress" ::: DeviceAddress) -> ("copyCount" ::: Word32) -> ("stride" ::: Word32) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("pImageSubresources" ::: Ptr ImageSubresourceLayers) -> IO ()) vkCmdCopyMemoryToImageIndirectNV)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> ("dataSize" ::: DeviceSize) -> ("pData" ::: Ptr ()) -> IO ()) vkCmdUpdateBuffer)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> DeviceSize -> ("data" ::: Word32) -> IO ()) vkCmdFillBuffer)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> Image -> ImageLayout -> ("pColor" ::: Ptr ClearColorValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr ImageSubresourceRange) -> IO ()) vkCmdClearColorImage)
@@ -2544,6 +2564,8 @@
     (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineStageFlags2 -> QueryPool -> ("query" ::: Word32) -> IO ()) vkCmdWriteTimestamp2)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineStageFlags2 -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> ("marker" ::: Word32) -> IO ()) vkCmdWriteBufferMarker2AMD)
     (castFunPtr @_ @(Ptr Queue_T -> ("pCheckpointDataCount" ::: Ptr Word32) -> ("pCheckpointData" ::: Ptr CheckpointData2NV) -> IO ()) vkGetQueueCheckpointData2NV)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("decompressRegionCount" ::: Word32) -> ("pDecompressMemoryRegions" ::: Ptr DecompressMemoryRegionNV) -> IO ()) vkCmdDecompressMemoryNV)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("indirectCommandsAddress" ::: DeviceAddress) -> ("indirectCommandsCountAddress" ::: DeviceAddress) -> ("stride" ::: Word32) -> IO ()) vkCmdDecompressMemoryIndirectCountNV)
     (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr CuModuleCreateInfoNVX) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pModule" ::: Ptr CuModuleNVX) -> IO Result) vkCreateCuModuleNVX)
     (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr CuFunctionCreateInfoNVX) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pFunction" ::: Ptr CuFunctionNVX) -> IO Result) vkCreateCuFunctionNVX)
     (castFunPtr @_ @(Ptr Device_T -> CuModuleNVX -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyCuModuleNVX)
diff --git a/src/Vulkan/Extensions.hs b/src/Vulkan/Extensions.hs
--- a/src/Vulkan/Extensions.hs
+++ b/src/Vulkan/Extensions.hs
@@ -255,6 +255,7 @@
                           , module Vulkan.Extensions.VK_NV_clip_space_w_scaling
                           , module Vulkan.Extensions.VK_NV_compute_shader_derivatives
                           , module Vulkan.Extensions.VK_NV_cooperative_matrix
+                          , module Vulkan.Extensions.VK_NV_copy_memory_indirect
                           , module Vulkan.Extensions.VK_NV_corner_sampled_image
                           , module Vulkan.Extensions.VK_NV_coverage_reduction_mode
                           , module Vulkan.Extensions.VK_NV_dedicated_allocation
@@ -275,10 +276,12 @@
                           , module Vulkan.Extensions.VK_NV_glsl_shader
                           , module Vulkan.Extensions.VK_NV_inherited_viewport_scissor
                           , module Vulkan.Extensions.VK_NV_linear_color_attachment
+                          , module Vulkan.Extensions.VK_NV_memory_decompression
                           , module Vulkan.Extensions.VK_NV_mesh_shader
                           , module Vulkan.Extensions.VK_NV_optical_flow
                           , module Vulkan.Extensions.VK_NV_present_barrier
                           , module Vulkan.Extensions.VK_NV_ray_tracing
+                          , module Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder
                           , module Vulkan.Extensions.VK_NV_ray_tracing_motion_blur
                           , module Vulkan.Extensions.VK_NV_representative_fragment_test
                           , module Vulkan.Extensions.VK_NV_sample_mask_override_coverage
@@ -557,6 +560,7 @@
 import Vulkan.Extensions.VK_NV_clip_space_w_scaling
 import Vulkan.Extensions.VK_NV_compute_shader_derivatives
 import Vulkan.Extensions.VK_NV_cooperative_matrix
+import Vulkan.Extensions.VK_NV_copy_memory_indirect
 import Vulkan.Extensions.VK_NV_corner_sampled_image
 import Vulkan.Extensions.VK_NV_coverage_reduction_mode
 import Vulkan.Extensions.VK_NV_dedicated_allocation
@@ -577,10 +581,12 @@
 import Vulkan.Extensions.VK_NV_glsl_shader
 import Vulkan.Extensions.VK_NV_inherited_viewport_scissor
 import Vulkan.Extensions.VK_NV_linear_color_attachment
+import Vulkan.Extensions.VK_NV_memory_decompression
 import Vulkan.Extensions.VK_NV_mesh_shader
 import Vulkan.Extensions.VK_NV_optical_flow
 import Vulkan.Extensions.VK_NV_present_barrier
 import Vulkan.Extensions.VK_NV_ray_tracing
+import Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder
 import Vulkan.Extensions.VK_NV_ray_tracing_motion_blur
 import Vulkan.Extensions.VK_NV_representative_fragment_test
 import Vulkan.Extensions.VK_NV_sample_mask_override_coverage
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
@@ -200,6 +200,7 @@
 import Vulkan.Extensions.VK_NV_acquire_winrt_display (pattern NV_ACQUIRE_WINRT_DISPLAY_EXTENSION_NAME)
 import Vulkan.Extensions.VK_NV_compute_shader_derivatives (pattern NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME)
 import Vulkan.Extensions.VK_NV_cooperative_matrix (pattern NV_COOPERATIVE_MATRIX_EXTENSION_NAME)
+import Vulkan.Extensions.VK_NV_copy_memory_indirect (pattern NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME)
 import Vulkan.Extensions.VK_NV_corner_sampled_image (pattern NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME)
 import Vulkan.Extensions.VK_NV_coverage_reduction_mode (pattern NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME)
 import Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing (pattern NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME)
@@ -213,10 +214,12 @@
 import Vulkan.Extensions.VK_NV_fragment_shader_barycentric (pattern NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME)
 import Vulkan.Extensions.VK_NV_fragment_shading_rate_enums (pattern NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME)
 import Vulkan.Extensions.VK_NV_framebuffer_mixed_samples (pattern NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME)
+import Vulkan.Extensions.VK_NV_memory_decompression (pattern NV_MEMORY_DECOMPRESSION_EXTENSION_NAME)
 import Vulkan.Extensions.VK_NV_mesh_shader (pattern NV_MESH_SHADER_EXTENSION_NAME)
 import Vulkan.Extensions.VK_NV_optical_flow (pattern NV_OPTICAL_FLOW_EXTENSION_NAME)
 import Vulkan.Extensions.VK_NV_present_barrier (pattern NV_PRESENT_BARRIER_EXTENSION_NAME)
 import Vulkan.Extensions.VK_NV_ray_tracing (pattern NV_RAY_TRACING_EXTENSION_NAME)
+import Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder (pattern NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME)
 import Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (pattern NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME)
 import Vulkan.Extensions.VK_NV_scissor_exclusive (pattern NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME)
 import Vulkan.Extensions.VK_NV_shader_image_footprint (pattern NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME)
@@ -797,6 +800,14 @@
     [ KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
     , EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME
     ]
+  NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME ->
+    [ KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
+    , KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME
+    ]
+  NV_MEMORY_DECOMPRESSION_EXTENSION_NAME ->
+    [ KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
+    , KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME
+    ]
   GOOGLE_SURFACELESS_QUERY_EXTENSION_NAME -> [KHR_SURFACE_EXTENSION_NAME]
   EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_EXTENSION_NAME -> [EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME]
   QCOM_IMAGE_PROCESSING_EXTENSION_NAME ->
@@ -818,6 +829,17 @@
   EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]
   QCOM_TILE_PROPERTIES_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]
   SEC_AMIGO_PROFILING_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]
+  NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME ->
+    [ KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME
+    , KHR_SPIRV_1_4_EXTENSION_NAME
+    , KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME
+    , KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME
+    , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
+    , EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
+    , KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME
+    , KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME
+    , KHR_MAINTENANCE_3_EXTENSION_NAME
+    ]
   EXT_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME ->
     [ KHR_MAINTENANCE_3_EXTENSION_NAME
     , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
diff --git a/src/Vulkan/Extensions/VK_EXT_mesh_shader.hs b/src/Vulkan/Extensions/VK_EXT_mesh_shader.hs
--- a/src/Vulkan/Extensions/VK_EXT_mesh_shader.hs
+++ b/src/Vulkan/Extensions/VK_EXT_mesh_shader.hs
@@ -464,9 +464,10 @@
 -- -   #VUID-vkCmdDrawMeshTasksEXT-None-02699# Descriptors in each bound
 --     descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid if they are statically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command
+--     be valid as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
+--     bound to the pipeline bind point used by this command
 --
 -- -   #VUID-vkCmdDrawMeshTasksEXT-None-02700# A valid pipeline /must/ be
 --     bound to the pipeline bind point used by this command
@@ -2172,9 +2173,10 @@
 -- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-02699# Descriptors in each
 --     bound descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid if they are statically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command
+--     be valid as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
+--     bound to the pipeline bind point used by this command
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-02700# A valid pipeline
 --     /must/ be bound to the pipeline bind point used by this command
@@ -3871,9 +3873,10 @@
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-02699# Descriptors in
 --     each bound descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid if they are statically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command
+--     be valid as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
+--     bound to the pipeline bind point used by this command
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-02700# A valid
 --     pipeline /must/ be bound to the pipeline bind point used by this
diff --git a/src/Vulkan/Extensions/VK_EXT_multi_draw.hs b/src/Vulkan/Extensions/VK_EXT_multi_draw.hs
--- a/src/Vulkan/Extensions/VK_EXT_multi_draw.hs
+++ b/src/Vulkan/Extensions/VK_EXT_multi_draw.hs
@@ -330,9 +330,10 @@
 -- -   #VUID-vkCmdDrawMultiEXT-None-02699# Descriptors in each bound
 --     descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid if they are statically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command
+--     be valid as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
+--     bound to the pipeline bind point used by this command
 --
 -- -   #VUID-vkCmdDrawMultiEXT-None-02700# A valid pipeline /must/ be bound
 --     to the pipeline bind point used by this command
@@ -1794,7 +1795,7 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
 --     is 'Vulkan.Core10.FundamentalTypes.FALSE', then the
 --     @primitiveTopology@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
 --     /must/ be of the same
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
 --     as the pipeline
@@ -1841,9 +1842,9 @@
 --
 -- -   #VUID-vkCmdDrawMultiEXT-None-04879# If the bound graphics pipeline
 --     state was created with the
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
 --     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command
 --
@@ -2101,9 +2102,10 @@
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-None-02699# Descriptors in each bound
 --     descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid if they are statically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command
+--     be valid as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
+--     bound to the pipeline bind point used by this command
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-None-02700# A valid pipeline /must/
 --     be bound to the pipeline bind point used by this command
@@ -3565,7 +3567,7 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
 --     is 'Vulkan.Core10.FundamentalTypes.FALSE', then the
 --     @primitiveTopology@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
 --     /must/ be of the same
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
 --     as the pipeline
@@ -3612,9 +3614,9 @@
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-None-04879# If the bound graphics
 --     pipeline state was created with the
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
 --     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command
 --
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
@@ -1516,9 +1516,10 @@
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-02699# Descriptors in each
 --     bound descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid if they are statically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command
+--     be valid as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
+--     bound to the pipeline bind point used by this command
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-02700# A valid pipeline
 --     /must/ be bound to the pipeline bind point used by this command
@@ -2962,7 +2963,7 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
 --     is 'Vulkan.Core10.FundamentalTypes.FALSE', then the
 --     @primitiveTopology@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
 --     /must/ be of the same
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
 --     as the pipeline
@@ -3009,9 +3010,9 @@
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-04879# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
 --     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command
 --
diff --git a/src/Vulkan/Extensions/VK_HUAWEI_subpass_shading.hs b/src/Vulkan/Extensions/VK_HUAWEI_subpass_shading.hs
--- a/src/Vulkan/Extensions/VK_HUAWEI_subpass_shading.hs
+++ b/src/Vulkan/Extensions/VK_HUAWEI_subpass_shading.hs
@@ -626,9 +626,10 @@
 -- -   #VUID-vkCmdSubpassShadingHUAWEI-None-02699# Descriptors in each
 --     bound descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid if they are statically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command
+--     be valid as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
+--     bound to the pipeline bind point used by this command
 --
 -- -   #VUID-vkCmdSubpassShadingHUAWEI-None-02700# A valid pipeline /must/
 --     be bound to the pipeline bind point used by this command
diff --git a/src/Vulkan/Extensions/VK_IMG_format_pvrtc.hs b/src/Vulkan/Extensions/VK_IMG_format_pvrtc.hs
--- a/src/Vulkan/Extensions/VK_IMG_format_pvrtc.hs
+++ b/src/Vulkan/Extensions/VK_IMG_format_pvrtc.hs
@@ -21,6 +21,10 @@
 --
 --     -   Requires support for Vulkan 1.0
 --
+-- [__Deprecation state__]
+--
+--     -   /Deprecated/ without replacement
+--
 -- [__Contact__]
 --
 --     -   Stuart Smith
@@ -42,6 +46,11 @@
 -- @VK_IMG_format_pvrtc@ provides additional texture compression
 -- functionality specific to Imagination Technologies PowerVR Texture
 -- compression format (called PVRTC).
+--
+-- == Deprecation
+--
+-- Both PVRTC1 and PVRTC2 are slower than standard image formats on PowerVR
+-- GPUs, and support will be removed from future hardware.
 --
 -- == New Enum Constants
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_external_memory.hs b/src/Vulkan/Extensions/VK_KHR_external_memory.hs
--- a/src/Vulkan/Extensions/VK_KHR_external_memory.hs
+++ b/src/Vulkan/Extensions/VK_KHR_external_memory.hs
@@ -54,7 +54,7 @@
 --
 --     -   Jason Ekstrand, Intel
 --
---     -   Ian Elliot, Google
+--     -   Ian Elliott, Google
 --
 --     -   Jesse Hall, Google
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_external_memory_capabilities.hs b/src/Vulkan/Extensions/VK_KHR_external_memory_capabilities.hs
--- a/src/Vulkan/Extensions/VK_KHR_external_memory_capabilities.hs
+++ b/src/Vulkan/Extensions/VK_KHR_external_memory_capabilities.hs
@@ -51,7 +51,7 @@
 --
 -- [__Contributors__]
 --
---     -   Ian Elliot, Google
+--     -   Ian Elliott, Google
 --
 --     -   Jesse Hall, Google
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_present_wait.hs b/src/Vulkan/Extensions/VK_KHR_present_wait.hs
--- a/src/Vulkan/Extensions/VK_KHR_present_wait.hs
+++ b/src/Vulkan/Extensions/VK_KHR_present_wait.hs
@@ -262,7 +262,8 @@
 -- There is no requirement for any precise timing relationship between the
 -- presentation of the image to the user and the update of the presentId
 -- value, but implementations /should/ make this as close as possible to
--- the presentation of the first pixel in the new image to the user.
+-- the presentation of the first pixel in the next image being presented to
+-- the user.
 --
 -- The call to 'waitForPresentKHR' will block until either the presentId
 -- associated with @swapchain@ is greater than or equal to @presentId@, or
diff --git a/src/Vulkan/Extensions/VK_KHR_ray_tracing_maintenance1.hs b/src/Vulkan/Extensions/VK_KHR_ray_tracing_maintenance1.hs
--- a/src/Vulkan/Extensions/VK_KHR_ray_tracing_maintenance1.hs
+++ b/src/Vulkan/Extensions/VK_KHR_ray_tracing_maintenance1.hs
@@ -400,9 +400,10 @@
 -- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-02699# Descriptors in each
 --     bound descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid if they are statically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command
+--     be valid as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
+--     bound to the pipeline bind point used by this command
 --
 -- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-02700# A valid pipeline /must/
 --     be bound to the pipeline bind point used by this command
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
@@ -1023,9 +1023,10 @@
 -- -   #VUID-vkCmdTraceRaysKHR-None-02699# Descriptors in each bound
 --     descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid if they are statically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command
+--     be valid as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
+--     bound to the pipeline bind point used by this command
 --
 -- -   #VUID-vkCmdTraceRaysKHR-None-02700# A valid pipeline /must/ be bound
 --     to the pipeline bind point used by this command
@@ -2107,9 +2108,10 @@
 -- -   #VUID-vkCmdTraceRaysIndirectKHR-None-02699# Descriptors in each
 --     bound descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid if they are statically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command
+--     be valid as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
+--     bound to the pipeline bind point used by this command
 --
 -- -   #VUID-vkCmdTraceRaysIndirectKHR-None-02700# A valid pipeline /must/
 --     be bound to the pipeline bind point used by this command
diff --git a/src/Vulkan/Extensions/VK_NV_copy_memory_indirect.hs b/src/Vulkan/Extensions/VK_NV_copy_memory_indirect.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_NV_copy_memory_indirect.hs
@@ -0,0 +1,851 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_NV_copy_memory_indirect - device extension
+--
+-- == VK_NV_copy_memory_indirect
+--
+-- [__Name String__]
+--     @VK_NV_copy_memory_indirect@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     427
+--
+-- [__Revision__]
+--     1
+--
+-- [__Extension and Version Dependencies__]
+--
+--     -   Requires support for Vulkan 1.0
+--
+--     -   Requires @VK_KHR_get_physical_device_properties2@ to be enabled
+--         for any device-level functionality
+--
+--     -   Requires @VK_KHR_buffer_device_address@ to be enabled for any
+--         device-level functionality
+--
+-- [__Contact__]
+--
+--     -   Vikram Kushwaha
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_NV_copy_memory_indirect] @vkushwaha-nv%0A*Here describe the issue or question you have about the VK_NV_copy_memory_indirect extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2022-10-14
+--
+-- [__Contributors__]
+--
+--     -   Vikram Kushwaha, NVIDIA
+--
+--     -   Jeff Bolz, NVIDIA
+--
+--     -   Christoph Kubisch, NVIDIA
+--
+--     -   Daniel Koch, NVIDIA
+--
+-- == Description
+--
+-- This extension adds support for performing copies between memory and
+-- image regions using indirect parameters that are read by the device from
+-- a buffer during execution. This functionality /may/ be useful for
+-- performing copies where the copy parameters are not known during the
+-- command buffer creation time.
+--
+-- == New Commands
+--
+-- -   'cmdCopyMemoryIndirectNV'
+--
+-- -   'cmdCopyMemoryToImageIndirectNV'
+--
+-- == New Structures
+--
+-- -   'CopyMemoryIndirectCommandNV'
+--
+-- -   'CopyMemoryToImageIndirectCommandNV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceCopyMemoryIndirectFeaturesNV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceCopyMemoryIndirectPropertiesNV'
+--
+-- == New Enum Constants
+--
+-- -   'NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME'
+--
+-- -   'NV_COPY_MEMORY_INDIRECT_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV'
+--
+-- == Version History
+--
+-- -   Revision 1, 2022-10-14 (Vikram Kushwaha)
+--
+--     -   Initial draft
+--
+-- == See Also
+--
+-- 'CopyMemoryIndirectCommandNV', 'CopyMemoryToImageIndirectCommandNV',
+-- 'PhysicalDeviceCopyMemoryIndirectFeaturesNV',
+-- 'PhysicalDeviceCopyMemoryIndirectPropertiesNV',
+-- 'cmdCopyMemoryIndirectNV', 'cmdCopyMemoryToImageIndirectNV'
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_copy_memory_indirect Vulkan Specification>
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_NV_copy_memory_indirect  ( cmdCopyMemoryIndirectNV
+                                                     , cmdCopyMemoryToImageIndirectNV
+                                                     , CopyMemoryIndirectCommandNV(..)
+                                                     , CopyMemoryToImageIndirectCommandNV(..)
+                                                     , PhysicalDeviceCopyMemoryIndirectFeaturesNV(..)
+                                                     , PhysicalDeviceCopyMemoryIndirectPropertiesNV(..)
+                                                     , NV_COPY_MEMORY_INDIRECT_SPEC_VERSION
+                                                     , pattern NV_COPY_MEMORY_INDIRECT_SPEC_VERSION
+                                                     , NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME
+                                                     , pattern NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME
+                                                     ) where
+
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Foreign.Marshal.Alloc (allocaBytes)
+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 qualified Data.Vector (imapM_)
+import qualified Data.Vector (length)
+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 Data.Vector (Vector)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Handles (CommandBuffer)
+import Vulkan.Core10.Handles (CommandBuffer(..))
+import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
+import Vulkan.Core10.Handles (CommandBuffer_T)
+import Vulkan.Core10.FundamentalTypes (DeviceAddress)
+import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyMemoryIndirectNV))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyMemoryToImageIndirectNV))
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (Extent3D)
+import Vulkan.Core10.Handles (Image)
+import Vulkan.Core10.Handles (Image(..))
+import Vulkan.Core10.Enums.ImageLayout (ImageLayout)
+import Vulkan.Core10.Enums.ImageLayout (ImageLayout(..))
+import Vulkan.Core10.CommandBufferBuilding (ImageSubresourceLayers)
+import Vulkan.Core10.FundamentalTypes (Offset3D)
+import Vulkan.Core10.Enums.QueueFlagBits (QueueFlags)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdCopyMemoryIndirectNV
+  :: FunPtr (Ptr CommandBuffer_T -> DeviceAddress -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> DeviceAddress -> Word32 -> Word32 -> IO ()
+
+-- | vkCmdCopyMemoryIndirectNV - Copy data between memory regions
+--
+-- = Description
+--
+-- Each region read from @copyBufferAddress@ is copied from the source
+-- region to the specified destination region. The results are undefined if
+-- any of the source and destination regions overlap in memory.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdCopyMemoryIndirectNV-None-07653# The
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-indirectCopy indirect copies>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdCopyMemoryIndirectNV-copyBufferAddress-07654#
+--     @copyBufferAddress@ /must/ be 4 byte aligned
+--
+-- -   #VUID-vkCmdCopyMemoryIndirectNV-stride-07655# @stride@ /must/ be a
+--     multiple of @4@ and /must/ be greater than or equal to
+--     sizeof('CopyMemoryIndirectCommandNV')
+--
+-- -   #VUID-vkCmdCopyMemoryIndirectNV-commandBuffer-07656# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support at least one of the
+--     'PhysicalDeviceCopyMemoryIndirectPropertiesNV'::@supportedQueues@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdCopyMemoryIndirectNV-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdCopyMemoryIndirectNV-commandBuffer-recording#
+--     @commandBuffer@ /must/ be in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>
+--
+-- -   #VUID-vkCmdCopyMemoryIndirectNV-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support transfer, graphics, or compute
+--     operations
+--
+-- -   #VUID-vkCmdCopyMemoryIndirectNV-renderpass# This command /must/ only
+--     be called outside of a render pass instance
+--
+-- -   #VUID-vkCmdCopyMemoryIndirectNV-videocoding# This command /must/
+--     only be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Transfer                                                                                                              | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Graphics                                                                                                              |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_copy_memory_indirect VK_NV_copy_memory_indirect>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+cmdCopyMemoryIndirectNV :: forall io
+                         . (MonadIO io)
+                        => -- | @commandBuffer@ is the command buffer into which the command will be
+                           -- recorded.
+                           CommandBuffer
+                        -> -- | @copyBufferAddress@ is the buffer address specifying the copy
+                           -- parameters. This buffer is laid out in memory as an array of
+                           -- 'CopyMemoryIndirectCommandNV' structures.
+                           ("copyBufferAddress" ::: DeviceAddress)
+                        -> -- | @copyCount@ is the number of copies to execute, and can be zero.
+                           ("copyCount" ::: Word32)
+                        -> -- | @stride@ is the stride in bytes between successive sets of copy
+                           -- parameters.
+                           ("stride" ::: Word32)
+                        -> io ()
+cmdCopyMemoryIndirectNV commandBuffer
+                          copyBufferAddress
+                          copyCount
+                          stride = liftIO $ do
+  let vkCmdCopyMemoryIndirectNVPtr = pVkCmdCopyMemoryIndirectNV (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdCopyMemoryIndirectNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyMemoryIndirectNV is null" Nothing Nothing
+  let vkCmdCopyMemoryIndirectNV' = mkVkCmdCopyMemoryIndirectNV vkCmdCopyMemoryIndirectNVPtr
+  traceAroundEvent "vkCmdCopyMemoryIndirectNV" (vkCmdCopyMemoryIndirectNV'
+                                                  (commandBufferHandle (commandBuffer))
+                                                  (copyBufferAddress)
+                                                  (copyCount)
+                                                  (stride))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdCopyMemoryToImageIndirectNV
+  :: FunPtr (Ptr CommandBuffer_T -> DeviceAddress -> Word32 -> Word32 -> Image -> ImageLayout -> Ptr ImageSubresourceLayers -> IO ()) -> Ptr CommandBuffer_T -> DeviceAddress -> Word32 -> Word32 -> Image -> ImageLayout -> Ptr ImageSubresourceLayers -> IO ()
+
+-- | vkCmdCopyMemoryToImageIndirectNV - Copy data from a memory region into
+-- an image
+--
+-- = Description
+--
+-- Each region in @copyBufferAddress@ is copied from the source memory
+-- region to an image region in the destination image. If the destination
+-- image is of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', the
+-- starting slice and number of slices to copy are specified in
+-- @pImageSubresources@::@baseArrayLayer@ and
+-- @pImageSubresources@::@layerCount@ respectively. The copy /must/ be
+-- performed on a queue that supports indirect copy operations, see
+-- 'PhysicalDeviceCopyMemoryIndirectPropertiesNV'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-None-07660# The
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-indirectCopy indirect copies>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-dstImage-07661# @dstImage@
+--     /must/ not be a protected image
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-aspectMask-07662# The
+--     @aspectMask@ member for every subresource in @pImageSubresources@
+--     /must/ only have a single bit set
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-dstImage-07663# The image
+--     region specified by each element in @copyBufferAddress@ /must/ be a
+--     region that is contained within @dstImage@
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-dstImage-07664# @dstImage@
+--     /must/ have been created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
+--     usage flag
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-dstImage-07665# If @dstImage@
+--     is non-sparse then it /must/ be bound completely and contiguously to
+--     a single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-dstImage-07666# @dstImage@
+--     /must/ have a sample count equal to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-dstImageLayout-07667#
+--     @dstImageLayout@ /must/ specify the layout of the image subresources
+--     of @dstImage@ at the time this command is executed on a
+--     'Vulkan.Core10.Handles.Device'
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-dstImageLayout-07669#
+--     @dstImageLayout@ /must/ be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-mipLevel-07670# The specified
+--     @mipLevel@ of each region /must/ be less than the @mipLevels@
+--     specified in 'Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@
+--     was created
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-baseArrayLayer-07671# The
+--     specified @baseArrayLayer@ + @layerCount@ of each region /must/ be
+--     less than or equal to the @arrayLayers@ specified in
+--     'Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was created
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-imageOffset-07672# The
+--     @imageOffset@ and @imageExtent@ members of each region /must/
+--     respect the image transfer granularity requirements of
+--     @commandBuffer@’s command pool’s queue family, as described in
+--     'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-dstImage-07673# @dstImage@
+--     /must/ not have been created with @flags@ containing
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-commandBuffer-07674# If the
+--     queue family used to create the 'Vulkan.Core10.Handles.CommandPool'
+--     which @commandBuffer@ was allocated from does not support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', for each
+--     region, the @aspectMask@ member of @pImageSubresources@ /must/ not
+--     be 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'.
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-imageOffset-07675# For each
+--     region in @copyBufferAddress@, @imageOffset.y@ and
+--     (@imageExtent.height@ + @imageOffset.y@) /must/ both be greater than
+--     or equal to @0@ and less than or equal to the height of the
+--     specified subresource
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-offset-07676# @offset@ /must/
+--     be 4 byte aligned
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-stride-07677# @stride@ /must/
+--     be a multiple of @4@ and /must/ be greater than or equal to
+--     sizeof('CopyMemoryToImageIndirectCommandNV')
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-dstImage-parameter#
+--     @dstImage@ /must/ be a valid 'Vulkan.Core10.Handles.Image' handle
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-dstImageLayout-parameter#
+--     @dstImageLayout@ /must/ be a valid
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-pImageSubresources-parameter#
+--     @pImageSubresources@ /must/ be a valid pointer to an array of
+--     @copyCount@ valid
+--     'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers'
+--     structures
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-commandBuffer-recording#
+--     @commandBuffer@ /must/ be in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support transfer, graphics, or compute
+--     operations
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-renderpass# This command
+--     /must/ only be called outside of a render pass instance
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-videocoding# This command
+--     /must/ only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-copyCount-arraylength#
+--     @copyCount@ /must/ be greater than @0@
+--
+-- -   #VUID-vkCmdCopyMemoryToImageIndirectNV-commonparent# Both of
+--     @commandBuffer@, and @dstImage@ /must/ have been created, allocated,
+--     or retrieved from the same 'Vulkan.Core10.Handles.Device'
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Transfer                                                                                                              | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Graphics                                                                                                              |                                                                                                                                        |
+-- |                                                                                                                            |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_copy_memory_indirect VK_NV_copy_memory_indirect>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
+-- 'Vulkan.Core10.Handles.Image',
+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
+-- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers'
+cmdCopyMemoryToImageIndirectNV :: forall io
+                                . (MonadIO io)
+                               => -- | @commandBuffer@ is the command buffer into which the command will be
+                                  -- recorded.
+                                  CommandBuffer
+                               -> -- | @copyBufferAddress@ is the buffer address specifying the copy
+                                  -- parameters. This buffer is laid out in memory as an array of
+                                  -- 'CopyMemoryToImageIndirectCommandNV' structures.
+                                  ("copyBufferAddress" ::: DeviceAddress)
+                               -> -- | @stride@ is the byte stride between successive sets of copy parameters.
+                                  ("stride" ::: Word32)
+                               -> -- | @dstImage@ is the destination image.
+                                  ("dstImage" ::: Image)
+                               -> -- | @dstImageLayout@ is the layout of the destination image subresources for
+                                  -- the copy.
+                                  ("dstImageLayout" ::: ImageLayout)
+                               -> -- | @pImageSubresources@ is a pointer to an array of size @copyCount@ of
+                                  -- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers' used to
+                                  -- specify the specific image subresource of the destination image data for
+                                  -- that copy.
+                                  ("imageSubresources" ::: Vector ImageSubresourceLayers)
+                               -> io ()
+cmdCopyMemoryToImageIndirectNV commandBuffer
+                                 copyBufferAddress
+                                 stride
+                                 dstImage
+                                 dstImageLayout
+                                 imageSubresources = liftIO . evalContT $ do
+  let vkCmdCopyMemoryToImageIndirectNVPtr = pVkCmdCopyMemoryToImageIndirectNV (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdCopyMemoryToImageIndirectNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyMemoryToImageIndirectNV is null" Nothing Nothing
+  let vkCmdCopyMemoryToImageIndirectNV' = mkVkCmdCopyMemoryToImageIndirectNV vkCmdCopyMemoryToImageIndirectNVPtr
+  pPImageSubresources <- ContT $ allocaBytes @ImageSubresourceLayers ((Data.Vector.length (imageSubresources)) * 16)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPImageSubresources `plusPtr` (16 * (i)) :: Ptr ImageSubresourceLayers) (e)) (imageSubresources)
+  lift $ traceAroundEvent "vkCmdCopyMemoryToImageIndirectNV" (vkCmdCopyMemoryToImageIndirectNV'
+                                                                (commandBufferHandle (commandBuffer))
+                                                                (copyBufferAddress)
+                                                                ((fromIntegral (Data.Vector.length $ (imageSubresources)) :: Word32))
+                                                                (stride)
+                                                                (dstImage)
+                                                                (dstImageLayout)
+                                                                (pPImageSubresources))
+  pure $ ()
+
+
+-- | VkCopyMemoryIndirectCommandNV - Structure specifying indirect memory
+-- region copy operation
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkCopyMemoryIndirectCommandNV-srcAddress-07657# The
+--     @srcAddress@ /must/ be 4 byte aligned
+--
+-- -   #VUID-VkCopyMemoryIndirectCommandNV-dstAddress-07658# The
+--     @dstAddress@ /must/ be 4 byte aligned
+--
+-- -   #VUID-VkCopyMemoryIndirectCommandNV-size-07659# The @size@ /must/ be
+--     4 byte aligned
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_copy_memory_indirect VK_NV_copy_memory_indirect>,
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
+data CopyMemoryIndirectCommandNV = CopyMemoryIndirectCommandNV
+  { -- | @srcAddress@ is the starting address of the source host or device memory
+    -- to copy from.
+    srcAddress :: DeviceAddress
+  , -- | @dstAddress@ is the starting address of the destination host or device
+    -- memory to copy to.
+    dstAddress :: DeviceAddress
+  , -- | @size@ is the size of the copy in bytes.
+    size :: DeviceSize
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CopyMemoryIndirectCommandNV)
+#endif
+deriving instance Show CopyMemoryIndirectCommandNV
+
+instance ToCStruct CopyMemoryIndirectCommandNV where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CopyMemoryIndirectCommandNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (srcAddress)
+    poke ((p `plusPtr` 8 :: Ptr DeviceAddress)) (dstAddress)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (size)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr DeviceAddress)) (zero)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)
+    f
+
+instance FromCStruct CopyMemoryIndirectCommandNV where
+  peekCStruct p = do
+    srcAddress <- peek @DeviceAddress ((p `plusPtr` 0 :: Ptr DeviceAddress))
+    dstAddress <- peek @DeviceAddress ((p `plusPtr` 8 :: Ptr DeviceAddress))
+    size <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
+    pure $ CopyMemoryIndirectCommandNV
+             srcAddress dstAddress size
+
+instance Storable CopyMemoryIndirectCommandNV where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero CopyMemoryIndirectCommandNV where
+  zero = CopyMemoryIndirectCommandNV
+           zero
+           zero
+           zero
+
+
+-- | VkCopyMemoryToImageIndirectCommandNV - Structure specifying indirect
+-- buffer image copy operation
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectCommandNV-srcAddress-07678# The
+--     @srcAddress@ /must/ be 4 byte aligned
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectCommandNV-bufferRowLength-07679#
+--     @bufferRowLength@ /must/ be @0@, or greater than or equal to the
+--     @width@ member of @imageExtent@
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectCommandNV-bufferImageHeight-07680#
+--     @bufferImageHeight@ /must/ be @0@, or greater than or equal to the
+--     @height@ member of @imageExtent@
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectCommandNV-imageOffset-07681#
+--     @imageOffset@ /must/ specify a valid offset in the destination image
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectCommandNV-imageExtent-07682#
+--     @imageExtent@ /must/ specify a valid region in the destination image
+--     and can be @0@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkCopyMemoryToImageIndirectCommandNV-imageSubresource-parameter#
+--     @imageSubresource@ /must/ be a valid
+--     'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers'
+--     structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_copy_memory_indirect VK_NV_copy_memory_indirect>,
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
+-- 'Vulkan.Core10.FundamentalTypes.Extent3D',
+-- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers',
+-- 'Vulkan.Core10.FundamentalTypes.Offset3D'
+data CopyMemoryToImageIndirectCommandNV = CopyMemoryToImageIndirectCommandNV
+  { -- | @srcAddress@ is the starting address of the source host or device memory
+    -- to copy from.
+    srcAddress :: DeviceAddress
+  , -- | @bufferRowLength@ and @bufferImageHeight@ specify in texels a subregion
+    -- of a larger two- or three-dimensional image in buffer memory, and
+    -- control the addressing calculations. If either of these values is zero,
+    -- that aspect of the buffer memory is considered to be tightly packed
+    -- according to the @imageExtent@.
+    bufferRowLength :: Word32
+  , -- No documentation found for Nested "VkCopyMemoryToImageIndirectCommandNV" "bufferImageHeight"
+    bufferImageHeight :: Word32
+  , -- | @imageSubresource@ is a
+    -- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers' used to
+    -- specify the specific image subresources of the image used for the
+    -- destination image data, which /must/ match the values specified in
+    -- @pImageSubresources@ parameter of 'cmdCopyMemoryToImageIndirectNV'
+    -- during command recording.
+    imageSubresource :: ImageSubresourceLayers
+  , -- | @imageOffset@ selects the initial @x@, @y@, @z@ offsets in texels of the
+    -- sub-region of the destination image data.
+    imageOffset :: Offset3D
+  , -- | @imageExtent@ is the size in texels of the destination image in @width@,
+    -- @height@ and @depth@.
+    imageExtent :: Extent3D
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CopyMemoryToImageIndirectCommandNV)
+#endif
+deriving instance Show CopyMemoryToImageIndirectCommandNV
+
+instance ToCStruct CopyMemoryToImageIndirectCommandNV where
+  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CopyMemoryToImageIndirectCommandNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (srcAddress)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (bufferRowLength)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (bufferImageHeight)
+    poke ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (imageSubresource)
+    poke ((p `plusPtr` 32 :: Ptr Offset3D)) (imageOffset)
+    poke ((p `plusPtr` 44 :: Ptr Extent3D)) (imageExtent)
+    f
+  cStructSize = 56
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr Offset3D)) (zero)
+    poke ((p `plusPtr` 44 :: Ptr Extent3D)) (zero)
+    f
+
+instance FromCStruct CopyMemoryToImageIndirectCommandNV where
+  peekCStruct p = do
+    srcAddress <- peek @DeviceAddress ((p `plusPtr` 0 :: Ptr DeviceAddress))
+    bufferRowLength <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
+    bufferImageHeight <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
+    imageSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers))
+    imageOffset <- peekCStruct @Offset3D ((p `plusPtr` 32 :: Ptr Offset3D))
+    imageExtent <- peekCStruct @Extent3D ((p `plusPtr` 44 :: Ptr Extent3D))
+    pure $ CopyMemoryToImageIndirectCommandNV
+             srcAddress
+             bufferRowLength
+             bufferImageHeight
+             imageSubresource
+             imageOffset
+             imageExtent
+
+instance Storable CopyMemoryToImageIndirectCommandNV where
+  sizeOf ~_ = 56
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero CopyMemoryToImageIndirectCommandNV where
+  zero = CopyMemoryToImageIndirectCommandNV
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceCopyMemoryIndirectFeaturesNV - Structure describing
+-- indirect copy features supported by an implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceCopyMemoryIndirectFeaturesNV' structure is
+-- included in the @pNext@ chain of the
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+-- structure passed to
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
+-- it is filled in to indicate whether each corresponding feature is
+-- supported. 'PhysicalDeviceCopyMemoryIndirectFeaturesNV' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_copy_memory_indirect VK_NV_copy_memory_indirect>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceCopyMemoryIndirectFeaturesNV = PhysicalDeviceCopyMemoryIndirectFeaturesNV
+  { -- | #features-indirectCopy# @indirectCopy@ indicates whether
+    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#indirect-copies indirect copies>
+    -- are supported.
+    indirectCopy :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceCopyMemoryIndirectFeaturesNV)
+#endif
+deriving instance Show PhysicalDeviceCopyMemoryIndirectFeaturesNV
+
+instance ToCStruct PhysicalDeviceCopyMemoryIndirectFeaturesNV where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceCopyMemoryIndirectFeaturesNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (indirectCopy))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceCopyMemoryIndirectFeaturesNV where
+  peekCStruct p = do
+    indirectCopy <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceCopyMemoryIndirectFeaturesNV
+             (bool32ToBool indirectCopy)
+
+instance Storable PhysicalDeviceCopyMemoryIndirectFeaturesNV where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceCopyMemoryIndirectFeaturesNV where
+  zero = PhysicalDeviceCopyMemoryIndirectFeaturesNV
+           zero
+
+
+-- | VkPhysicalDeviceCopyMemoryIndirectPropertiesNV - Structure describing
+-- supported queues for indirect copy
+--
+-- = Description
+--
+-- If the
+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-indirectCopy indirect copies>
+-- feature is supported, @supportedQueues@ /must/ return at least one
+-- supported queue.
+--
+-- If the 'PhysicalDeviceCopyMemoryIndirectPropertiesNV' structure is
+-- included in the @pNext@ chain of the
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+-- structure passed to
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2',
+-- it is filled in with each corresponding implementation-dependent
+-- property.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_copy_memory_indirect VK_NV_copy_memory_indirect>,
+-- 'Vulkan.Core10.Enums.QueueFlagBits.QueueFlags',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceCopyMemoryIndirectPropertiesNV = PhysicalDeviceCopyMemoryIndirectPropertiesNV
+  { -- | @supportedQueues@ is a bitmask of
+    -- 'Vulkan.Core10.Enums.QueueFlagBits.QueueFlagBits' indicating the queues
+    -- on which
+    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#indirect-copies indirect copy commands>
+    -- are supported.
+    supportedQueues :: QueueFlags }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceCopyMemoryIndirectPropertiesNV)
+#endif
+deriving instance Show PhysicalDeviceCopyMemoryIndirectPropertiesNV
+
+instance ToCStruct PhysicalDeviceCopyMemoryIndirectPropertiesNV where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceCopyMemoryIndirectPropertiesNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr QueueFlags)) (supportedQueues)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr QueueFlags)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceCopyMemoryIndirectPropertiesNV where
+  peekCStruct p = do
+    supportedQueues <- peek @QueueFlags ((p `plusPtr` 16 :: Ptr QueueFlags))
+    pure $ PhysicalDeviceCopyMemoryIndirectPropertiesNV
+             supportedQueues
+
+instance Storable PhysicalDeviceCopyMemoryIndirectPropertiesNV where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceCopyMemoryIndirectPropertiesNV where
+  zero = PhysicalDeviceCopyMemoryIndirectPropertiesNV
+           zero
+
+
+type NV_COPY_MEMORY_INDIRECT_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_NV_COPY_MEMORY_INDIRECT_SPEC_VERSION"
+pattern NV_COPY_MEMORY_INDIRECT_SPEC_VERSION :: forall a . Integral a => a
+pattern NV_COPY_MEMORY_INDIRECT_SPEC_VERSION = 1
+
+
+type NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME = "VK_NV_copy_memory_indirect"
+
+-- No documentation found for TopLevel "VK_NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME"
+pattern NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME = "VK_NV_copy_memory_indirect"
+
diff --git a/src/Vulkan/Extensions/VK_NV_copy_memory_indirect.hs-boot b/src/Vulkan/Extensions/VK_NV_copy_memory_indirect.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_NV_copy_memory_indirect.hs-boot
@@ -0,0 +1,153 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_NV_copy_memory_indirect - device extension
+--
+-- == VK_NV_copy_memory_indirect
+--
+-- [__Name String__]
+--     @VK_NV_copy_memory_indirect@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     427
+--
+-- [__Revision__]
+--     1
+--
+-- [__Extension and Version Dependencies__]
+--
+--     -   Requires support for Vulkan 1.0
+--
+--     -   Requires @VK_KHR_get_physical_device_properties2@ to be enabled
+--         for any device-level functionality
+--
+--     -   Requires @VK_KHR_buffer_device_address@ to be enabled for any
+--         device-level functionality
+--
+-- [__Contact__]
+--
+--     -   Vikram Kushwaha
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_NV_copy_memory_indirect] @vkushwaha-nv%0A*Here describe the issue or question you have about the VK_NV_copy_memory_indirect extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2022-10-14
+--
+-- [__Contributors__]
+--
+--     -   Vikram Kushwaha, NVIDIA
+--
+--     -   Jeff Bolz, NVIDIA
+--
+--     -   Christoph Kubisch, NVIDIA
+--
+--     -   Daniel Koch, NVIDIA
+--
+-- == Description
+--
+-- This extension adds support for performing copies between memory and
+-- image regions using indirect parameters that are read by the device from
+-- a buffer during execution. This functionality /may/ be useful for
+-- performing copies where the copy parameters are not known during the
+-- command buffer creation time.
+--
+-- == New Commands
+--
+-- -   'cmdCopyMemoryIndirectNV'
+--
+-- -   'cmdCopyMemoryToImageIndirectNV'
+--
+-- == New Structures
+--
+-- -   'CopyMemoryIndirectCommandNV'
+--
+-- -   'CopyMemoryToImageIndirectCommandNV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceCopyMemoryIndirectFeaturesNV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceCopyMemoryIndirectPropertiesNV'
+--
+-- == New Enum Constants
+--
+-- -   'NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME'
+--
+-- -   'NV_COPY_MEMORY_INDIRECT_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV'
+--
+-- == Version History
+--
+-- -   Revision 1, 2022-10-14 (Vikram Kushwaha)
+--
+--     -   Initial draft
+--
+-- == See Also
+--
+-- 'CopyMemoryIndirectCommandNV', 'CopyMemoryToImageIndirectCommandNV',
+-- 'PhysicalDeviceCopyMemoryIndirectFeaturesNV',
+-- 'PhysicalDeviceCopyMemoryIndirectPropertiesNV',
+-- 'cmdCopyMemoryIndirectNV', 'cmdCopyMemoryToImageIndirectNV'
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_copy_memory_indirect Vulkan Specification>
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_NV_copy_memory_indirect  ( CopyMemoryIndirectCommandNV
+                                                     , CopyMemoryToImageIndirectCommandNV
+                                                     , PhysicalDeviceCopyMemoryIndirectFeaturesNV
+                                                     , PhysicalDeviceCopyMemoryIndirectPropertiesNV
+                                                     ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data CopyMemoryIndirectCommandNV
+
+instance ToCStruct CopyMemoryIndirectCommandNV
+instance Show CopyMemoryIndirectCommandNV
+
+instance FromCStruct CopyMemoryIndirectCommandNV
+
+
+data CopyMemoryToImageIndirectCommandNV
+
+instance ToCStruct CopyMemoryToImageIndirectCommandNV
+instance Show CopyMemoryToImageIndirectCommandNV
+
+instance FromCStruct CopyMemoryToImageIndirectCommandNV
+
+
+data PhysicalDeviceCopyMemoryIndirectFeaturesNV
+
+instance ToCStruct PhysicalDeviceCopyMemoryIndirectFeaturesNV
+instance Show PhysicalDeviceCopyMemoryIndirectFeaturesNV
+
+instance FromCStruct PhysicalDeviceCopyMemoryIndirectFeaturesNV
+
+
+data PhysicalDeviceCopyMemoryIndirectPropertiesNV
+
+instance ToCStruct PhysicalDeviceCopyMemoryIndirectPropertiesNV
+instance Show PhysicalDeviceCopyMemoryIndirectPropertiesNV
+
+instance FromCStruct PhysicalDeviceCopyMemoryIndirectPropertiesNV
+
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
@@ -847,9 +847,10 @@
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-02699# Descriptors in
 --     each bound descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid if they are statically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command
+--     be valid as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
+--     bound to the pipeline bind point used by this command
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-02700# A valid pipeline
 --     /must/ be bound to the pipeline bind point used by this command
@@ -2293,7 +2294,7 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-dynamicPrimitiveTopologyUnrestricted dynamicPrimitiveTopologyUnrestricted>
 --     is 'Vulkan.Core10.FundamentalTypes.FALSE', then the
 --     @primitiveTopology@ parameter in the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
 --     /must/ be of the same
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
 --     as the pipeline
@@ -2340,9 +2341,9 @@
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-04879# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
 --     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command
 --
diff --git a/src/Vulkan/Extensions/VK_NV_linear_color_attachment.hs b/src/Vulkan/Extensions/VK_NV_linear_color_attachment.hs
--- a/src/Vulkan/Extensions/VK_NV_linear_color_attachment.hs
+++ b/src/Vulkan/Extensions/VK_NV_linear_color_attachment.hs
@@ -142,7 +142,7 @@
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV))
 -- | VkPhysicalDeviceLinearColorAttachmentFeaturesNV - Structure describing
 -- whether
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary Linear Color Attachment>
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-color-attachment Linear Color Attachment>
 -- rendering is supported by the implementation
 --
 -- = Members
@@ -171,7 +171,7 @@
 data PhysicalDeviceLinearColorAttachmentFeaturesNV = PhysicalDeviceLinearColorAttachmentFeaturesNV
   { -- | #features-linearColorAttachment# @linearColorAttachment@ indicates
     -- whether the implementation supports renderable
-    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary Linear Color Attachment>
+    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-linear-color-attachment Linear Color Attachment>
     linearColorAttachment :: Bool }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
diff --git a/src/Vulkan/Extensions/VK_NV_memory_decompression.hs b/src/Vulkan/Extensions/VK_NV_memory_decompression.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_NV_memory_decompression.hs
@@ -0,0 +1,746 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_NV_memory_decompression - device extension
+--
+-- == VK_NV_memory_decompression
+--
+-- [__Name String__]
+--     @VK_NV_memory_decompression@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     428
+--
+-- [__Revision__]
+--     1
+--
+-- [__Extension and Version Dependencies__]
+--
+--     -   Requires support for Vulkan 1.0
+--
+--     -   Requires @VK_KHR_get_physical_device_properties2@ to be enabled
+--         for any device-level functionality
+--
+--     -   Requires @VK_KHR_buffer_device_address@ to be enabled for any
+--         device-level functionality
+--
+-- [__Contact__]
+--
+--     -   Vikram Kushwaha
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_NV_memory_decompression] @vkushwaha-nv%0A*Here describe the issue or question you have about the VK_NV_memory_decompression extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2022-01-31
+--
+-- [__Contributors__]
+--
+--     -   Vikram Kushwaha, NVIDIA
+--
+--     -   Jeff Bolz, NVIDIA
+--
+--     -   Christoph Kubisch, NVIDIA
+--
+--     -   Piers Daniell, NVIDIA
+--
+-- == Description
+--
+-- This extension adds support for performing memory to memory
+-- decompression.
+--
+-- == New Commands
+--
+-- -   'cmdDecompressMemoryIndirectCountNV'
+--
+-- -   'cmdDecompressMemoryNV'
+--
+-- == New Structures
+--
+-- -   'DecompressMemoryRegionNV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceMemoryDecompressionFeaturesNV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceMemoryDecompressionPropertiesNV'
+--
+-- == New Enums
+--
+-- -   'MemoryDecompressionMethodFlagBitsNV'
+--
+-- == New Bitmasks
+--
+-- -   'MemoryDecompressionMethodFlagsNV'
+--
+-- == New Enum Constants
+--
+-- -   'NV_MEMORY_DECOMPRESSION_EXTENSION_NAME'
+--
+-- -   'NV_MEMORY_DECOMPRESSION_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV'
+--
+-- == Version History
+--
+-- -   Revision 1, 2022-01-31 (Vikram Kushwaha)
+--
+--     -   Initial draft
+--
+-- == See Also
+--
+-- 'DecompressMemoryRegionNV', 'MemoryDecompressionMethodFlagBitsNV',
+-- 'MemoryDecompressionMethodFlagsNV',
+-- 'PhysicalDeviceMemoryDecompressionFeaturesNV',
+-- 'PhysicalDeviceMemoryDecompressionPropertiesNV',
+-- 'cmdDecompressMemoryIndirectCountNV', 'cmdDecompressMemoryNV'
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_memory_decompression Vulkan Specification>
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_NV_memory_decompression  ( cmdDecompressMemoryNV
+                                                     , cmdDecompressMemoryIndirectCountNV
+                                                     , PhysicalDeviceMemoryDecompressionFeaturesNV(..)
+                                                     , PhysicalDeviceMemoryDecompressionPropertiesNV(..)
+                                                     , DecompressMemoryRegionNV(..)
+                                                     , MemoryDecompressionMethodFlagsNV
+                                                     , MemoryDecompressionMethodFlagBitsNV( MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV
+                                                                                          , ..
+                                                                                          )
+                                                     , NV_MEMORY_DECOMPRESSION_SPEC_VERSION
+                                                     , pattern NV_MEMORY_DECOMPRESSION_SPEC_VERSION
+                                                     , NV_MEMORY_DECOMPRESSION_EXTENSION_NAME
+                                                     , pattern NV_MEMORY_DECOMPRESSION_EXTENSION_NAME
+                                                     ) where
+
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Foreign.Marshal.Alloc (allocaBytes)
+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 qualified Data.Vector (imapM_)
+import qualified Data.Vector (length)
+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.Word (Word64)
+import Data.Kind (Type)
+import Control.Monad.Trans.Cont (ContT(..))
+import Data.Vector (Vector)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Handles (CommandBuffer)
+import Vulkan.Core10.Handles (CommandBuffer(..))
+import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
+import Vulkan.Core10.Handles (CommandBuffer_T)
+import Vulkan.Core10.FundamentalTypes (DeviceAddress)
+import Vulkan.Dynamic (DeviceCmds(pVkCmdDecompressMemoryIndirectCountNV))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdDecompressMemoryNV))
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.FundamentalTypes (Flags64)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDecompressMemoryNV
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr DecompressMemoryRegionNV -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr DecompressMemoryRegionNV -> IO ()
+
+-- | vkCmdDecompressMemoryNV - Decompress data between memory regions
+--
+-- = Description
+--
+-- Each region specified in @pDecompressMemoryRegions@ is decompressed from
+-- the source to destination region based on the specified decompression
+-- method.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdDecompressMemoryNV-None-07684#
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-memoryDecompression memoryDecompression>
+--     /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdDecompressMemoryNV-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdDecompressMemoryNV-pDecompressMemoryRegions-parameter#
+--     @pDecompressMemoryRegions@ /must/ be a valid pointer to an array of
+--     @decompressRegionCount@ valid 'DecompressMemoryRegionNV' structures
+--
+-- -   #VUID-vkCmdDecompressMemoryNV-commandBuffer-recording#
+--     @commandBuffer@ /must/ be in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>
+--
+-- -   #VUID-vkCmdDecompressMemoryNV-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics, or compute operations
+--
+-- -   #VUID-vkCmdDecompressMemoryNV-renderpass# This command /must/ only
+--     be called outside of a render pass instance
+--
+-- -   #VUID-vkCmdDecompressMemoryNV-videocoding# This command /must/ only
+--     be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdDecompressMemoryNV-decompressRegionCount-arraylength#
+--     @decompressRegionCount@ /must/ be greater than @0@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_memory_decompression VK_NV_memory_decompression>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'DecompressMemoryRegionNV'
+cmdDecompressMemoryNV :: forall io
+                       . (MonadIO io)
+                      => -- | @commandBuffer@ is the command buffer into which the command will be
+                         -- recorded.
+                         CommandBuffer
+                      -> -- | @pDecompressMemoryRegions@ is a pointer to an array of size
+                         -- @decompressRegionCount@ of 'DecompressMemoryRegionNV' structures used to
+                         -- specify the decompression parameters.
+                         ("decompressMemoryRegions" ::: Vector DecompressMemoryRegionNV)
+                      -> io ()
+cmdDecompressMemoryNV commandBuffer
+                        decompressMemoryRegions = liftIO . evalContT $ do
+  let vkCmdDecompressMemoryNVPtr = pVkCmdDecompressMemoryNV (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdDecompressMemoryNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDecompressMemoryNV is null" Nothing Nothing
+  let vkCmdDecompressMemoryNV' = mkVkCmdDecompressMemoryNV vkCmdDecompressMemoryNVPtr
+  pPDecompressMemoryRegions <- ContT $ allocaBytes @DecompressMemoryRegionNV ((Data.Vector.length (decompressMemoryRegions)) * 40)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPDecompressMemoryRegions `plusPtr` (40 * (i)) :: Ptr DecompressMemoryRegionNV) (e)) (decompressMemoryRegions)
+  lift $ traceAroundEvent "vkCmdDecompressMemoryNV" (vkCmdDecompressMemoryNV'
+                                                       (commandBufferHandle (commandBuffer))
+                                                       ((fromIntegral (Data.Vector.length $ (decompressMemoryRegions)) :: Word32))
+                                                       (pPDecompressMemoryRegions))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDecompressMemoryIndirectCountNV
+  :: FunPtr (Ptr CommandBuffer_T -> DeviceAddress -> DeviceAddress -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> DeviceAddress -> DeviceAddress -> Word32 -> IO ()
+
+-- | vkCmdDecompressMemoryIndirectCountNV - Indirect decompress data between
+-- memory regions
+--
+-- = Description
+--
+-- Each region specified in @indirectCommandsAddress@ is decompressed from
+-- the source to destination region based on the specified decompression
+-- method.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-None-07692#
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-memoryDecompression memoryDecompression>
+--     /must/ be enabled
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsAddress-07693#
+--     If @indirectCommandsAddress@ comes from a non-sparse buffer then it
+--     /must/ be bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsAddress-07694#
+--     The 'Vulkan.Core10.Handles.Buffer' that @indirectCommandsAddress@
+--     comes from /must/ have been created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     bit set
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-offset-07695# @offset@
+--     /must/ be a multiple of @4@
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsCountAddress-07696#
+--     If @indirectCommandsCountAddress@ comes from a non-sparse buffer
+--     then it /must/ be bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsCountAddress-07697#
+--     The 'Vulkan.Core10.Handles.Buffer' that
+--     @indirectCommandsCountAddress@ comes from /must/ have been created
+--     with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     bit set
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsCountAddress-07698#
+--     @indirectCommandsCountAddress@ /must/ be a multiple of @4@
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsCountAddress-07699#
+--     The count stored in @indirectCommandsCountAddress@ /must/ be less
+--     than or equal to
+--     'PhysicalDeviceMemoryDecompressionPropertiesNV'::@maxDecompressionIndirectCount@
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-stride-07700# @stride@
+--     /must/ be a multiple of @4@ and /must/ be greater than or equal to
+--     sizeof('DecompressMemoryRegionNV')
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsCountAddress-07701#
+--     If the count stored in @indirectCommandsCountAddress@ is equal to
+--     @1@, (@offset@ + sizeof('DecompressMemoryRegionNV')) /must/ be less
+--     than or equal to the size of the 'Vulkan.Core10.Handles.Buffer' that
+--     @indirectCommandsAddress@ comes from
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsCountAddress-07702#
+--     If the count stored in @indirectCommandsCountAddress@ is greater
+--     than @1@, @indirectCommandsAddress@ +
+--     sizeof('DecompressMemoryRegionNV') + (@stride@ × (count stored in
+--     @countBuffer@ - 1)) /must/ be less than or equal to the last valid
+--     address in the 'Vulkan.Core10.Handles.Buffer' that
+--     @indirectCommandsAddress@ was created from
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-commandBuffer-recording#
+--     @commandBuffer@ /must/ be in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-commandBuffer-cmdpool#
+--     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics, or compute operations
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-renderpass# This command
+--     /must/ only be called outside of a render pass instance
+--
+-- -   #VUID-vkCmdDecompressMemoryIndirectCountNV-videocoding# This command
+--     /must/ only be called outside of a video coding scope
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Outside                                                                                                                     | Graphics                                                                                                              | Action                                                                                                                                 |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_memory_decompression VK_NV_memory_decompression>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress'
+cmdDecompressMemoryIndirectCountNV :: forall io
+                                    . (MonadIO io)
+                                   => -- | @commandBuffer@ is the command buffer into which the command will be
+                                      -- recorded.
+                                      CommandBuffer
+                                   -> -- | @indirectCommandsAddress@ is the device address containing decompression
+                                      -- parameters laid out as an array of 'DecompressMemoryRegionNV'
+                                      -- structures.
+                                      ("indirectCommandsAddress" ::: DeviceAddress)
+                                   -> -- | @indirectCommandsCountAddress@ is the device address containing the
+                                      -- decompression count.
+                                      ("indirectCommandsCountAddress" ::: DeviceAddress)
+                                   -> -- | @stride@ is the byte stride between successive sets of decompression
+                                      -- parameters located starting from @indirectCommandsAddress@.
+                                      ("stride" ::: Word32)
+                                   -> io ()
+cmdDecompressMemoryIndirectCountNV commandBuffer
+                                     indirectCommandsAddress
+                                     indirectCommandsCountAddress
+                                     stride = liftIO $ do
+  let vkCmdDecompressMemoryIndirectCountNVPtr = pVkCmdDecompressMemoryIndirectCountNV (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdDecompressMemoryIndirectCountNVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDecompressMemoryIndirectCountNV is null" Nothing Nothing
+  let vkCmdDecompressMemoryIndirectCountNV' = mkVkCmdDecompressMemoryIndirectCountNV vkCmdDecompressMemoryIndirectCountNVPtr
+  traceAroundEvent "vkCmdDecompressMemoryIndirectCountNV" (vkCmdDecompressMemoryIndirectCountNV'
+                                                             (commandBufferHandle (commandBuffer))
+                                                             (indirectCommandsAddress)
+                                                             (indirectCommandsCountAddress)
+                                                             (stride))
+  pure $ ()
+
+
+-- | VkPhysicalDeviceMemoryDecompressionFeaturesNV - Structure describing if
+-- memory decompression is supported by an implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceMemoryDecompressionFeaturesNV' structure is
+-- included in the @pNext@ chain of the
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+-- structure passed to
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
+-- it is filled in to indicate whether each corresponding feature is
+-- supported. 'PhysicalDeviceMemoryDecompressionFeaturesNV' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_memory_decompression VK_NV_memory_decompression>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceMemoryDecompressionFeaturesNV = PhysicalDeviceMemoryDecompressionFeaturesNV
+  { -- | #features-memoryDecompression# @memoryDecompression@ indicates whether
+    -- memory decompression is supported.
+    memoryDecompression :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceMemoryDecompressionFeaturesNV)
+#endif
+deriving instance Show PhysicalDeviceMemoryDecompressionFeaturesNV
+
+instance ToCStruct PhysicalDeviceMemoryDecompressionFeaturesNV where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceMemoryDecompressionFeaturesNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (memoryDecompression))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceMemoryDecompressionFeaturesNV where
+  peekCStruct p = do
+    memoryDecompression <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceMemoryDecompressionFeaturesNV
+             (bool32ToBool memoryDecompression)
+
+instance Storable PhysicalDeviceMemoryDecompressionFeaturesNV where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceMemoryDecompressionFeaturesNV where
+  zero = PhysicalDeviceMemoryDecompressionFeaturesNV
+           zero
+
+
+-- | VkPhysicalDeviceMemoryDecompressionPropertiesNV - Structure describing
+-- supported memory decompression methods by an implementation
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceMemoryDecompressionPropertiesNV' structure is
+-- included in the @pNext@ chain of the
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+-- structure passed to
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2',
+-- it is filled in with each corresponding implementation-dependent
+-- property.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_memory_decompression VK_NV_memory_decompression>,
+-- 'MemoryDecompressionMethodFlagsNV',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceMemoryDecompressionPropertiesNV = PhysicalDeviceMemoryDecompressionPropertiesNV
+  { -- | @decompressionMethods@ specifies the list of all the memory
+    -- decompression methods supported by the implementation as a bitmask of
+    -- 'MemoryDecompressionMethodFlagBitsNV'.
+    decompressionMethods :: MemoryDecompressionMethodFlagsNV
+  , -- | @maxDecompressionIndirectCount@ specifies the maximum supported count
+    -- value in the @countBuffer@ of 'cmdDecompressMemoryIndirectCountNV'
+    maxDecompressionIndirectCount :: Word64
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceMemoryDecompressionPropertiesNV)
+#endif
+deriving instance Show PhysicalDeviceMemoryDecompressionPropertiesNV
+
+instance ToCStruct PhysicalDeviceMemoryDecompressionPropertiesNV where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceMemoryDecompressionPropertiesNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr MemoryDecompressionMethodFlagsNV)) (decompressionMethods)
+    poke ((p `plusPtr` 24 :: Ptr Word64)) (maxDecompressionIndirectCount)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr MemoryDecompressionMethodFlagsNV)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceMemoryDecompressionPropertiesNV where
+  peekCStruct p = do
+    decompressionMethods <- peek @MemoryDecompressionMethodFlagsNV ((p `plusPtr` 16 :: Ptr MemoryDecompressionMethodFlagsNV))
+    maxDecompressionIndirectCount <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))
+    pure $ PhysicalDeviceMemoryDecompressionPropertiesNV
+             decompressionMethods maxDecompressionIndirectCount
+
+instance Storable PhysicalDeviceMemoryDecompressionPropertiesNV where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceMemoryDecompressionPropertiesNV where
+  zero = PhysicalDeviceMemoryDecompressionPropertiesNV
+           zero
+           zero
+
+
+-- | VkDecompressMemoryRegionNV - Structure specifying decompression
+-- parameters
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkDecompressMemoryRegionNV-srcAddress-07685# The @srcAddress@
+--     /must/ be 4 byte aligned
+--
+-- -   #VUID-VkDecompressMemoryRegionNV-srcAddress-07686# The memory in
+--     range @srcAddress@ and @srcAddress@ + @compressedSize@ /must/ be
+--     valid and bound to a 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-VkDecompressMemoryRegionNV-dstAddress-07687# The @dstAddress@
+--     /must/ be 4 byte aligned
+--
+-- -   #VUID-VkDecompressMemoryRegionNV-dstAddress-07688# The memory in
+--     range @dstAddress@ and @dstAddress@ + @decompressedSize@ /must/ be
+--     valid and bound to a 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-VkDecompressMemoryRegionNV-decompressedSize-07689# The
+--     @decompressedSize@ /must/ be large enough to hold the decompressed
+--     data based on the @decompressionMethod@
+--
+-- -   #VUID-VkDecompressMemoryRegionNV-decompressionMethod-07690# The
+--     @decompressionMethod@ /must/ have a single bit set
+--
+-- -   #VUID-VkDecompressMemoryRegionNV-srcAddress-07691# The @srcAddress@
+--     to @srcAddress@ + @compressedSize@ region /must/ not overlap with
+--     the @dstAddress@ and @dstAddress@ + @decompressedSize@ region
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDecompressMemoryRegionNV-decompressionMethod-parameter#
+--     @decompressionMethod@ /must/ be a valid combination of
+--     'MemoryDecompressionMethodFlagBitsNV' values
+--
+-- -   #VUID-VkDecompressMemoryRegionNV-decompressionMethod-requiredbitmask#
+--     @decompressionMethod@ /must/ not be @0@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_memory_decompression VK_NV_memory_decompression>,
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'MemoryDecompressionMethodFlagsNV', 'cmdDecompressMemoryNV'
+data DecompressMemoryRegionNV = DecompressMemoryRegionNV
+  { -- | @srcAddress@ is the address where compressed data is stored.
+    srcAddress :: DeviceAddress
+  , -- | @dstAddress@ is the destination address where decompressed data will be
+    -- written.
+    dstAddress :: DeviceAddress
+  , -- | @compressedSize@ is the size of compressed data in bytes.
+    compressedSize :: DeviceSize
+  , -- | @decompressedSize@ is the size of decompressed data in bytes.
+    decompressedSize :: DeviceSize
+  , -- | @decompressionMethod@ is a single bit value from
+    -- 'MemoryDecompressionMethodFlagBitsNV' which specifies the decompression
+    -- method used to decompress data.
+    decompressionMethod :: MemoryDecompressionMethodFlagsNV
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DecompressMemoryRegionNV)
+#endif
+deriving instance Show DecompressMemoryRegionNV
+
+instance ToCStruct DecompressMemoryRegionNV where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DecompressMemoryRegionNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (srcAddress)
+    poke ((p `plusPtr` 8 :: Ptr DeviceAddress)) (dstAddress)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (compressedSize)
+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (decompressedSize)
+    poke ((p `plusPtr` 32 :: Ptr MemoryDecompressionMethodFlagsNV)) (decompressionMethod)
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr DeviceAddress)) (zero)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr MemoryDecompressionMethodFlagsNV)) (zero)
+    f
+
+instance FromCStruct DecompressMemoryRegionNV where
+  peekCStruct p = do
+    srcAddress <- peek @DeviceAddress ((p `plusPtr` 0 :: Ptr DeviceAddress))
+    dstAddress <- peek @DeviceAddress ((p `plusPtr` 8 :: Ptr DeviceAddress))
+    compressedSize <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
+    decompressedSize <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))
+    decompressionMethod <- peek @MemoryDecompressionMethodFlagsNV ((p `plusPtr` 32 :: Ptr MemoryDecompressionMethodFlagsNV))
+    pure $ DecompressMemoryRegionNV
+             srcAddress
+             dstAddress
+             compressedSize
+             decompressedSize
+             decompressionMethod
+
+instance Storable DecompressMemoryRegionNV where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DecompressMemoryRegionNV where
+  zero = DecompressMemoryRegionNV
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+type MemoryDecompressionMethodFlagsNV = MemoryDecompressionMethodFlagBitsNV
+
+-- | VkMemoryDecompressionMethodFlagBitsNV - List the supported memory
+-- decompression methods
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_memory_decompression VK_NV_memory_decompression>
+newtype MemoryDecompressionMethodFlagBitsNV = MemoryDecompressionMethodFlagBitsNV Flags64
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- | 'MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV' specifies that
+-- GDEFLATE 1.0 algorithm is used to decompress data.
+pattern MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV = MemoryDecompressionMethodFlagBitsNV 0x0000000000000001
+
+conNameMemoryDecompressionMethodFlagBitsNV :: String
+conNameMemoryDecompressionMethodFlagBitsNV = "MemoryDecompressionMethodFlagBitsNV"
+
+enumPrefixMemoryDecompressionMethodFlagBitsNV :: String
+enumPrefixMemoryDecompressionMethodFlagBitsNV = "MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV"
+
+showTableMemoryDecompressionMethodFlagBitsNV :: [(MemoryDecompressionMethodFlagBitsNV, String)]
+showTableMemoryDecompressionMethodFlagBitsNV =
+  [
+    ( MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV
+    , ""
+    )
+  ]
+
+instance Show MemoryDecompressionMethodFlagBitsNV where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixMemoryDecompressionMethodFlagBitsNV
+      showTableMemoryDecompressionMethodFlagBitsNV
+      conNameMemoryDecompressionMethodFlagBitsNV
+      (\(MemoryDecompressionMethodFlagBitsNV x) -> x)
+      (\x -> showString "0x" . showHex x)
+
+instance Read MemoryDecompressionMethodFlagBitsNV where
+  readPrec =
+    enumReadPrec
+      enumPrefixMemoryDecompressionMethodFlagBitsNV
+      showTableMemoryDecompressionMethodFlagBitsNV
+      conNameMemoryDecompressionMethodFlagBitsNV
+      MemoryDecompressionMethodFlagBitsNV
+
+type NV_MEMORY_DECOMPRESSION_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_NV_MEMORY_DECOMPRESSION_SPEC_VERSION"
+pattern NV_MEMORY_DECOMPRESSION_SPEC_VERSION :: forall a . Integral a => a
+pattern NV_MEMORY_DECOMPRESSION_SPEC_VERSION = 1
+
+
+type NV_MEMORY_DECOMPRESSION_EXTENSION_NAME = "VK_NV_memory_decompression"
+
+-- No documentation found for TopLevel "VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME"
+pattern NV_MEMORY_DECOMPRESSION_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern NV_MEMORY_DECOMPRESSION_EXTENSION_NAME = "VK_NV_memory_decompression"
+
diff --git a/src/Vulkan/Extensions/VK_NV_memory_decompression.hs-boot b/src/Vulkan/Extensions/VK_NV_memory_decompression.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_NV_memory_decompression.hs-boot
@@ -0,0 +1,148 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_NV_memory_decompression - device extension
+--
+-- == VK_NV_memory_decompression
+--
+-- [__Name String__]
+--     @VK_NV_memory_decompression@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     428
+--
+-- [__Revision__]
+--     1
+--
+-- [__Extension and Version Dependencies__]
+--
+--     -   Requires support for Vulkan 1.0
+--
+--     -   Requires @VK_KHR_get_physical_device_properties2@ to be enabled
+--         for any device-level functionality
+--
+--     -   Requires @VK_KHR_buffer_device_address@ to be enabled for any
+--         device-level functionality
+--
+-- [__Contact__]
+--
+--     -   Vikram Kushwaha
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_NV_memory_decompression] @vkushwaha-nv%0A*Here describe the issue or question you have about the VK_NV_memory_decompression extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2022-01-31
+--
+-- [__Contributors__]
+--
+--     -   Vikram Kushwaha, NVIDIA
+--
+--     -   Jeff Bolz, NVIDIA
+--
+--     -   Christoph Kubisch, NVIDIA
+--
+--     -   Piers Daniell, NVIDIA
+--
+-- == Description
+--
+-- This extension adds support for performing memory to memory
+-- decompression.
+--
+-- == New Commands
+--
+-- -   'cmdDecompressMemoryIndirectCountNV'
+--
+-- -   'cmdDecompressMemoryNV'
+--
+-- == New Structures
+--
+-- -   'DecompressMemoryRegionNV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceMemoryDecompressionFeaturesNV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceMemoryDecompressionPropertiesNV'
+--
+-- == New Enums
+--
+-- -   'MemoryDecompressionMethodFlagBitsNV'
+--
+-- == New Bitmasks
+--
+-- -   'MemoryDecompressionMethodFlagsNV'
+--
+-- == New Enum Constants
+--
+-- -   'NV_MEMORY_DECOMPRESSION_EXTENSION_NAME'
+--
+-- -   'NV_MEMORY_DECOMPRESSION_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV'
+--
+-- == Version History
+--
+-- -   Revision 1, 2022-01-31 (Vikram Kushwaha)
+--
+--     -   Initial draft
+--
+-- == See Also
+--
+-- 'DecompressMemoryRegionNV', 'MemoryDecompressionMethodFlagBitsNV',
+-- 'MemoryDecompressionMethodFlagsNV',
+-- 'PhysicalDeviceMemoryDecompressionFeaturesNV',
+-- 'PhysicalDeviceMemoryDecompressionPropertiesNV',
+-- 'cmdDecompressMemoryIndirectCountNV', 'cmdDecompressMemoryNV'
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_memory_decompression Vulkan Specification>
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_NV_memory_decompression  ( DecompressMemoryRegionNV
+                                                     , PhysicalDeviceMemoryDecompressionFeaturesNV
+                                                     , PhysicalDeviceMemoryDecompressionPropertiesNV
+                                                     ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data DecompressMemoryRegionNV
+
+instance ToCStruct DecompressMemoryRegionNV
+instance Show DecompressMemoryRegionNV
+
+instance FromCStruct DecompressMemoryRegionNV
+
+
+data PhysicalDeviceMemoryDecompressionFeaturesNV
+
+instance ToCStruct PhysicalDeviceMemoryDecompressionFeaturesNV
+instance Show PhysicalDeviceMemoryDecompressionFeaturesNV
+
+instance FromCStruct PhysicalDeviceMemoryDecompressionFeaturesNV
+
+
+data PhysicalDeviceMemoryDecompressionPropertiesNV
+
+instance ToCStruct PhysicalDeviceMemoryDecompressionPropertiesNV
+instance Show PhysicalDeviceMemoryDecompressionPropertiesNV
+
+instance FromCStruct PhysicalDeviceMemoryDecompressionPropertiesNV
+
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
@@ -475,9 +475,10 @@
 -- -   #VUID-vkCmdDrawMeshTasksNV-None-02699# Descriptors in each bound
 --     descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid if they are statically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command
+--     be valid as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
+--     bound to the pipeline bind point used by this command
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-None-02700# A valid pipeline /must/ be
 --     bound to the pipeline bind point used by this command
@@ -2156,9 +2157,10 @@
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-02699# Descriptors in each
 --     bound descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid if they are statically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command
+--     be valid as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
+--     bound to the pipeline bind point used by this command
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-02700# A valid pipeline
 --     /must/ be bound to the pipeline bind point used by this command
@@ -3890,9 +3892,10 @@
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02699# Descriptors in
 --     each bound descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid if they are statically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command
+--     be valid as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
+--     bound to the pipeline bind point used by this command
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02700# A valid pipeline
 --     /must/ be bound to the pipeline bind point used by this command
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
@@ -1826,9 +1826,10 @@
 -- -   #VUID-vkCmdTraceRaysNV-None-02699# Descriptors in each bound
 --     descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid if they are statically used by the
---     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
---     used by this command
+--     be valid as described by
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
+--     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
+--     bound to the pipeline bind point used by this command
 --
 -- -   #VUID-vkCmdTraceRaysNV-None-02700# A valid pipeline /must/ be bound
 --     to the pipeline bind point used by this command
diff --git a/src/Vulkan/Extensions/VK_NV_ray_tracing_invocation_reorder.hs b/src/Vulkan/Extensions/VK_NV_ray_tracing_invocation_reorder.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_NV_ray_tracing_invocation_reorder.hs
@@ -0,0 +1,365 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_NV_ray_tracing_invocation_reorder - device extension
+--
+-- == VK_NV_ray_tracing_invocation_reorder
+--
+-- [__Name String__]
+--     @VK_NV_ray_tracing_invocation_reorder@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     491
+--
+-- [__Revision__]
+--     1
+--
+-- [__Extension and Version Dependencies__]
+--
+--     -   Requires support for Vulkan 1.0
+--
+--     -   Requires @VK_KHR_ray_tracing_pipeline@ to be enabled for any
+--         device-level functionality
+--
+-- [__Contact__]
+--
+--     -   Eric Werness
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_NV_ray_tracing_invocation_reorder] @ewerness-nv%0A*Here describe the issue or question you have about the VK_NV_ray_tracing_invocation_reorder extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2022-11-02
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension requires
+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_shader_invocation_reorder.html SPV_NV_shader_invocation_reorder>
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GLSL_NV_shader_invocation_reorder.txt GL_NV_shader_invocation_reorder>
+--
+-- [__Contributors__]
+--
+--     -   Eric Werness, NVIDIA
+--
+--     -   Ashwin Lele, NVIDIA
+--
+-- == Description
+--
+-- The ray tracing pipeline API provides some ability to reorder for
+-- locality, but it is useful to have more control over how the reordering
+-- happens and what information is included in the reordering. The shader
+-- API provides a hit object to contain result information from the hit
+-- which can be used as part of the explicit sorting plus options that
+-- contain an integer for hint bits to use to add more locality.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceRayTracingInvocationReorderFeaturesNV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceRayTracingInvocationReorderPropertiesNV'
+--
+-- == New Enums
+--
+-- -   'RayTracingInvocationReorderModeNV'
+--
+-- == New Enum Constants
+--
+-- -   'NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME'
+--
+-- -   'NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV'
+--
+-- == Version History
+--
+-- -   Revision 1, 2020-09-12 (Eric Werness, Ashwin Lele)
+--
+--     -   Initial external release
+--
+-- == See Also
+--
+-- 'PhysicalDeviceRayTracingInvocationReorderFeaturesNV',
+-- 'PhysicalDeviceRayTracingInvocationReorderPropertiesNV',
+-- 'RayTracingInvocationReorderModeNV'
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_ray_tracing_invocation_reorder Vulkan Specification>
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder  ( PhysicalDeviceRayTracingInvocationReorderFeaturesNV(..)
+                                                               , PhysicalDeviceRayTracingInvocationReorderPropertiesNV(..)
+                                                               , RayTracingInvocationReorderModeNV( RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV
+                                                                                                  , RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV
+                                                                                                  , ..
+                                                                                                  )
+                                                               , NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION
+                                                               , pattern NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION
+                                                               , NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME
+                                                               , pattern NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME
+                                                               ) where
+
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import GHC.Show (showsPrec)
+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 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 Data.Int (Int32)
+import Foreign.Ptr (Ptr)
+import GHC.Read (Read(readPrec))
+import GHC.Show (Show(showsPrec))
+import Data.Kind (Type)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV))
+-- | VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV - Structure
+-- describing feature to control ray tracing invocation reordering
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceRayTracingInvocationReorderFeaturesNV' structure
+-- is included in the @pNext@ chain of the
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
+-- structure passed to
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
+-- it is filled in to indicate whether each corresponding feature is
+-- supported. 'PhysicalDeviceRayTracingInvocationReorderFeaturesNV' /can/
+-- also be used in the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
+-- features.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing_invocation_reorder VK_NV_ray_tracing_invocation_reorder>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceRayTracingInvocationReorderFeaturesNV = PhysicalDeviceRayTracingInvocationReorderFeaturesNV
+  { -- | #features-rayTracingInvocationReorder# @rayTracingInvocationReorder@
+    -- indicates that the implementation supports
+    -- @SPV_NV_shader_invocation_reorder@.
+    rayTracingInvocationReorder :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceRayTracingInvocationReorderFeaturesNV)
+#endif
+deriving instance Show PhysicalDeviceRayTracingInvocationReorderFeaturesNV
+
+instance ToCStruct PhysicalDeviceRayTracingInvocationReorderFeaturesNV where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceRayTracingInvocationReorderFeaturesNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (rayTracingInvocationReorder))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceRayTracingInvocationReorderFeaturesNV where
+  peekCStruct p = do
+    rayTracingInvocationReorder <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceRayTracingInvocationReorderFeaturesNV
+             (bool32ToBool rayTracingInvocationReorder)
+
+instance Storable PhysicalDeviceRayTracingInvocationReorderFeaturesNV where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceRayTracingInvocationReorderFeaturesNV where
+  zero = PhysicalDeviceRayTracingInvocationReorderFeaturesNV
+           zero
+
+
+-- | VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV - Structure
+-- describing shader module identifier properties of an implementation
+--
+-- = Members
+--
+-- The members of the
+-- 'PhysicalDeviceRayTracingInvocationReorderPropertiesNV' structure
+-- describe the following:
+--
+-- = Description
+--
+-- Note
+--
+-- Because the extension changes how hits are managed there is a
+-- compatibility reason to expose the extension even when an implementation
+-- does not have sorting active.
+--
+-- If the 'PhysicalDeviceRayTracingInvocationReorderPropertiesNV' structure
+-- is included in the @pNext@ chain of the
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+-- structure passed to
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2',
+-- it is filled in with each corresponding implementation-dependent
+-- property.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing_invocation_reorder VK_NV_ray_tracing_invocation_reorder>,
+-- 'RayTracingInvocationReorderModeNV',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceRayTracingInvocationReorderPropertiesNV = PhysicalDeviceRayTracingInvocationReorderPropertiesNV
+  { -- | @rayTracingInvocationReorderReorderingHint@ is a hint indicating if the
+    -- implementation will actually reorder at the reorder calls.
+    rayTracingInvocationReorderReorderingHint :: RayTracingInvocationReorderModeNV }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceRayTracingInvocationReorderPropertiesNV)
+#endif
+deriving instance Show PhysicalDeviceRayTracingInvocationReorderPropertiesNV
+
+instance ToCStruct PhysicalDeviceRayTracingInvocationReorderPropertiesNV where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceRayTracingInvocationReorderPropertiesNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr RayTracingInvocationReorderModeNV)) (rayTracingInvocationReorderReorderingHint)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr RayTracingInvocationReorderModeNV)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceRayTracingInvocationReorderPropertiesNV where
+  peekCStruct p = do
+    rayTracingInvocationReorderReorderingHint <- peek @RayTracingInvocationReorderModeNV ((p `plusPtr` 16 :: Ptr RayTracingInvocationReorderModeNV))
+    pure $ PhysicalDeviceRayTracingInvocationReorderPropertiesNV
+             rayTracingInvocationReorderReorderingHint
+
+instance Storable PhysicalDeviceRayTracingInvocationReorderPropertiesNV where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceRayTracingInvocationReorderPropertiesNV where
+  zero = PhysicalDeviceRayTracingInvocationReorderPropertiesNV
+           zero
+
+
+-- | VkRayTracingInvocationReorderModeNV - Enum providing a hint on how the
+-- application /may/ reorder
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing_invocation_reorder VK_NV_ray_tracing_invocation_reorder>,
+-- 'PhysicalDeviceRayTracingInvocationReorderPropertiesNV'
+newtype RayTracingInvocationReorderModeNV = RayTracingInvocationReorderModeNV Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- | 'RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV' indicates that the
+-- implementation is likely to not reorder at reorder calls.
+pattern RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = RayTracingInvocationReorderModeNV 0
+
+-- | 'RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV' indicates that the
+-- implementation is likely to reorder at reorder calls.
+pattern RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = RayTracingInvocationReorderModeNV 1
+
+{-# COMPLETE
+  RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV
+  , RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV ::
+    RayTracingInvocationReorderModeNV
+  #-}
+
+conNameRayTracingInvocationReorderModeNV :: String
+conNameRayTracingInvocationReorderModeNV = "RayTracingInvocationReorderModeNV"
+
+enumPrefixRayTracingInvocationReorderModeNV :: String
+enumPrefixRayTracingInvocationReorderModeNV = "RAY_TRACING_INVOCATION_REORDER_MODE_"
+
+showTableRayTracingInvocationReorderModeNV :: [(RayTracingInvocationReorderModeNV, String)]
+showTableRayTracingInvocationReorderModeNV =
+  [
+    ( RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV
+    , "NONE_NV"
+    )
+  ,
+    ( RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV
+    , "REORDER_NV"
+    )
+  ]
+
+instance Show RayTracingInvocationReorderModeNV where
+  showsPrec =
+    enumShowsPrec
+      enumPrefixRayTracingInvocationReorderModeNV
+      showTableRayTracingInvocationReorderModeNV
+      conNameRayTracingInvocationReorderModeNV
+      (\(RayTracingInvocationReorderModeNV x) -> x)
+      (showsPrec 11)
+
+instance Read RayTracingInvocationReorderModeNV where
+  readPrec =
+    enumReadPrec
+      enumPrefixRayTracingInvocationReorderModeNV
+      showTableRayTracingInvocationReorderModeNV
+      conNameRayTracingInvocationReorderModeNV
+      RayTracingInvocationReorderModeNV
+
+type NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION"
+pattern NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION :: forall a . Integral a => a
+pattern NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION = 1
+
+
+type NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME = "VK_NV_ray_tracing_invocation_reorder"
+
+-- No documentation found for TopLevel "VK_NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME"
+pattern NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME = "VK_NV_ray_tracing_invocation_reorder"
+
diff --git a/src/Vulkan/Extensions/VK_NV_ray_tracing_invocation_reorder.hs-boot b/src/Vulkan/Extensions/VK_NV_ray_tracing_invocation_reorder.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_NV_ray_tracing_invocation_reorder.hs-boot
@@ -0,0 +1,130 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_NV_ray_tracing_invocation_reorder - device extension
+--
+-- == VK_NV_ray_tracing_invocation_reorder
+--
+-- [__Name String__]
+--     @VK_NV_ray_tracing_invocation_reorder@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     491
+--
+-- [__Revision__]
+--     1
+--
+-- [__Extension and Version Dependencies__]
+--
+--     -   Requires support for Vulkan 1.0
+--
+--     -   Requires @VK_KHR_ray_tracing_pipeline@ to be enabled for any
+--         device-level functionality
+--
+-- [__Contact__]
+--
+--     -   Eric Werness
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_NV_ray_tracing_invocation_reorder] @ewerness-nv%0A*Here describe the issue or question you have about the VK_NV_ray_tracing_invocation_reorder extension* >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2022-11-02
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   This extension requires
+--         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/NV/SPV_NV_shader_invocation_reorder.html SPV_NV_shader_invocation_reorder>
+--
+--     -   This extension provides API support for
+--         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GLSL_NV_shader_invocation_reorder.txt GL_NV_shader_invocation_reorder>
+--
+-- [__Contributors__]
+--
+--     -   Eric Werness, NVIDIA
+--
+--     -   Ashwin Lele, NVIDIA
+--
+-- == Description
+--
+-- The ray tracing pipeline API provides some ability to reorder for
+-- locality, but it is useful to have more control over how the reordering
+-- happens and what information is included in the reordering. The shader
+-- API provides a hit object to contain result information from the hit
+-- which can be used as part of the explicit sorting plus options that
+-- contain an integer for hint bits to use to add more locality.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceRayTracingInvocationReorderFeaturesNV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceRayTracingInvocationReorderPropertiesNV'
+--
+-- == New Enums
+--
+-- -   'RayTracingInvocationReorderModeNV'
+--
+-- == New Enum Constants
+--
+-- -   'NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME'
+--
+-- -   'NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV'
+--
+-- == Version History
+--
+-- -   Revision 1, 2020-09-12 (Eric Werness, Ashwin Lele)
+--
+--     -   Initial external release
+--
+-- == See Also
+--
+-- 'PhysicalDeviceRayTracingInvocationReorderFeaturesNV',
+-- 'PhysicalDeviceRayTracingInvocationReorderPropertiesNV',
+-- 'RayTracingInvocationReorderModeNV'
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_ray_tracing_invocation_reorder Vulkan Specification>
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder  ( PhysicalDeviceRayTracingInvocationReorderFeaturesNV
+                                                               , PhysicalDeviceRayTracingInvocationReorderPropertiesNV
+                                                               ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceRayTracingInvocationReorderFeaturesNV
+
+instance ToCStruct PhysicalDeviceRayTracingInvocationReorderFeaturesNV
+instance Show PhysicalDeviceRayTracingInvocationReorderFeaturesNV
+
+instance FromCStruct PhysicalDeviceRayTracingInvocationReorderFeaturesNV
+
+
+data PhysicalDeviceRayTracingInvocationReorderPropertiesNV
+
+instance ToCStruct PhysicalDeviceRayTracingInvocationReorderPropertiesNV
+instance Show PhysicalDeviceRayTracingInvocationReorderPropertiesNV
+
+instance FromCStruct PhysicalDeviceRayTracingInvocationReorderPropertiesNV
+
diff --git a/src/Vulkan/SPIRVRequirements.hs b/src/Vulkan/SPIRVRequirements.hs
--- a/src/Vulkan/SPIRVRequirements.hs
+++ b/src/Vulkan/SPIRVRequirements.hs
@@ -58,6 +58,7 @@
 import Vulkan.Extensions.VK_AMD_gpu_shader_half_float (pattern AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME)
 import Vulkan.Extensions.VK_AMD_gpu_shader_int16 (pattern AMD_GPU_SHADER_INT16_EXTENSION_NAME)
 import Vulkan.Extensions.VK_AMD_shader_ballot (pattern AMD_SHADER_BALLOT_EXTENSION_NAME)
+import Vulkan.Extensions.VK_AMD_shader_early_and_late_fragment_tests (pattern AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_EXTENSION_NAME)
 import Vulkan.Extensions.VK_AMD_shader_explicit_vertex_parameter (pattern AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME)
 import Vulkan.Extensions.VK_AMD_shader_fragment_mask (pattern AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME)
 import Vulkan.Extensions.VK_AMD_shader_image_load_store_lod (pattern AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME)
@@ -127,6 +128,7 @@
 import Vulkan.Extensions.VK_NV_geometry_shader_passthrough (pattern NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME)
 import Vulkan.Extensions.VK_NV_mesh_shader (pattern NV_MESH_SHADER_EXTENSION_NAME)
 import Vulkan.Extensions.VK_NV_ray_tracing (pattern NV_RAY_TRACING_EXTENSION_NAME)
+import Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder (pattern NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME)
 import Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (pattern NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME)
 import Vulkan.Extensions.VK_NV_sample_mask_override_coverage (pattern NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME)
 import Vulkan.Extensions.VK_NV_shader_image_footprint (pattern NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME)
@@ -249,6 +251,15 @@
           , deviceExtensionMinVersion = 0
           }
       ]
+  "SPV_AMD_shader_early_and_late_fragment_tests" ->
+    (,)
+      []
+      [ RequireDeviceExtension
+          { deviceExtensionLayerName = Nothing
+          , deviceExtensionName = AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_EXTENSION_NAME
+          , deviceExtensionMinVersion = 0
+          }
+      ]
   "SPV_KHR_shader_draw_parameters" ->
     (,)
       [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
@@ -3219,6 +3230,60 @@
       , RequireDeviceExtension
           { deviceExtensionLayerName = Nothing
           , deviceExtensionName = ARM_SHADER_CORE_BUILTINS_EXTENSION_NAME
+          , deviceExtensionMinVersion = 0
+          }
+      ]
+  "ShaderInvocationReorderNV" ->
+    (,)
+      [ RequireInstanceExtension
+          { instanceExtensionLayerName = Nothing
+          , instanceExtensionName = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
+          , instanceExtensionMinVersion = 0
+          }
+      ]
+      [ RequireDeviceExtension
+          { deviceExtensionLayerName = Nothing
+          , deviceExtensionName = NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME
+          , deviceExtensionMinVersion = 0
+          }
+      , RequireDeviceExtension
+          { deviceExtensionLayerName = Nothing
+          , deviceExtensionName = KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME
+          , deviceExtensionMinVersion = 0
+          }
+      , RequireDeviceExtension
+          { deviceExtensionLayerName = Nothing
+          , deviceExtensionName = KHR_SPIRV_1_4_EXTENSION_NAME
+          , deviceExtensionMinVersion = 0
+          }
+      , RequireDeviceExtension
+          { deviceExtensionLayerName = Nothing
+          , deviceExtensionName = KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME
+          , deviceExtensionMinVersion = 0
+          }
+      , RequireDeviceExtension
+          { deviceExtensionLayerName = Nothing
+          , deviceExtensionName = KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME
+          , deviceExtensionMinVersion = 0
+          }
+      , RequireDeviceExtension
+          { deviceExtensionLayerName = Nothing
+          , deviceExtensionName = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
+          , deviceExtensionMinVersion = 0
+          }
+      , RequireDeviceExtension
+          { deviceExtensionLayerName = Nothing
+          , deviceExtensionName = KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME
+          , deviceExtensionMinVersion = 0
+          }
+      , RequireDeviceExtension
+          { deviceExtensionLayerName = Nothing
+          , deviceExtensionName = KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME
+          , deviceExtensionMinVersion = 0
+          }
+      , RequireDeviceExtension
+          { deviceExtensionLayerName = Nothing
+          , deviceExtensionName = KHR_MAINTENANCE_3_EXTENSION_NAME
           , deviceExtensionMinVersion = 0
           }
       ]
diff --git a/src/Vulkan/Version.hs b/src/Vulkan/Version.hs
--- a/src/Vulkan/Version.hs
+++ b/src/Vulkan/Version.hs
@@ -19,11 +19,11 @@
 import Data.Word (Word32)
 
 pattern HEADER_VERSION :: Word32
-pattern HEADER_VERSION = 232
+pattern HEADER_VERSION = 233
 
 
 pattern HEADER_VERSION_COMPLETE :: Word32
-pattern HEADER_VERSION_COMPLETE = MAKE_API_VERSION 1 3 232
+pattern HEADER_VERSION_COMPLETE = MAKE_API_VERSION 1 3 233
 
 
 pattern MAKE_API_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.23.2
+version:        3.23.3
 synopsis:       Bindings to the Vulkan graphics API.
 description:    Please see [the readme](https://github.com/expipiplus1/vulkan/#readme)
 category:       Graphics
@@ -535,6 +535,7 @@
       Vulkan.Extensions.VK_NV_clip_space_w_scaling
       Vulkan.Extensions.VK_NV_compute_shader_derivatives
       Vulkan.Extensions.VK_NV_cooperative_matrix
+      Vulkan.Extensions.VK_NV_copy_memory_indirect
       Vulkan.Extensions.VK_NV_corner_sampled_image
       Vulkan.Extensions.VK_NV_coverage_reduction_mode
       Vulkan.Extensions.VK_NV_dedicated_allocation
@@ -555,10 +556,12 @@
       Vulkan.Extensions.VK_NV_glsl_shader
       Vulkan.Extensions.VK_NV_inherited_viewport_scissor
       Vulkan.Extensions.VK_NV_linear_color_attachment
+      Vulkan.Extensions.VK_NV_memory_decompression
       Vulkan.Extensions.VK_NV_mesh_shader
       Vulkan.Extensions.VK_NV_optical_flow
       Vulkan.Extensions.VK_NV_present_barrier
       Vulkan.Extensions.VK_NV_ray_tracing
+      Vulkan.Extensions.VK_NV_ray_tracing_invocation_reorder
       Vulkan.Extensions.VK_NV_ray_tracing_motion_blur
       Vulkan.Extensions.VK_NV_representative_fragment_test
       Vulkan.Extensions.VK_NV_sample_mask_override_coverage
