diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -2,6 +2,9 @@
 
 ## WIP
 
+## [3.10.2] - 2021-06-05
+- Bump API version to v1.2.179
+
 ## [3.10.1] - 2021-03-31
 - Bump API version to v1.2.174
 - Fix https://github.com/expipiplus1/vulkan/issues/266
diff --git a/package.yaml b/package.yaml
--- a/package.yaml
+++ b/package.yaml
@@ -1,5 +1,5 @@
 name: vulkan
-version: "3.10.1"
+version: "3.10.2"
 synopsis: Bindings to the Vulkan graphics API.
 category: Graphics
 maintainer: Joe Hermaszewski <live.long.and.prosper@monoid.al>
diff --git a/readme.md b/readme.md
--- a/readme.md
+++ b/readme.md
@@ -462,7 +462,7 @@
 ## Current Status
 
 All the core Vulkan 1.0, 1.1, and 1.2 functionality is here as well as all the
-extensions.
+extensions (except the video ones).
 
 This is currently a 64 bit only library.
 
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
@@ -116,6 +116,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conditional_rendering (CommandBufferInheritanceConditionalRenderingInfoEXT)
 import {-# SOURCE #-} Vulkan.Core10.CommandBuffer (CommandBufferInheritanceInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_render_pass_transform (CommandBufferInheritanceRenderPassTransformInfoQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_inherited_viewport_scissor (CommandBufferInheritanceViewportScissorInfoNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_synchronization2 (CommandBufferSubmitInfoKHR)
 import {-# SOURCE #-} Vulkan.Core10.CommandPool (CommandPoolCreateInfo)
 import {-# SOURCE #-} Vulkan.Core10.ImageView (ComponentMapping)
@@ -132,6 +133,9 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (CopyImageInfo2KHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (CopyImageToBufferInfo2KHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (CopyMemoryToAccelerationStructureInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_binary_import (CuFunctionCreateInfoNVX)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_binary_import (CuLaunchInfoNVX)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_binary_import (CuModuleCreateInfoNVX)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_semaphore_win32 (D3D12FenceSubmitInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerMarkerInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerObjectNameInfoEXT)
@@ -342,6 +346,7 @@
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_device_coherent_memory (PhysicalDeviceCoherentMemoryFeaturesAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_color_write_enable (PhysicalDeviceColorWriteEnableFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_compute_shader_derivatives (PhysicalDeviceComputeShaderDerivativesFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conditional_rendering (PhysicalDeviceConditionalRenderingFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conservative_rasterization (PhysicalDeviceConservativeRasterizationPropertiesEXT)
@@ -363,6 +368,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_discard_rectangles (PhysicalDeviceDiscardRectanglePropertiesEXT)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_driver_properties (PhysicalDeviceDriverProperties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_scissor_exclusive (PhysicalDeviceExclusiveScissorFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state2 (PhysicalDeviceExtendedDynamicState2FeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state (PhysicalDeviceExtendedDynamicStateFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (PhysicalDeviceExternalBufferInfo)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities (PhysicalDeviceExternalFenceInfo)
@@ -392,6 +398,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_filter_cubic (PhysicalDeviceImageViewImageFormatInfoEXT)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer (PhysicalDeviceImagelessFramebufferFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_index_type_uint8 (PhysicalDeviceIndexTypeUint8FeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_inherited_viewport_scissor (PhysicalDeviceInheritedViewportScissorFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_inline_uniform_block (PhysicalDeviceInlineUniformBlockFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_inline_uniform_block (PhysicalDeviceInlineUniformBlockPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (PhysicalDeviceLimits)
@@ -421,6 +428,8 @@
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceProperties2)
 import {-# SOURCE #-} Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (PhysicalDeviceProtectedMemoryFeatures)
 import {-# SOURCE #-} Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (PhysicalDeviceProtectedMemoryProperties)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_provoking_vertex (PhysicalDeviceProvokingVertexFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_provoking_vertex (PhysicalDeviceProvokingVertexPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_push_descriptor (PhysicalDevicePushDescriptorPropertiesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_query (PhysicalDeviceRayQueryFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (PhysicalDeviceRayTracingPipelineFeaturesKHR)
@@ -470,18 +479,21 @@
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers (PhysicalDeviceVariablePointersFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_attribute_divisor (PhysicalDeviceVertexAttributeDivisorFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_attribute_divisor (PhysicalDeviceVertexAttributeDivisorPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state (PhysicalDeviceVertexInputDynamicStateFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Core12 (PhysicalDeviceVulkan11Features)
 import {-# SOURCE #-} Vulkan.Core12 (PhysicalDeviceVulkan11Properties)
 import {-# SOURCE #-} Vulkan.Core12 (PhysicalDeviceVulkan12Features)
 import {-# SOURCE #-} Vulkan.Core12 (PhysicalDeviceVulkan12Properties)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model (PhysicalDeviceVulkanMemoryModelFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_workgroup_memory_explicit_layout (PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_ycbcr_2plane_444_formats (PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_ycbcr_image_arrays (PhysicalDeviceYcbcrImageArraysFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_zero_initialize_workgroup_memory (PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Core10.PipelineCache (PipelineCacheCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_blend_operation_advanced (PipelineColorBlendAdvancedStateCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Core10.Pipeline (PipelineColorBlendAttachmentState)
 import {-# SOURCE #-} Vulkan.Core10.Pipeline (PipelineColorBlendStateCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_color_write_enable (PipelineColorWriteCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_pipeline_compiler_control (PipelineCompilerControlCreateInfoAMD)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_framebuffer_mixed_samples (PipelineCoverageModulationStateCreateInfoNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_coverage_reduction_mode (PipelineCoverageReductionStateCreateInfoNV)
@@ -505,6 +517,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conservative_rasterization (PipelineRasterizationConservativeStateCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clip_enable (PipelineRasterizationDepthClipStateCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_line_rasterization (PipelineRasterizationLineStateCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_provoking_vertex (PipelineRasterizationProvokingVertexStateCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Core10.Pipeline (PipelineRasterizationStateCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_rasterization_order (PipelineRasterizationStateRasterizationOrderAMD)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_transform_feedback (PipelineRasterizationStateStreamCreateInfoEXT)
@@ -627,7 +640,9 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_validation_features (ValidationFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_validation_flags (ValidationFlagsEXT)
 import {-# SOURCE #-} Vulkan.Core10.Pipeline (VertexInputAttributeDescription)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state (VertexInputAttributeDescription2EXT)
 import {-# SOURCE #-} Vulkan.Core10.Pipeline (VertexInputBindingDescription)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state (VertexInputBindingDescription2EXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_attribute_divisor (VertexInputBindingDivisorDescriptionEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NN_vi_surface (ViSurfaceCreateInfoNN)
 import {-# SOURCE #-} Vulkan.Core10.Pipeline (Viewport)
@@ -770,6 +785,7 @@
   Extends CommandBufferBeginInfo DeviceGroupCommandBufferBeginInfo = ()
   Extends CommandBufferInheritanceInfo CommandBufferInheritanceConditionalRenderingInfoEXT = ()
   Extends CommandBufferInheritanceInfo CommandBufferInheritanceRenderPassTransformInfoQCOM = ()
+  Extends CommandBufferInheritanceInfo CommandBufferInheritanceViewportScissorInfoNV = ()
   Extends ComputePipelineCreateInfo PipelineCreationFeedbackCreateInfoEXT = ()
   Extends ComputePipelineCreateInfo PipelineCompilerControlCreateInfoAMD = ()
   Extends DescriptorPoolCreateInfo DescriptorPoolInlineUniformBlockCreateInfoEXT = ()
@@ -850,6 +866,7 @@
   Extends DeviceCreateInfo PhysicalDeviceCoherentMemoryFeaturesAMD = ()
   Extends DeviceCreateInfo PhysicalDeviceCustomBorderColorFeaturesEXT = ()
   Extends DeviceCreateInfo PhysicalDeviceExtendedDynamicStateFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceExtendedDynamicState2FeaturesEXT = ()
   Extends DeviceCreateInfo PhysicalDeviceDiagnosticsConfigFeaturesNV = ()
   Extends DeviceCreateInfo DeviceDiagnosticsConfigCreateInfoNV = ()
   Extends DeviceCreateInfo PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = ()
@@ -863,7 +880,12 @@
   Extends DeviceCreateInfo PhysicalDeviceShaderTerminateInvocationFeaturesKHR = ()
   Extends DeviceCreateInfo PhysicalDeviceFragmentShadingRateEnumsFeaturesNV = ()
   Extends DeviceCreateInfo PhysicalDeviceMutableDescriptorTypeFeaturesVALVE = ()
+  Extends DeviceCreateInfo PhysicalDeviceVertexInputDynamicStateFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceColorWriteEnableFeaturesEXT = ()
   Extends DeviceCreateInfo PhysicalDeviceSynchronization2FeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceInheritedViewportScissorFeaturesNV = ()
+  Extends DeviceCreateInfo PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceProvokingVertexFeaturesEXT = ()
   Extends DeviceQueueCreateInfo DeviceQueueGlobalPriorityCreateInfoEXT = ()
   Extends FenceCreateInfo ExportFenceCreateInfo = ()
   Extends FenceCreateInfo ExportFenceWin32HandleInfoKHR = ()
@@ -985,6 +1007,7 @@
   Extends PhysicalDeviceFeatures2 PhysicalDeviceCoherentMemoryFeaturesAMD = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceCustomBorderColorFeaturesEXT = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceExtendedDynamicStateFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceExtendedDynamicState2FeaturesEXT = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceDiagnosticsConfigFeaturesNV = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceRobustness2FeaturesEXT = ()
@@ -997,7 +1020,12 @@
   Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderTerminateInvocationFeaturesKHR = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceMutableDescriptorTypeFeaturesVALVE = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceVertexInputDynamicStateFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceColorWriteEnableFeaturesEXT = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceSynchronization2FeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceInheritedViewportScissorFeaturesNV = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceProvokingVertexFeaturesEXT = ()
   Extends PhysicalDeviceImageFormatInfo2 PhysicalDeviceExternalImageFormatInfo = ()
   Extends PhysicalDeviceImageFormatInfo2 ImageFormatListCreateInfo = ()
   Extends PhysicalDeviceImageFormatInfo2 PhysicalDeviceImageDrmFormatModifierInfoEXT = ()
@@ -1050,9 +1078,11 @@
   Extends PhysicalDeviceProperties2 PhysicalDevicePortabilitySubsetPropertiesKHR = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceFragmentShadingRatePropertiesKHR = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceFragmentShadingRateEnumsPropertiesNV = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceProvokingVertexPropertiesEXT = ()
   Extends PhysicalDeviceSurfaceInfo2KHR SurfaceFullScreenExclusiveInfoEXT = ()
   Extends PhysicalDeviceSurfaceInfo2KHR SurfaceFullScreenExclusiveWin32InfoEXT = ()
   Extends PipelineColorBlendStateCreateInfo PipelineColorBlendAdvancedStateCreateInfoEXT = ()
+  Extends PipelineColorBlendStateCreateInfo PipelineColorWriteCreateInfoEXT = ()
   Extends PipelineMultisampleStateCreateInfo PipelineCoverageToColorStateCreateInfoNV = ()
   Extends PipelineMultisampleStateCreateInfo PipelineSampleLocationsStateCreateInfoEXT = ()
   Extends PipelineMultisampleStateCreateInfo PipelineCoverageModulationStateCreateInfoNV = ()
@@ -1062,6 +1092,7 @@
   Extends PipelineRasterizationStateCreateInfo PipelineRasterizationStateStreamCreateInfoEXT = ()
   Extends PipelineRasterizationStateCreateInfo PipelineRasterizationDepthClipStateCreateInfoEXT = ()
   Extends PipelineRasterizationStateCreateInfo PipelineRasterizationLineStateCreateInfoEXT = ()
+  Extends PipelineRasterizationStateCreateInfo PipelineRasterizationProvokingVertexStateCreateInfoEXT = ()
   Extends PipelineShaderStageCreateInfo PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = ()
   Extends PipelineTessellationStateCreateInfo PipelineTessellationDomainOriginStateCreateInfo = ()
   Extends PipelineVertexInputStateCreateInfo PipelineVertexInputDivisorStateCreateInfoEXT = ()
@@ -1468,6 +1499,7 @@
   STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT -> go @PhysicalDeviceCustomBorderColorPropertiesEXT
   STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT -> go @PhysicalDeviceCustomBorderColorFeaturesEXT
   STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT -> go @PhysicalDeviceExtendedDynamicStateFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT -> go @PhysicalDeviceExtendedDynamicState2FeaturesEXT
   STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM -> go @RenderPassTransformBeginInfoQCOM
   STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM -> go @CopyCommandTransformInfoQCOM
   STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM -> go @CommandBufferInheritanceRenderPassTransformInfoQCOM
@@ -1492,9 +1524,18 @@
   STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV -> go @PipelineFragmentShadingRateEnumStateCreateInfoNV
   STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE -> go @PhysicalDeviceMutableDescriptorTypeFeaturesVALVE
   STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE -> go @MutableDescriptorTypeCreateInfoVALVE
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT -> go @PhysicalDeviceVertexInputDynamicStateFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT -> go @PhysicalDeviceColorWriteEnableFeaturesEXT
+  STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT -> go @PipelineColorWriteCreateInfoEXT
   STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR -> go @MemoryBarrier2KHR
   STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV -> go @QueueFamilyCheckpointProperties2NV
   STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR -> go @PhysicalDeviceSynchronization2FeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV -> go @PhysicalDeviceInheritedViewportScissorFeaturesNV
+  STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV -> go @CommandBufferInheritanceViewportScissorInfoNV
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT -> go @PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT -> go @PhysicalDeviceProvokingVertexFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT -> go @PhysicalDeviceProvokingVertexPropertiesEXT
+  STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT -> go @PipelineRasterizationProvokingVertexStateCreateInfoEXT
   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
@@ -1791,6 +1832,7 @@
 {-# complete (::&) :: PhysicalDeviceCustomBorderColorPropertiesEXT #-}
 {-# complete (::&) :: PhysicalDeviceCustomBorderColorFeaturesEXT #-}
 {-# complete (::&) :: PhysicalDeviceExtendedDynamicStateFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceExtendedDynamicState2FeaturesEXT #-}
 {-# complete (::&) :: RenderPassTransformBeginInfoQCOM #-}
 {-# complete (::&) :: CopyCommandTransformInfoQCOM #-}
 {-# complete (::&) :: CommandBufferInheritanceRenderPassTransformInfoQCOM #-}
@@ -1815,9 +1857,18 @@
 {-# complete (::&) :: PipelineFragmentShadingRateEnumStateCreateInfoNV #-}
 {-# complete (::&) :: PhysicalDeviceMutableDescriptorTypeFeaturesVALVE #-}
 {-# complete (::&) :: MutableDescriptorTypeCreateInfoVALVE #-}
+{-# complete (::&) :: PhysicalDeviceVertexInputDynamicStateFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceColorWriteEnableFeaturesEXT #-}
+{-# complete (::&) :: PipelineColorWriteCreateInfoEXT #-}
 {-# complete (::&) :: MemoryBarrier2KHR #-}
 {-# complete (::&) :: QueueFamilyCheckpointProperties2NV #-}
 {-# complete (::&) :: PhysicalDeviceSynchronization2FeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceInheritedViewportScissorFeaturesNV #-}
+{-# complete (::&) :: CommandBufferInheritanceViewportScissorInfoNV #-}
+{-# complete (::&) :: PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceProvokingVertexFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceProvokingVertexPropertiesEXT #-}
+{-# complete (::&) :: PipelineRasterizationProvokingVertexStateCreateInfoEXT #-}
 
 -- | View the head and tail of a 'Chain', see '::&'
 --
diff --git a/src/Vulkan/Core10.hs b/src/Vulkan/Core10.hs
--- a/src/Vulkan/Core10.hs
+++ b/src/Vulkan/Core10.hs
@@ -69,7 +69,7 @@
 import Vulkan.Core10.Shader
 import Vulkan.Core10.SparseResourceMemoryManagement
 import Data.Word (Word32)
-import Vulkan.Version (pattern MAKE_VERSION)
+import Vulkan.Version (pattern MAKE_API_VERSION)
 pattern API_VERSION_1_0 :: Word32
-pattern API_VERSION_1_0 = MAKE_VERSION 1 0 0
+pattern API_VERSION_1_0 = MAKE_API_VERSION 1 0 0
 
diff --git a/src/Vulkan/Core10/AllocationCallbacks.hs b/src/Vulkan/Core10/AllocationCallbacks.hs
--- a/src/Vulkan/Core10/AllocationCallbacks.hs
+++ b/src/Vulkan/Core10/AllocationCallbacks.hs
@@ -58,6 +58,8 @@
 -- 'Vulkan.Core10.BufferView.createBufferView',
 -- 'Vulkan.Core10.CommandPool.createCommandPool',
 -- 'Vulkan.Core10.Pipeline.createComputePipelines',
+-- 'Vulkan.Extensions.VK_NVX_binary_import.createCuFunctionNVX',
+-- 'Vulkan.Extensions.VK_NVX_binary_import.createCuModuleNVX',
 -- 'Vulkan.Extensions.VK_EXT_debug_report.createDebugReportCallbackEXT',
 -- 'Vulkan.Extensions.VK_EXT_debug_utils.createDebugUtilsMessengerEXT',
 -- 'Vulkan.Extensions.VK_KHR_deferred_host_operations.createDeferredOperationKHR',
@@ -101,6 +103,8 @@
 -- 'Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR',
 -- 'Vulkan.Extensions.VK_EXT_validation_cache.createValidationCacheEXT',
 -- 'Vulkan.Extensions.VK_NN_vi_surface.createViSurfaceNN',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCreateVideoSessionKHR vkCreateVideoSessionKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCreateVideoSessionParametersKHR vkCreateVideoSessionParametersKHR>,
 -- 'Vulkan.Extensions.VK_KHR_wayland_surface.createWaylandSurfaceKHR',
 -- 'Vulkan.Extensions.VK_KHR_win32_surface.createWin32SurfaceKHR',
 -- 'Vulkan.Extensions.VK_KHR_xcb_surface.createXcbSurfaceKHR',
@@ -110,6 +114,8 @@
 -- 'Vulkan.Core10.Buffer.destroyBuffer',
 -- 'Vulkan.Core10.BufferView.destroyBufferView',
 -- 'Vulkan.Core10.CommandPool.destroyCommandPool',
+-- 'Vulkan.Extensions.VK_NVX_binary_import.destroyCuFunctionNVX',
+-- 'Vulkan.Extensions.VK_NVX_binary_import.destroyCuModuleNVX',
 -- 'Vulkan.Extensions.VK_EXT_debug_report.destroyDebugReportCallbackEXT',
 -- 'Vulkan.Extensions.VK_EXT_debug_utils.destroyDebugUtilsMessengerEXT',
 -- 'Vulkan.Extensions.VK_KHR_deferred_host_operations.destroyDeferredOperationKHR',
@@ -138,6 +144,8 @@
 -- 'Vulkan.Extensions.VK_KHR_surface.destroySurfaceKHR',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.destroySwapchainKHR',
 -- 'Vulkan.Extensions.VK_EXT_validation_cache.destroyValidationCacheEXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkDestroyVideoSessionKHR vkDestroyVideoSessionKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkDestroyVideoSessionParametersKHR vkDestroyVideoSessionParametersKHR>,
 -- 'Vulkan.Core10.Memory.freeMemory',
 -- 'Vulkan.Extensions.VK_EXT_display_control.registerDeviceEventEXT',
 -- 'Vulkan.Extensions.VK_EXT_display_control.registerDisplayEventEXT'
diff --git a/src/Vulkan/Core10/Buffer.hs b/src/Vulkan/Core10/Buffer.hs
--- a/src/Vulkan/Core10/Buffer.hs
+++ b/src/Vulkan/Core10/Buffer.hs
@@ -368,8 +368,10 @@
 --     'Vulkan.Extensions.VK_EXT_buffer_device_address.BufferDeviceAddressCreateInfoEXT',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.BufferOpaqueCaptureAddressCreateInfo',
 --     'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationBufferCreateInfoNV',
+--     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileKHR VkVideoProfileKHR>,
 --     or
---     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo'
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfilesKHR VkVideoProfilesKHR>
 --
 -- -   #VUID-VkBufferCreateInfo-sType-unique# The @sType@ value of each
 --     struct in the @pNext@ chain /must/ be unique
@@ -413,9 +415,9 @@
     -- specifying the sharing mode of the buffer when it will be accessed by
     -- multiple queue families.
     sharingMode :: SharingMode
-  , -- | @pQueueFamilyIndices@ is a list of queue families that will access this
-    -- buffer (ignored if @sharingMode@ is not
-    -- 'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT').
+  , -- | @pQueueFamilyIndices@ is a pointer to an array of queue families that
+    -- will access this buffer. It is ignored if @sharingMode@ is not
+    -- 'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT'.
     queueFamilyIndices :: Vector Word32
   }
   deriving (Typeable)
diff --git a/src/Vulkan/Core10/BufferView.hs b/src/Vulkan/Core10/BufferView.hs
--- a/src/Vulkan/Core10/BufferView.hs
+++ b/src/Vulkan/Core10/BufferView.hs
@@ -107,7 +107,7 @@
                  => -- | @device@ is the logical device that creates the buffer view.
                     Device
                  -> -- | @pCreateInfo@ is a pointer to a 'BufferViewCreateInfo' structure
-                    -- containing parameters to be used to create the buffer.
+                    -- containing parameters to be used to create the buffer view.
                     BufferViewCreateInfo
                  -> -- | @pAllocator@ controls host memory allocation as described in the
                     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
diff --git a/src/Vulkan/Core10/CommandBuffer.hs b/src/Vulkan/Core10/CommandBuffer.hs
--- a/src/Vulkan/Core10/CommandBuffer.hs
+++ b/src/Vulkan/Core10/CommandBuffer.hs
@@ -75,6 +75,7 @@
 import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conditional_rendering (CommandBufferInheritanceConditionalRenderingInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_render_pass_transform (CommandBufferInheritanceRenderPassTransformInfoQCOM)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_inherited_viewport_scissor (CommandBufferInheritanceViewportScissorInfoNV)
 import Vulkan.Core10.Enums.CommandBufferLevel (CommandBufferLevel)
 import Vulkan.Core10.Enums.CommandBufferResetFlagBits (CommandBufferResetFlagBits(..))
 import Vulkan.Core10.Enums.CommandBufferResetFlagBits (CommandBufferResetFlags)
@@ -131,12 +132,18 @@
 --
 -- = Description
 --
--- 'allocateCommandBuffers' /can/ be used to create multiple command
--- buffers. If the creation of any of those command buffers fails, the
--- implementation /must/ destroy all successfully created command buffer
+-- 'allocateCommandBuffers' /can/ be used to allocate multiple command
+-- buffers. If the allocation of any of those command buffers fails, the
+-- implementation /must/ free all successfully allocated command buffer
 -- objects from this command, set all entries of the @pCommandBuffers@
 -- array to @NULL@ and return the error.
 --
+-- Note
+--
+-- Filling @pCommandBuffers@ with @NULL@ values on failure is an exception
+-- to the default error behavior that output parameters will have undefined
+-- contents.
+--
 -- When command buffers are first allocated, they are in the
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial state>.
 --
@@ -324,8 +331,8 @@
 --     is a secondary command buffer and either the @occlusionQueryEnable@
 --     member of the @pInheritanceInfo@ member of @pBeginInfo@ is
 --     'Vulkan.Core10.FundamentalTypes.FALSE', or the precise occlusion
---     queries feature is not enabled, the @queryFlags@ member of the
---     @pInheritanceInfo@ member @pBeginInfo@ /must/ not contain
+--     queries feature is not enabled, then
+--     @pBeginInfo->pInheritanceInfo->queryFlags@ /must/ not contain
 --     'Vulkan.Core10.Enums.QueryControlFlagBits.QUERY_CONTROL_PRECISE_BIT'
 --
 -- -   #VUID-vkBeginCommandBuffer-commandBuffer-02840# If @commandBuffer@
@@ -371,8 +378,9 @@
                    => -- | @commandBuffer@ is the handle of the command buffer which is to be put
                       -- in the recording state.
                       CommandBuffer
-                   -> -- | @pBeginInfo@ points to a 'CommandBufferBeginInfo' structure defining
-                      -- additional information about how the command buffer begins recording.
+                   -> -- | @pBeginInfo@ is a pointer to a 'CommandBufferBeginInfo' structure
+                      -- defining additional information about how the command buffer begins
+                      -- recording.
                       (CommandBufferBeginInfo a)
                    -> io ()
 beginCommandBuffer commandBuffer beginInfo = liftIO . evalContT $ do
@@ -408,7 +416,9 @@
 -- If there was an error during recording, the application will be notified
 -- by an unsuccessful return code returned by 'endCommandBuffer'. If the
 -- application wishes to further use the command buffer, the command buffer
--- /must/ be reset. The command buffer /must/ have been in the
+-- /must/ be reset.
+--
+-- The command buffer /must/ have been in the
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>,
 -- and is moved to the
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle executable state>.
@@ -638,7 +648,7 @@
 
 
 -- | VkCommandBufferInheritanceInfo - Structure specifying command buffer
--- inheritance info
+-- inheritance information
 --
 -- == Valid Usage
 --
@@ -679,9 +689,10 @@
 -- -   #VUID-VkCommandBufferInheritanceInfo-pNext-pNext# Each @pNext@
 --     member of any structure (including this one) in the @pNext@ chain
 --     /must/ be either @NULL@ or a pointer to a valid instance of
---     'Vulkan.Extensions.VK_EXT_conditional_rendering.CommandBufferInheritanceConditionalRenderingInfoEXT'
+--     'Vulkan.Extensions.VK_EXT_conditional_rendering.CommandBufferInheritanceConditionalRenderingInfoEXT',
+--     'Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM',
 --     or
---     'Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM'
+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV'
 --
 -- -   #VUID-VkCommandBufferInheritanceInfo-sType-unique# The @sType@ value
 --     of each struct in the @pNext@ chain /must/ be unique
@@ -768,6 +779,7 @@
   getNext CommandBufferInheritanceInfo{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends CommandBufferInheritanceInfo e => b) -> Maybe b
   extends _ f
+    | Just Refl <- eqT @e @CommandBufferInheritanceViewportScissorInfoNV = Just f
     | Just Refl <- eqT @e @CommandBufferInheritanceRenderPassTransformInfoQCOM = Just f
     | Just Refl <- eqT @e @CommandBufferInheritanceConditionalRenderingInfoEXT = Just f
     | otherwise = Nothing
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
@@ -325,13 +325,47 @@
 -- -   #VUID-vkCmdBindPipeline-pipelineBindPoint-02392# If
 --     @pipelineBindPoint@ is
 --     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_RAY_TRACING_KHR',
---     the @pipeline@ /must/ be a ray tracing pipeline
+--     @pipeline@ /must/ be a ray tracing pipeline
 --
--- -   #VUID-vkCmdBindPipeline-pipeline-03382# The @pipeline@ /must/ not
---     have been created with
+-- -   #VUID-vkCmdBindPipeline-pipeline-03382# @pipeline@ /must/ not have
+--     been created with
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'
 --     set
 --
+-- -   #VUID-vkCmdBindPipeline-commandBuffer-04808# If @commandBuffer@ is a
+--     secondary command buffer with
+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV'::@viewportScissor2D@
+--     enabled and @pipelineBindPoint@ is
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS',
+--     then the @pipeline@ /must/ have been created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     or 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT', and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     or 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' enabled.
+--
+-- -   #VUID-vkCmdBindPipeline-commandBuffer-04809# If @commandBuffer@ is a
+--     secondary command buffer with
+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV'::@viewportScissor2D@
+--     enabled and @pipelineBindPoint@ is
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--     and @pipeline@ was created with
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure and its @discardRectangleCount@ member is not @0@, then
+--     the pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     enabled.
+--
+-- -   #VUID-vkCmdBindPipeline-pipelineBindPoint-04881# If
+--     @pipelineBindPoint@ is
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-provokingVertexModePerPipeline provokingVertexModePerPipeline>
+--     limit is 'Vulkan.Core10.FundamentalTypes.FALSE', then pipeline’s
+--     'Vulkan.Extensions.VK_EXT_provoking_vertex.PipelineRasterizationProvokingVertexStateCreateInfoEXT'::@provokingVertexMode@
+--     /must/ be the same as that of any other pipelines previously bound
+--     to this bind point within the current renderpass instance, including
+--     any pipeline already bound when beginning the renderpass instance
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkCmdBindPipeline-commandBuffer-parameter# @commandBuffer@
@@ -430,6 +464,11 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>
 --     feature is not enabled, @viewportCount@ /must/ be @1@
 --
+-- -   #VUID-vkCmdSetViewport-commandBuffer-04821# @commandBuffer@ /must/
+--     not have
+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV'::@viewportScissor2D@
+--     enabled.
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkCmdSetViewport-commandBuffer-parameter# @commandBuffer@
@@ -542,6 +581,11 @@
 --     @extent.height@) /must/ not cause a signed integer addition overflow
 --     for any element of @pScissors@
 --
+-- -   #VUID-vkCmdSetScissor-viewportScissor2D-04789# If this command is
+--     recorded in a secondary command buffer with
+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV'::@viewportScissor2D@
+--     enabled, then this function /must/ not be called.
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkCmdSetScissor-commandBuffer-parameter# @commandBuffer@
@@ -685,8 +729,9 @@
 --
 -- = Description
 --
--- If @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.FALSE', no depth
--- bias is applied and the fragment’s depth values are unchanged.
+-- If @depthBiasEnable@ is 'Vulkan.Core10.FundamentalTypes.FALSE' at draw
+-- time, no depth bias is applied and the fragment’s depth values are
+-- unchanged.
 --
 -- @depthBiasSlopeFactor@ scales the maximum depth slope of the polygon,
 -- and @depthBiasConstantFactor@ scales the minimum resolvable difference
@@ -1245,7 +1290,7 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility Pipeline Layout Compatibility>.
 --
 -- A compatible descriptor set /must/ be bound for all set numbers that any
--- shaders in a pipeline access, at the time that a draw or dispatch
+-- shaders in a pipeline access, at the time that a drawing or dispatching
 -- command is recorded to execute using that pipeline. However, if none of
 -- the shaders in a pipeline statically use any bindings with a particular
 -- set number, then no descriptor set need be bound for that set number,
@@ -1424,7 +1469,7 @@
                          ("firstSet" ::: Word32)
                       -> -- | @pDescriptorSets@ is a pointer to an array of handles to
                          -- 'Vulkan.Core10.Handles.DescriptorSet' objects describing the descriptor
-                         -- sets to write to.
+                         -- sets to bind to.
                          ("descriptorSets" ::: Vector DescriptorSet)
                       -> -- | @pDynamicOffsets@ is a pointer to an array of @uint32_t@ values
                          -- specifying dynamic offsets.
@@ -1565,7 +1610,7 @@
 -- the offset indicated by @pOffsets@[i] from the start of the buffer
 -- @pBuffers@[i]. All vertex input attributes that use each of these
 -- bindings will use these updated addresses in their address calculations
--- for subsequent draw commands. If the
+-- for subsequent drawing commands. If the
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
 -- feature is enabled, elements of @pBuffers@ /can/ be
 -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and /can/ be used by the
@@ -1806,9 +1851,9 @@
 -- -   #VUID-vkCmdDraw-commandBuffer-02701# If the
 --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
 --     point used by this command requires any dynamic state, that state
---     /must/ have been set for @commandBuffer@, and done so after any
---     previously bound pipeline with the corresponding state not specified
---     as dynamic
+--     /must/ have been set or inherited for @commandBuffer@, and done so
+--     after any previously bound pipeline with the corresponding state not
+--     specified as dynamic
 --
 -- -   #VUID-vkCmdDraw-None-02859# There /must/ not have been any calls to
 --     dynamic state setting commands for any state not specified as
@@ -1970,7 +2015,7 @@
 --     dynamic state enabled, then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
@@ -1984,7 +2029,7 @@
 --     dynamic state enabled, then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @scissorCount@ parameter of
+--     drawing command, and the @scissorCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
@@ -2000,7 +2045,7 @@
 --     and
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ match the @scissorCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
@@ -2083,7 +2128,7 @@
 --     dynamic state enabled then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @primitiveTopology@ parameter of
+--     drawing command, and the @primitiveTopology@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
 --     /must/ be of the same
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
@@ -2091,6 +2136,47 @@
 --     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
 --     state
 --
+-- -   #VUID-vkCmdDraw-None-04875# If the bound graphics pipeline state was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDraw-None-04876# If the bound graphics pipeline state was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDraw-None-04877# If the bound graphics pipeline state was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDraw-logicOp-04878# If the bound graphics pipeline state
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command and the @logicOp@ /must/ be a valid
+--     'Vulkan.Core10.Enums.LogicOp.LogicOp' value
+--
+-- -   #VUID-vkCmdDraw-None-04879# If the bound graphics pipeline state was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
 -- -   #VUID-vkCmdDraw-primitiveFragmentShadingRateWithMultipleViewports-04552#
 --     If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
@@ -2102,7 +2188,7 @@
 --     then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ be @1@
 --
@@ -2123,6 +2209,16 @@
 --     /must/ be the same as the current subpass color and\/or
 --     depth\/stencil attachments
 --
+-- -   #VUID-vkCmdDraw-pStrides-04884# If the bound graphics pipeline was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @pStrides@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
+--     /must/ not be @NULL@
+--
 -- -   #VUID-vkCmdDraw-commandBuffer-02712# If @commandBuffer@ is a
 --     protected command buffer, any resource written to by the
 --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
@@ -2132,7 +2228,7 @@
 --     protected command buffer, pipeline stages other than the
 --     framebuffer-space and compute stages in the
 --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point /must/ not write to any resource
+--     point used by this command /must/ not write to any resource
 --
 -- -   #VUID-vkCmdDraw-commandBuffer-04617# If any of the shader stages of
 --     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
@@ -2224,7 +2320,7 @@
   "dynamic" mkVkCmdDrawIndexed
   :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> Int32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> Int32 -> Word32 -> IO ()
 
--- | vkCmdDrawIndexed - Issue an indexed draw into a command buffer
+-- | vkCmdDrawIndexed - Draw primitives with indexed vertices
 --
 -- = Description
 --
@@ -2351,9 +2447,9 @@
 -- -   #VUID-vkCmdDrawIndexed-commandBuffer-02701# If the
 --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
 --     point used by this command requires any dynamic state, that state
---     /must/ have been set for @commandBuffer@, and done so after any
---     previously bound pipeline with the corresponding state not specified
---     as dynamic
+--     /must/ have been set or inherited for @commandBuffer@, and done so
+--     after any previously bound pipeline with the corresponding state not
+--     specified as dynamic
 --
 -- -   #VUID-vkCmdDrawIndexed-None-02859# There /must/ not have been any
 --     calls to dynamic state setting commands for any state not specified
@@ -2520,7 +2616,7 @@
 --     dynamic state enabled, then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
@@ -2534,7 +2630,7 @@
 --     dynamic state enabled, then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @scissorCount@ parameter of
+--     drawing command, and the @scissorCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
@@ -2550,7 +2646,7 @@
 --     and
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ match the @scissorCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
@@ -2633,7 +2729,7 @@
 --     dynamic state enabled then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @primitiveTopology@ parameter of
+--     drawing command, and the @primitiveTopology@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
 --     /must/ be of the same
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
@@ -2641,6 +2737,47 @@
 --     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
 --     state
 --
+-- -   #VUID-vkCmdDrawIndexed-None-04875# If the bound graphics pipeline
+--     state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawIndexed-None-04876# If the bound graphics pipeline
+--     state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawIndexed-None-04877# If the bound graphics pipeline
+--     state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawIndexed-logicOp-04878# If the bound graphics pipeline
+--     state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command and the @logicOp@ /must/ be a valid
+--     'Vulkan.Core10.Enums.LogicOp.LogicOp' value
+--
+-- -   #VUID-vkCmdDrawIndexed-None-04879# If the bound graphics pipeline
+--     state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
 -- -   #VUID-vkCmdDrawIndexed-primitiveFragmentShadingRateWithMultipleViewports-04552#
 --     If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
@@ -2652,7 +2789,7 @@
 --     then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ be @1@
 --
@@ -2673,6 +2810,16 @@
 --     /must/ be the same as the current subpass color and\/or
 --     depth\/stencil attachments
 --
+-- -   #VUID-vkCmdDrawIndexed-pStrides-04884# If the bound graphics
+--     pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @pStrides@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
+--     /must/ not be @NULL@
+--
 -- -   #VUID-vkCmdDrawIndexed-commandBuffer-02712# If @commandBuffer@ is a
 --     protected command buffer, any resource written to by the
 --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
@@ -2682,7 +2829,7 @@
 --     protected command buffer, pipeline stages other than the
 --     framebuffer-space and compute stages in the
 --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point /must/ not write to any resource
+--     point used by this command /must/ not write to any resource
 --
 -- -   #VUID-vkCmdDrawIndexed-commandBuffer-04617# If any of the shader
 --     stages of the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
@@ -2783,7 +2930,7 @@
   "dynamic" mkVkCmdDrawIndirect
   :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()
 
--- | vkCmdDrawIndirect - Issue an indirect draw into a command buffer
+-- | vkCmdDrawIndirect - Draw primitives with indirect parameters
 --
 -- = Description
 --
@@ -2895,9 +3042,9 @@
 -- -   #VUID-vkCmdDrawIndirect-commandBuffer-02701# If the
 --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
 --     point used by this command requires any dynamic state, that state
---     /must/ have been set for @commandBuffer@, and done so after any
---     previously bound pipeline with the corresponding state not specified
---     as dynamic
+--     /must/ have been set or inherited for @commandBuffer@, and done so
+--     after any previously bound pipeline with the corresponding state not
+--     specified as dynamic
 --
 -- -   #VUID-vkCmdDrawIndirect-None-02859# There /must/ not have been any
 --     calls to dynamic state setting commands for any state not specified
@@ -3064,7 +3211,7 @@
 --     dynamic state enabled, then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
@@ -3078,7 +3225,7 @@
 --     dynamic state enabled, then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @scissorCount@ parameter of
+--     drawing command, and the @scissorCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
@@ -3094,7 +3241,7 @@
 --     and
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ match the @scissorCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
@@ -3177,7 +3324,7 @@
 --     dynamic state enabled then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @primitiveTopology@ parameter of
+--     drawing command, and the @primitiveTopology@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
 --     /must/ be of the same
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
@@ -3185,6 +3332,47 @@
 --     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
 --     state
 --
+-- -   #VUID-vkCmdDrawIndirect-None-04875# If the bound graphics pipeline
+--     state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawIndirect-None-04876# If the bound graphics pipeline
+--     state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawIndirect-None-04877# If the bound graphics pipeline
+--     state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawIndirect-logicOp-04878# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command and the @logicOp@ /must/ be a valid
+--     'Vulkan.Core10.Enums.LogicOp.LogicOp' value
+--
+-- -   #VUID-vkCmdDrawIndirect-None-04879# If the bound graphics pipeline
+--     state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
 -- -   #VUID-vkCmdDrawIndirect-primitiveFragmentShadingRateWithMultipleViewports-04552#
 --     If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
@@ -3196,7 +3384,7 @@
 --     then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ be @1@
 --
@@ -3217,6 +3405,16 @@
 --     /must/ be the same as the current subpass color and\/or
 --     depth\/stencil attachments
 --
+-- -   #VUID-vkCmdDrawIndirect-pStrides-04884# If the bound graphics
+--     pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @pStrides@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
+--     /must/ not be @NULL@
+--
 -- -   #VUID-vkCmdDrawIndirect-None-04007# All vertex input bindings
 --     accessed via vertex input variables declared in the vertex shader
 --     entry point’s interface /must/ have either valid or
@@ -3352,7 +3550,8 @@
   "dynamic" mkVkCmdDrawIndexedIndirect
   :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()
 
--- | vkCmdDrawIndexedIndirect - Perform an indexed indirect draw
+-- | vkCmdDrawIndexedIndirect - Draw primitives with indirect parameters and
+-- indexed vertices
 --
 -- = Description
 --
@@ -3466,9 +3665,9 @@
 -- -   #VUID-vkCmdDrawIndexedIndirect-commandBuffer-02701# If the
 --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
 --     point used by this command requires any dynamic state, that state
---     /must/ have been set for @commandBuffer@, and done so after any
---     previously bound pipeline with the corresponding state not specified
---     as dynamic
+--     /must/ have been set or inherited for @commandBuffer@, and done so
+--     after any previously bound pipeline with the corresponding state not
+--     specified as dynamic
 --
 -- -   #VUID-vkCmdDrawIndexedIndirect-None-02859# There /must/ not have
 --     been any calls to dynamic state setting commands for any state not
@@ -3636,7 +3835,7 @@
 --     dynamic state enabled, then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
@@ -3650,7 +3849,7 @@
 --     dynamic state enabled, then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @scissorCount@ parameter of
+--     drawing command, and the @scissorCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
@@ -3666,7 +3865,7 @@
 --     and
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ match the @scissorCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
@@ -3749,7 +3948,7 @@
 --     dynamic state enabled then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @primitiveTopology@ parameter of
+--     drawing command, and the @primitiveTopology@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
 --     /must/ be of the same
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
@@ -3757,6 +3956,47 @@
 --     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
 --     state
 --
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-04875# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-04876# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-04877# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-logicOp-04878# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command and the @logicOp@ /must/ be a valid
+--     'Vulkan.Core10.Enums.LogicOp.LogicOp' value
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-04879# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
 -- -   #VUID-vkCmdDrawIndexedIndirect-primitiveFragmentShadingRateWithMultipleViewports-04552#
 --     If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
@@ -3768,7 +4008,7 @@
 --     then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ be @1@
 --
@@ -3789,6 +4029,16 @@
 --     /must/ be the same as the current subpass color and\/or
 --     depth\/stencil attachments
 --
+-- -   #VUID-vkCmdDrawIndexedIndirect-pStrides-04884# If the bound graphics
+--     pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @pStrides@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
+--     /must/ not be @NULL@
+--
 -- -   #VUID-vkCmdDrawIndexedIndirect-None-04007# All vertex input bindings
 --     accessed via vertex input variables declared in the vertex shader
 --     entry point’s interface /must/ have either valid or
@@ -4032,9 +4282,9 @@
 -- -   #VUID-vkCmdDispatch-commandBuffer-02701# If the
 --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
 --     point used by this command requires any dynamic state, that state
---     /must/ have been set for @commandBuffer@, and done so after any
---     previously bound pipeline with the corresponding state not specified
---     as dynamic
+--     /must/ have been set or inherited for @commandBuffer@, and done so
+--     after any previously bound pipeline with the corresponding state not
+--     specified as dynamic
 --
 -- -   #VUID-vkCmdDispatch-None-02859# There /must/ not have been any calls
 --     to dynamic state setting commands for any state not specified as
@@ -4160,7 +4410,7 @@
 --     protected command buffer, pipeline stages other than the
 --     framebuffer-space and compute stages in the
 --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point /must/ not write to any resource
+--     point used by this command /must/ not write to any resource
 --
 -- -   #VUID-vkCmdDispatch-commandBuffer-04617# If any of the shader stages
 --     of the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
@@ -4249,7 +4499,7 @@
   "dynamic" mkVkCmdDispatchIndirect
   :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> IO ()
 
--- | vkCmdDispatchIndirect - Dispatch compute work items using indirect
+-- | vkCmdDispatchIndirect - Dispatch compute work items with indirect
 -- parameters
 --
 -- = Description
@@ -4360,9 +4610,9 @@
 -- -   #VUID-vkCmdDispatchIndirect-commandBuffer-02701# If the
 --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
 --     point used by this command requires any dynamic state, that state
---     /must/ have been set for @commandBuffer@, and done so after any
---     previously bound pipeline with the corresponding state not specified
---     as dynamic
+--     /must/ have been set or inherited for @commandBuffer@, and done so
+--     after any previously bound pipeline with the corresponding state not
+--     specified as dynamic
 --
 -- -   #VUID-vkCmdDispatchIndirect-None-02859# There /must/ not have been
 --     any calls to dynamic state setting commands for any state not
@@ -5018,12 +5268,12 @@
 --
 -- -   #VUID-vkCmdCopyImage-srcImage-04443# If @srcImage@ is of type
 --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element
---     of @pRegions@, @srcSubresource.baseArrayLayer@ /must/ be @0@ and and
+--     of @pRegions@, @srcSubresource.baseArrayLayer@ /must/ be @0@ and
 --     @srcSubresource.layerCount@ /must/ be @1@
 --
 -- -   #VUID-vkCmdCopyImage-dstImage-04444# If @dstImage@ is of type
 --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element
---     of @pRegions@, @dstSubresource.baseArrayLayer@ /must/ be @0@ and and
+--     of @pRegions@, @dstSubresource.baseArrayLayer@ /must/ be @0@ and
 --     @dstSubresource.layerCount@ /must/ be @1@
 --
 -- -   #VUID-vkCmdCopyImage-aspectMask-00142# For each element of
@@ -5551,55 +5801,55 @@
 --     present in @dstImage@
 --
 -- -   #VUID-vkCmdBlitImage-srcOffset-00243# For each element of
---     @pRegions@, @srcOffset@[0].x and @srcOffset@[1].x /must/ both be
+--     @pRegions@, @srcOffsets@[0].x and @srcOffsets@[1].x /must/ both be
 --     greater than or equal to @0@ and less than or equal to the width of
 --     the specified @srcSubresource@ of @srcImage@
 --
 -- -   #VUID-vkCmdBlitImage-srcOffset-00244# For each element of
---     @pRegions@, @srcOffset@[0].y and @srcOffset@[1].y /must/ both be
+--     @pRegions@, @srcOffsets@[0].y and @srcOffsets@[1].y /must/ both be
 --     greater than or equal to @0@ and less than or equal to the height of
 --     the specified @srcSubresource@ of @srcImage@
 --
 -- -   #VUID-vkCmdBlitImage-srcImage-00245# If @srcImage@ is of type
 --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
---     of @pRegions@, @srcOffset@[0].y /must/ be @0@ and @srcOffset@[1].y
+--     of @pRegions@, @srcOffsets@[0].y /must/ be @0@ and @srcOffsets@[1].y
 --     /must/ be @1@
 --
 -- -   #VUID-vkCmdBlitImage-srcOffset-00246# For each element of
---     @pRegions@, @srcOffset@[0].z and @srcOffset@[1].z /must/ both be
+--     @pRegions@, @srcOffsets@[0].z and @srcOffsets@[1].z /must/ both be
 --     greater than or equal to @0@ and less than or equal to the depth of
 --     the specified @srcSubresource@ of @srcImage@
 --
 -- -   #VUID-vkCmdBlitImage-srcImage-00247# If @srcImage@ is of type
 --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or
 --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
---     of @pRegions@, @srcOffset@[0].z /must/ be @0@ and @srcOffset@[1].z
+--     of @pRegions@, @srcOffsets@[0].z /must/ be @0@ and @srcOffsets@[1].z
 --     /must/ be @1@
 --
 -- -   #VUID-vkCmdBlitImage-dstOffset-00248# For each element of
---     @pRegions@, @dstOffset@[0].x and @dstOffset@[1].x /must/ both be
+--     @pRegions@, @dstOffsets@[0].x and @dstOffsets@[1].x /must/ both be
 --     greater than or equal to @0@ and less than or equal to the width of
 --     the specified @dstSubresource@ of @dstImage@
 --
 -- -   #VUID-vkCmdBlitImage-dstOffset-00249# For each element of
---     @pRegions@, @dstOffset@[0].y and @dstOffset@[1].y /must/ both be
+--     @pRegions@, @dstOffsets@[0].y and @dstOffsets@[1].y /must/ both be
 --     greater than or equal to @0@ and less than or equal to the height of
 --     the specified @dstSubresource@ of @dstImage@
 --
 -- -   #VUID-vkCmdBlitImage-dstImage-00250# If @dstImage@ is of type
 --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
---     of @pRegions@, @dstOffset@[0].y /must/ be @0@ and @dstOffset@[1].y
+--     of @pRegions@, @dstOffsets@[0].y /must/ be @0@ and @dstOffsets@[1].y
 --     /must/ be @1@
 --
 -- -   #VUID-vkCmdBlitImage-dstOffset-00251# For each element of
---     @pRegions@, @dstOffset@[0].z and @dstOffset@[1].z /must/ both be
+--     @pRegions@, @dstOffsets@[0].z and @dstOffsets@[1].z /must/ both be
 --     greater than or equal to @0@ and less than or equal to the depth of
 --     the specified @dstSubresource@ of @dstImage@
 --
 -- -   #VUID-vkCmdBlitImage-dstImage-00252# If @dstImage@ is of type
 --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or
 --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
---     of @pRegions@, @dstOffset@[0].z /must/ be @0@ and @dstOffset@[1].z
+--     of @pRegions@, @dstOffsets@[0].z /must/ be @0@ and @dstOffsets@[1].z
 --     /must/ be @1@
 --
 -- == Valid Usage (Implicit)
@@ -5843,7 +6093,7 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>
 --
 -- -   #VUID-vkCmdCopyBufferToImage-imageOffset-00198# For each element of
---     @pRegions@, @imageOffset.y@ and (imageExtent.height +
+--     @pRegions@, @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 @imageSubresource@
 --     of @dstImage@ where this refers to the height of the /plane/ of the
@@ -5869,7 +6119,7 @@
 --     @imageExtent.height@ /must/ be @1@
 --
 -- -   #VUID-vkCmdCopyBufferToImage-imageOffset-00200# For each element of
---     @pRegions@, @imageOffset.z@ and (imageExtent.depth +
+--     @pRegions@, @imageOffset.z@ and (@imageExtent.depth@ +
 --     @imageOffset.z@) /must/ both be greater than or equal to @0@ and
 --     less than or equal to the depth of the specified @imageSubresource@
 --     of @dstImage@
@@ -6182,7 +6432,7 @@
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
 --
 -- -   #VUID-vkCmdCopyImageToBuffer-imageOffset-00197# For each element of
---     @pRegions@ , @imageOffset.x@ and (@imageExtent.width@ +
+--     @pRegions@, @imageOffset.x@ and (@imageExtent.width@ +
 --     @imageOffset.x@) /must/ both be greater than or equal to @0@ and
 --     less than or equal to the width of the specified @imageSubresource@
 --     of @srcImage@ where this refers to the width of the /plane/ of the
@@ -6190,7 +6440,7 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>
 --
 -- -   #VUID-vkCmdCopyImageToBuffer-imageOffset-00198# For each element of
---     @pRegions@ , @imageOffset.y@ and (imageExtent.height +
+--     @pRegions@, @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 @imageSubresource@
 --     of @srcImage@ where this refers to the height of the /plane/ of the
@@ -6216,7 +6466,7 @@
 --     @imageExtent.height@ /must/ be @1@
 --
 -- -   #VUID-vkCmdCopyImageToBuffer-imageOffset-00200# For each element of
---     @pRegions@, @imageOffset.z@ and (imageExtent.depth +
+--     @pRegions@, @imageOffset.z@ and (@imageExtent.depth@ +
 --     @imageOffset.z@) /must/ both be greater than or equal to @0@ and
 --     less than or equal to the depth of the specified @imageSubresource@
 --     of @srcImage@
@@ -7607,7 +7857,7 @@
 -- -   #VUID-vkCmdSetEvent-stageMask-04097# If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
 --     feature is not enabled, @stageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
 --
 -- -   #VUID-vkCmdSetEvent-stageMask-4098# Any pipeline stage included in
 --     @stageMask@ /must/ be supported by the capabilities of the queue
@@ -7758,7 +8008,7 @@
 -- -   #VUID-vkCmdResetEvent-stageMask-04097# If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
 --     feature is not enabled, @stageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
 --
 -- -   #VUID-vkCmdResetEvent-stageMask-4098# Any pipeline stage included in
 --     @stageMask@ /must/ be supported by the capabilities of the queue
@@ -7927,13 +8177,13 @@
 -- 'cmdWaitEvents' is largely similar to
 -- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdWaitEvents2KHR', but /can/
 -- only wait on signal operations defined by 'cmdSetEvent'. As
--- 'cmdSetEvent' doesn’t define any access scopes, 'cmdWaitEvents' defines
+-- 'cmdSetEvent' does not define any access scopes, 'cmdWaitEvents' defines
 -- the first access scope for each event signal operation in addition to
 -- its own access scopes.
 --
 -- Note
 --
--- Since 'cmdSetEvent' doesn’t have any dependency information beyond a
+-- Since 'cmdSetEvent' does not have any dependency information beyond a
 -- stage mask, implementations do not have the same opportunity to perform
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-available-and-visible availability and visibility operations>
 -- or
@@ -7975,7 +8225,7 @@
 --
 -- The first
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
--- is limited to access in the pipeline stages determined by the
+-- is limited to accesses in the pipeline stages determined by the
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>
 -- specified by @srcStageMask@. Within that, the first access scope only
 -- includes the first access scopes defined by elements of the
@@ -7987,7 +8237,7 @@
 --
 -- The second
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
--- is limited to access in the pipeline stages determined by the
+-- is limited to accesses in the pipeline stages determined by the
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>
 -- specified by @dstStageMask@. Within that, the second access scope only
 -- includes the second access scopes defined by elements of the
@@ -8039,7 +8289,7 @@
 -- -   #VUID-vkCmdWaitEvents-srcStageMask-04097# If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
 --     feature is not enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
 --
 -- -   #VUID-vkCmdWaitEvents-srcStageMask-4098# Any pipeline stage included
 --     in @srcStageMask@ /must/ be supported by the capabilities of the
@@ -8093,7 +8343,7 @@
 -- -   #VUID-vkCmdWaitEvents-dstStageMask-04097# If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
 --     feature is not enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
 --
 -- -   #VUID-vkCmdWaitEvents-dstStageMask-4098# Any pipeline stage included
 --     in @dstStageMask@ /must/ be supported by the capabilities of the
@@ -8161,9 +8411,9 @@
 --
 -- -   #VUID-vkCmdWaitEvents-srcStageMask-01158# @srcStageMask@ /must/ be
 --     the bitwise OR of the @stageMask@ parameter used in previous calls
---     to 'cmdSetEvent' with any of the members of @pEvents@ and
+--     to 'cmdSetEvent' with any of the elements of @pEvents@ and
 --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'
---     if any of the members of @pEvents@ was set using
+--     if any of the elements of @pEvents@ was set using
 --     'Vulkan.Core10.Event.setEvent'
 --
 -- -   #VUID-vkCmdWaitEvents-pEvents-01163# If @pEvents@ includes one or
@@ -8179,8 +8429,8 @@
 -- -   #VUID-vkCmdWaitEvents-commandBuffer-01167# @commandBuffer@’s current
 --     device mask /must/ include exactly one physical device
 --
--- -   #VUID-vkCmdWaitEvents-pEvents-03847# Members of @pEvents@ /must/ not
---     have been signaled by
+-- -   #VUID-vkCmdWaitEvents-pEvents-03847# Elements of @pEvents@ /must/
+--     not have been signaled by
 --     'Vulkan.Extensions.VK_KHR_synchronization2.cmdSetEvent2KHR'
 --
 -- == Valid Usage (Implicit)
@@ -8330,8 +8580,8 @@
 --
 -- 'cmdPipelineBarrier' operates almost identically to
 -- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdPipelineBarrier2KHR',
--- other than the scopes and barriers defined as direct parameters rather
--- than being defined by an
+-- except that the scopes and barriers are defined as direct parameters
+-- rather than being defined by an
 -- 'Vulkan.Extensions.VK_KHR_synchronization2.DependencyInfoKHR'.
 --
 -- When 'cmdPipelineBarrier' is submitted to a queue, it defines a memory
@@ -8366,7 +8616,7 @@
 --
 -- The first
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
--- is limited to access in the pipeline stages determined by the
+-- is limited to accesses in the pipeline stages determined by the
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>
 -- specified by @srcStageMask@. Within that, the first access scope only
 -- includes the first access scopes defined by elements of the
@@ -8378,7 +8628,7 @@
 --
 -- The second
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
--- is limited to access in the pipeline stages determined by the
+-- is limited to accesses in the pipeline stages determined by the
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>
 -- specified by @dstStageMask@. Within that, the second access scope only
 -- includes the second access scopes defined by elements of the
@@ -8439,7 +8689,7 @@
 -- -   #VUID-vkCmdPipelineBarrier-srcStageMask-04097# If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
 --     feature is not enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
 --
 -- -   #VUID-vkCmdPipelineBarrier-srcStageMask-4098# Any pipeline stage
 --     included in @srcStageMask@ /must/ be supported by the capabilities
@@ -8493,7 +8743,7 @@
 -- -   #VUID-vkCmdPipelineBarrier-dstStageMask-04097# If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
 --     feature is not enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
 --
 -- -   #VUID-vkCmdPipelineBarrier-dstStageMask-4098# Any pipeline stage
 --     included in @dstStageMask@ /must/ be supported by the capabilities
@@ -9280,7 +9530,7 @@
 -- -   #VUID-vkCmdWriteTimestamp-pipelineStage-04081# If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
 --     feature is not enabled, @pipelineStage@ /must/ not be
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
 --
 -- -   #VUID-vkCmdWriteTimestamp-queryPool-01416# @queryPool@ /must/ have
 --     been created with a @queryType@ of
@@ -9292,6 +9542,9 @@
 -- -   #VUID-vkCmdWriteTimestamp-timestampValidBits-00829# The command
 --     pool’s queue family /must/ support a non-zero @timestampValidBits@
 --
+-- -   #VUID-vkCmdWriteTimestamp-query-04904# @query@ /must/ be less than
+--     the number of queries in @queryPool@
+--
 -- -   #VUID-vkCmdWriteTimestamp-None-00830# All queries used by the
 --     command /must/ be unavailable
 --
@@ -9355,8 +9608,8 @@
                   => -- | @commandBuffer@ is the command buffer into which the command will be
                      -- recorded.
                      CommandBuffer
-                  -> -- | @pipelineStage@ is one of the
-                     -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits',
+                  -> -- | @pipelineStage@ is a
+                     -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits' value,
                      -- specifying a stage of the pipeline.
                      PipelineStageFlagBits
                   -> -- | @queryPool@ is the query pool that will manage the timestamp.
@@ -9868,8 +10121,8 @@
 --     have been created with a @usage@ value including
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
 --
--- -   #VUID-vkCmdBeginRenderPass-initialLayout-00900# If any of the
---     @initialLayout@ members of the
+-- -   #VUID-vkCmdBeginRenderPass-initialLayout-00900# If the
+--     @initialLayout@ member of any of the
 --     'Vulkan.Core10.Pass.AttachmentDescription' structures specified when
 --     creating the render pass specified in the @renderPass@ member of
 --     @pRenderPassBegin@ is not
@@ -10495,7 +10748,7 @@
     -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits', selecting
     -- the color, depth and\/or stencil aspects to be copied.
     aspectMask :: ImageAspectFlags
-  , -- | @mipLevel@ is the mipmap level to copy from.
+  , -- | @mipLevel@ is the mipmap level to copy
     mipLevel :: Word32
   , -- | @baseArrayLayer@ and @layerCount@ are the starting layer and number of
     -- layers to copy.
@@ -10725,7 +10978,7 @@
 -- = Description
 --
 -- For each element of the @pRegions@ array, a blit operation is performed
--- the specified source and destination regions.
+-- for the specified source and destination regions.
 --
 -- == Valid Usage
 --
@@ -11077,7 +11330,8 @@
            zero
 
 
--- | VkRenderPassBeginInfo - Structure specifying render pass begin info
+-- | VkRenderPassBeginInfo - Structure specifying render pass begin
+-- information
 --
 -- = Description
 --
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
@@ -310,10 +310,6 @@
 --
 -- = Description
 --
--- @pAllocator@ controls host memory allocation as described in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
--- chapter.
---
 -- The created descriptor pool is returned in @pDescriptorPool@.
 --
 -- == Valid Usage (Implicit)
@@ -593,7 +589,7 @@
 -- fail due to lack of space if the call to 'allocateDescriptorSets' would
 -- cause the number of any given descriptor type to exceed the sum of all
 -- the @descriptorCount@ members of each element of
--- 'DescriptorPoolCreateInfo'::@pPoolSizes@ with a @member@ equal to that
+-- 'DescriptorPoolCreateInfo'::@pPoolSizes@ with a @type@ equal to that
 -- type.
 --
 -- Additionally, the allocation /may/ also fail if a call to
@@ -875,7 +871,8 @@
   pure $ ()
 
 
--- | VkDescriptorBufferInfo - Structure specifying descriptor buffer info
+-- | VkDescriptorBufferInfo - Structure specifying descriptor buffer
+-- information
 --
 -- = Description
 --
@@ -986,7 +983,8 @@
            zero
 
 
--- | VkDescriptorImageInfo - Structure specifying descriptor image info
+-- | VkDescriptorImageInfo - Structure specifying descriptor image
+-- information
 --
 -- = Description
 --
@@ -1153,7 +1151,10 @@
 -- element zero. If a binding has a @descriptorCount@ of zero, it is
 -- skipped. This behavior applies recursively, with the update affecting
 -- consecutive bindings as needed to update all @descriptorCount@
--- descriptors.
+-- descriptors. Consecutive bindings /must/ have identical
+-- elink::VkDescriptorType, elink::VkShaderStageFlags,
+-- 'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DescriptorBindingFlagBits',
+-- and immutable samplers references.
 --
 -- Note
 --
@@ -1485,11 +1486,6 @@
 --     been created with
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT' set
 --
--- -   #VUID-VkWriteDescriptorSet-descriptorCount-03048# All consecutive
---     bindings updated via a single 'WriteDescriptorSet' structure, except
---     those with a @descriptorCount@ of zero, /must/ have identical
---     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DescriptorBindingFlagBits'
---
 -- -   #VUID-VkWriteDescriptorSet-descriptorType-02752# If @descriptorType@
 --     is 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER',
 --     then @dstSet@ /must/ not have been allocated with a layout that
@@ -1551,17 +1547,26 @@
     -- then @dstArrayElement@ specifies the starting byte offset within the
     -- binding.
     dstArrayElement :: Word32
-  , -- | @descriptorCount@ is the number of descriptors to update (the number of
-    -- elements in @pImageInfo@, @pBufferInfo@, or @pTexelBufferView@ , or a
-    -- value matching the @dataSize@ member of a
-    -- 'Vulkan.Extensions.VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlockEXT'
-    -- structure in the @pNext@ chain , or a value matching the
-    -- @accelerationStructureCount@ of a
-    -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.WriteDescriptorSetAccelerationStructureKHR'
-    -- structure in the @pNext@ chain ). If the descriptor binding identified
-    -- by @dstSet@ and @dstBinding@ has a descriptor type of
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
+  , -- | @descriptorCount@ is the number of descriptors to update. If the
+    -- descriptor binding identified by @dstSet@ and @dstBinding@ has a
+    -- descriptor type of
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT',
     -- then @descriptorCount@ specifies the number of bytes to update.
+    -- Otherwise, @descriptorCount@ is one of
+    --
+    -- -   the number of elements in @pImageInfo@
+    --
+    -- -   the number of elements in @pBufferInfo@
+    --
+    -- -   the number of elements in @pTexelBufferView@
+    --
+    -- -   a value matching the @dataSize@ member of a
+    --     'Vulkan.Extensions.VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlockEXT'
+    --     structure in the @pNext@ chain
+    --
+    -- -   a value matching the @accelerationStructureCount@ of a
+    --     'Vulkan.Extensions.VK_KHR_acceleration_structure.WriteDescriptorSetAccelerationStructureKHR'
+    --     structure in the @pNext@ chain
     descriptorCount :: Word32
   , -- | @descriptorType@ is a
     -- 'Vulkan.Core10.Enums.DescriptorType.DescriptorType' specifying the type
@@ -1770,11 +1775,13 @@
 --     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
 --     flag set
 --
--- -   #VUID-VkCopyDescriptorSet-srcSet-01919# If @srcSet@’s layout was
---     created without the
+-- -   #VUID-VkCopyDescriptorSet-srcSet-04885# If @srcSet@’s layout was
+--     created with neither
 --     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
---     flag set, then @dstSet@’s layout /must/ also have been created
---     without the
+--     nor
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE'
+--     flags set, then @dstSet@’s layout /must/ have been created without
+--     the
 --     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
 --     flag set
 --
@@ -1786,11 +1793,13 @@
 --     'Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT'
 --     flag set
 --
--- -   #VUID-VkCopyDescriptorSet-srcSet-01921# If the descriptor pool from
---     which @srcSet@ was allocated was created without the
+-- -   #VUID-VkCopyDescriptorSet-srcSet-04887# If the descriptor pool from
+--     which @srcSet@ was allocated was created with neither
 --     'Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT'
---     flag set, then the descriptor pool from which @dstSet@ was allocated
---     /must/ also have been created without the
+--     nor
+--     'Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE'
+--     flags set, then the descriptor pool from which @dstSet@ was
+--     allocated /must/ have been created without the
 --     'Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT'
 --     flag set
 --
@@ -1962,15 +1971,15 @@
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'
 --     descriptor with immutable samplers does not modify the samplers (the
 --     image views are updated, but the sampler updates are ignored). If
---     @pImmutableSamplers@ is not @NULL@, then it points to an array of
---     sampler handles that will be copied into the set layout and used for
---     the corresponding binding. Only the sampler handles are copied; the
---     sampler objects /must/ not be destroyed before the final use of the
---     set layout and any descriptor pools and sets created using it. If
---     @pImmutableSamplers@ is @NULL@, then the sampler slots are dynamic
---     and sampler handles /must/ be bound into descriptor sets using this
---     layout. If @descriptorType@ is not one of these descriptor types,
---     then @pImmutableSamplers@ is ignored.
+--     @pImmutableSamplers@ is not @NULL@, then it is a pointer to an array
+--     of sampler handles that will be copied into the set layout and used
+--     for the corresponding binding. Only the sampler handles are copied;
+--     the sampler objects /must/ not be destroyed before the final use of
+--     the set layout and any descriptor pools and sets created using it.
+--     If @pImmutableSamplers@ is @NULL@, then the sampler slots are
+--     dynamic and sampler handles /must/ be bound into descriptor sets
+--     using this layout. If @descriptorType@ is not one of these
+--     descriptor types, then @pImmutableSamplers@ is ignored.
 --
 -- The above layout definition allows the descriptor bindings to be
 -- specified sparsely such that not all binding numbers between 0 and the
@@ -2057,10 +2066,10 @@
     -- type of resource descriptors are used for this binding.
     descriptorType :: DescriptorType
   , -- | @descriptorCount@ is the number of descriptors contained in the binding,
-    -- accessed in a shader as an array , except if @descriptorType@ is
+    -- accessed in a shader as an array, except if @descriptorType@ is
     -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
     -- in which case @descriptorCount@ is the size in bytes of the inline
-    -- uniform block . If @descriptorCount@ is zero this binding entry is
+    -- uniform block. If @descriptorCount@ is zero this binding entry is
     -- reserved and the resource /must/ not be accessed from any stage via this
     -- binding within any pipeline using the set layout.
     descriptorCount :: Word32
@@ -2407,9 +2416,10 @@
 --
 -- = Description
 --
--- If multiple 'DescriptorPoolSize' structures appear in the @pPoolSizes@
--- array then the pool will be created with enough storage for the total
--- number of descriptors of each type.
+-- If multiple 'DescriptorPoolSize' structures containing the same
+-- descriptor type appear in the @pPoolSizes@ array then the pool will be
+-- created with enough storage for the total number of descriptors of each
+-- type.
 --
 -- Fragmentation of a descriptor pool is possible and /may/ lead to
 -- descriptor set allocation failures. A failure due to fragmentation is
@@ -2464,8 +2474,27 @@
 -- descriptor. A mutable descriptor /can/ be allocated from a pool entry if
 -- the type list in 'DescriptorSetLayoutCreateInfo' is a subset of the type
 -- list declared in the descriptor pool, or if the pool entry is created
--- without a descriptor type list.
+-- without a descriptor type list. Multiple @pPoolSizes@ entries with
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_MUTABLE_VALVE' /can/
+-- be declared. When multiple such pool entries are present in
+-- @pPoolSizes@, they specify sets of supported descriptor types which
+-- either fully overlap, partially overlap, or are disjoint. Two sets fully
+-- overlap if the sets of supported descriptor types are equal. If the sets
+-- are not disjoint they partially overlap. A pool entry without a
+-- 'Vulkan.Extensions.VK_VALVE_mutable_descriptor_type.MutableDescriptorTypeListVALVE'
+-- assigned to it is considered to partially overlap any other pool entry
+-- which has a
+-- 'Vulkan.Extensions.VK_VALVE_mutable_descriptor_type.MutableDescriptorTypeListVALVE'
+-- assigned to it. The application /must/ ensure that partial overlap does
+-- not exist in @pPoolSizes@.
 --
+-- Note
+--
+-- The requirement of no partial overlap is intended to resolve ambiguity
+-- for validation as there is no confusion which @pPoolSizes@ entries will
+-- be allocated from. An implementation is not expected to depend on this
+-- requirement.
+--
 -- == Valid Usage
 --
 -- -   #VUID-VkDescriptorPoolCreateInfo-maxSets-00301# @maxSets@ /must/ be
@@ -2488,6 +2517,14 @@
 --     bit set,
 --     'Vulkan.Extensions.VK_VALVE_mutable_descriptor_type.PhysicalDeviceMutableDescriptorTypeFeaturesVALVE'::@mutableDescriptorType@
 --     /must/ be enabled
+--
+-- -   #VUID-VkDescriptorPoolCreateInfo-pPoolSizes-04787# If @pPoolSizes@
+--     contains a @descriptorType@ of
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_MUTABLE_VALVE',
+--     any other
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_MUTABLE_VALVE'
+--     element in @pPoolSizes@ /must/ not have sets of supported descriptor
+--     types which partially overlap
 --
 -- == Valid Usage (Implicit)
 --
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
@@ -96,6 +96,7 @@
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_device_coherent_memory (PhysicalDeviceCoherentMemoryFeaturesAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_color_write_enable (PhysicalDeviceColorWriteEnableFeaturesEXT)
 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)
@@ -109,6 +110,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_memory_report (PhysicalDeviceDeviceMemoryReportFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_diagnostics_config (PhysicalDeviceDiagnosticsConfigFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_scissor_exclusive (PhysicalDeviceExclusiveScissorFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state2 (PhysicalDeviceExtendedDynamicState2FeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state (PhysicalDeviceExtendedDynamicStateFeaturesEXT)
 import Vulkan.Core10.DeviceInitialization (PhysicalDeviceFeatures)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceFeatures2)
@@ -122,6 +124,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_robustness (PhysicalDeviceImageRobustnessFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer (PhysicalDeviceImagelessFramebufferFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_index_type_uint8 (PhysicalDeviceIndexTypeUint8FeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_inherited_viewport_scissor (PhysicalDeviceInheritedViewportScissorFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_inline_uniform_block (PhysicalDeviceInlineUniformBlockFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_line_rasterization (PhysicalDeviceLineRasterizationFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_memory_priority (PhysicalDeviceMemoryPriorityFeaturesEXT)
@@ -134,6 +137,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_portability_subset (PhysicalDevicePortabilitySubsetFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_private_data (PhysicalDevicePrivateDataFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (PhysicalDeviceProtectedMemoryFeatures)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_provoking_vertex (PhysicalDeviceProvokingVertexFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_query (PhysicalDeviceRayQueryFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (PhysicalDeviceRayTracingPipelineFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_representative_fragment_test (PhysicalDeviceRepresentativeFragmentTestFeaturesNV)
@@ -163,10 +167,12 @@
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout (PhysicalDeviceUniformBufferStandardLayoutFeatures)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers (PhysicalDeviceVariablePointersFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_attribute_divisor (PhysicalDeviceVertexAttributeDivisorFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state (PhysicalDeviceVertexInputDynamicStateFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Core12 (PhysicalDeviceVulkan11Features)
 import {-# SOURCE #-} Vulkan.Core12 (PhysicalDeviceVulkan12Features)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model (PhysicalDeviceVulkanMemoryModelFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_workgroup_memory_explicit_layout (PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_ycbcr_2plane_444_formats (PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_ycbcr_image_arrays (PhysicalDeviceYcbcrImageArraysFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_zero_initialize_workgroup_memory (PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR)
 import Vulkan.Core10.Handles (PhysicalDevice_T)
@@ -213,9 +219,8 @@
 --
 -- Multiple logical devices /can/ be created from the same physical device.
 -- Logical device creation /may/ fail due to lack of device-specific
--- resources (in addition to the other errors). If that occurs,
--- 'createDevice' will return
--- 'Vulkan.Core10.Enums.Result.ERROR_TOO_MANY_OBJECTS'.
+-- resources (in addition to other errors). If that occurs, 'createDevice'
+-- will return 'Vulkan.Core10.Enums.Result.ERROR_TOO_MANY_OBJECTS'.
 --
 -- == Valid Usage
 --
@@ -454,9 +459,9 @@
   , -- | @flags@ is a bitmask indicating behavior of the queue.
     flags :: DeviceQueueCreateFlags
   , -- | @queueFamilyIndex@ is an unsigned integer indicating the index of the
-    -- queue family to create on this device. This index corresponds to the
-    -- index of an element of the @pQueueFamilyProperties@ array that was
-    -- returned by
+    -- queue family in which to create the queue on this device. This index
+    -- corresponds to the index of an element of the @pQueueFamilyProperties@
+    -- array that was returned by
     -- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceQueueFamilyProperties'.
     queueFamilyIndex :: Word32
   , -- | @pQueuePriorities@ is a pointer to an array of @queueCount@ normalized
@@ -674,6 +679,24 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
 --     /must/ not be enabled
 --
+-- -   #VUID-VkDeviceCreateInfo-None-04896# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>
+--     is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderImageInt64Atomics shaderImageInt64Atomics>
+--     /must/ be enabled
+--
+-- -   #VUID-VkDeviceCreateInfo-None-04897# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageFloat32Atomics sparseImageFloat32Atomics>
+--     is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderImageFloat32Atomics shaderImageFloat32Atomics>
+--     /must/ be enabled
+--
+-- -   #VUID-VkDeviceCreateInfo-None-04898# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageFloat32AtomicAdd sparseImageFloat32AtomicAdd>
+--     is enabled,
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderImageFloat32AtomicAdd shaderImageFloat32AtomicAdd>
+--     /must/ be enabled
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkDeviceCreateInfo-sType-sType# @sType@ /must/ be
@@ -696,6 +719,7 @@
 --     'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeatures',
 --     'Vulkan.Extensions.VK_EXT_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeaturesEXT',
 --     'Vulkan.Extensions.VK_AMD_device_coherent_memory.PhysicalDeviceCoherentMemoryFeaturesAMD',
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.PhysicalDeviceColorWriteEnableFeaturesEXT',
 --     'Vulkan.Extensions.VK_NV_compute_shader_derivatives.PhysicalDeviceComputeShaderDerivativesFeaturesNV',
 --     'Vulkan.Extensions.VK_EXT_conditional_rendering.PhysicalDeviceConditionalRenderingFeaturesEXT',
 --     'Vulkan.Extensions.VK_NV_cooperative_matrix.PhysicalDeviceCooperativeMatrixFeaturesNV',
@@ -709,6 +733,7 @@
 --     'Vulkan.Extensions.VK_EXT_device_memory_report.PhysicalDeviceDeviceMemoryReportFeaturesEXT',
 --     'Vulkan.Extensions.VK_NV_device_diagnostics_config.PhysicalDeviceDiagnosticsConfigFeaturesNV',
 --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PhysicalDeviceExclusiveScissorFeaturesNV',
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.PhysicalDeviceExtendedDynamicState2FeaturesEXT',
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.PhysicalDeviceExtendedDynamicStateFeaturesEXT',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
 --     'Vulkan.Extensions.VK_EXT_fragment_density_map2.PhysicalDeviceFragmentDensityMap2FeaturesEXT',
@@ -721,6 +746,7 @@
 --     'Vulkan.Extensions.VK_EXT_image_robustness.PhysicalDeviceImageRobustnessFeaturesEXT',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.PhysicalDeviceImagelessFramebufferFeatures',
 --     'Vulkan.Extensions.VK_EXT_index_type_uint8.PhysicalDeviceIndexTypeUint8FeaturesEXT',
+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.PhysicalDeviceInheritedViewportScissorFeaturesNV',
 --     'Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockFeaturesEXT',
 --     'Vulkan.Extensions.VK_EXT_line_rasterization.PhysicalDeviceLineRasterizationFeaturesEXT',
 --     'Vulkan.Extensions.VK_EXT_memory_priority.PhysicalDeviceMemoryPriorityFeaturesEXT',
@@ -733,6 +759,7 @@
 --     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR',
 --     'Vulkan.Extensions.VK_EXT_private_data.PhysicalDevicePrivateDataFeaturesEXT',
 --     'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryFeatures',
+--     'Vulkan.Extensions.VK_EXT_provoking_vertex.PhysicalDeviceProvokingVertexFeaturesEXT',
 --     'Vulkan.Extensions.VK_KHR_ray_query.PhysicalDeviceRayQueryFeaturesKHR',
 --     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelineFeaturesKHR',
 --     'Vulkan.Extensions.VK_NV_representative_fragment_test.PhysicalDeviceRepresentativeFragmentTestFeaturesNV',
@@ -762,10 +789,12 @@
 --     'Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout.PhysicalDeviceUniformBufferStandardLayoutFeatures',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers.PhysicalDeviceVariablePointersFeatures',
 --     'Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorFeaturesEXT',
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.PhysicalDeviceVertexInputDynamicStateFeaturesEXT',
 --     'Vulkan.Core12.PhysicalDeviceVulkan11Features',
 --     'Vulkan.Core12.PhysicalDeviceVulkan12Features',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model.PhysicalDeviceVulkanMemoryModelFeatures',
 --     'Vulkan.Extensions.VK_KHR_workgroup_memory_explicit_layout.PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR',
+--     'Vulkan.Extensions.VK_EXT_ycbcr_2plane_444_formats.PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT',
 --     'Vulkan.Extensions.VK_EXT_ycbcr_image_arrays.PhysicalDeviceYcbcrImageArraysFeaturesEXT',
 --     or
 --     'Vulkan.Extensions.VK_KHR_zero_initialize_workgroup_memory.PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR'
@@ -848,7 +877,12 @@
   getNext DeviceCreateInfo{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends DeviceCreateInfo e => b) -> Maybe b
   extends _ f
+    | Just Refl <- eqT @e @PhysicalDeviceProvokingVertexFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceInheritedViewportScissorFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceSynchronization2FeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceColorWriteEnableFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceVertexInputDynamicStateFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceMutableDescriptorTypeFeaturesVALVE = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFragmentShadingRateEnumsFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderTerminateInvocationFeaturesKHR = Just f
@@ -862,6 +896,7 @@
     | Just Refl <- eqT @e @PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = Just f
     | Just Refl <- eqT @e @DeviceDiagnosticsConfigCreateInfoNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDiagnosticsConfigFeaturesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceExtendedDynamicState2FeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceExtendedDynamicStateFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCustomBorderColorFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCoherentMemoryFeaturesAMD = Just f
diff --git a/src/Vulkan/Core10/DeviceInitialization.hs b/src/Vulkan/Core10/DeviceInitialization.hs
--- a/src/Vulkan/Core10/DeviceInitialization.hs
+++ b/src/Vulkan/Core10/DeviceInitialization.hs
@@ -34,7 +34,6 @@
                                            , SystemAllocationScope(..)
                                            , PhysicalDeviceType(..)
                                            , Format(..)
-                                           , StructureType(..)
                                            , QueueFlagBits(..)
                                            , QueueFlags
                                            , MemoryPropertyFlagBits(..)
@@ -237,7 +236,6 @@
 import Vulkan.Core10.Enums.QueueFlagBits (QueueFlags)
 import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits(..))
 import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlags)
-import Vulkan.Core10.Enums.StructureType (StructureType(..))
 import Vulkan.Core10.Enums.SystemAllocationScope (SystemAllocationScope(..))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
@@ -432,9 +430,8 @@
 -- variable is overwritten with the number of handles actually written to
 -- @pPhysicalDevices@. If @pPhysicalDeviceCount@ is less than the number of
 -- physical devices available, at most @pPhysicalDeviceCount@ structures
--- will be written. If @pPhysicalDeviceCount@ is smaller than the number of
--- physical devices available, 'Vulkan.Core10.Enums.Result.INCOMPLETE' will
--- be returned instead of 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate
+-- will be written, and 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be
+-- returned instead of 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate
 -- that not all the available physical devices were returned.
 --
 -- == Valid Usage (Implicit)
@@ -1051,6 +1048,13 @@
 -- associated with a 'Vulkan.Core10.Handles.PhysicalDevice' and its
 -- children.
 --
+-- Note
+--
+-- The encoding of @driverVersion@ is implementation-defined. It /may/ not
+-- use the same encoding as @apiVersion@. Applications should follow
+-- information from the /vendor/ on how to extract the version information
+-- from @driverVersion@.
+--
 -- The @vendorID@ and @deviceID@ fields are provided to allow applications
 -- to adapt to device characteristics that are not adequately exposed by
 -- other Vulkan queries.
@@ -1209,7 +1213,7 @@
            zero
 
 
--- | VkApplicationInfo - Structure specifying application info
+-- | VkApplicationInfo - Structure specifying application information
 --
 -- = Description
 --
@@ -1270,12 +1274,12 @@
 --
 -- Providing a @NULL@ 'InstanceCreateInfo'::@pApplicationInfo@ or providing
 -- an @apiVersion@ of 0 is equivalent to providing an @apiVersion@ of
--- @VK_MAKE_VERSION(1,0,0)@.
+-- @VK_MAKE_API_VERSION(0,1,0,0)@.
 --
 -- == Valid Usage
 --
 -- -   #VUID-VkApplicationInfo-apiVersion-04010# If @apiVersion@ is not
---     @0@, then it /must/ be greater or equal to
+--     @0@, then it /must/ be greater than or equal to
 --     'Vulkan.Core10.API_VERSION_1_0'
 --
 -- == Valid Usage (Implicit)
@@ -1524,10 +1528,10 @@
 --
 -- Possible values of @minImageTransferGranularity@ are:
 --
--- -   (0,0,0) which indicates that only whole mip levels /must/ be
---     transferred using the image transfer operations on the corresponding
---     queues. In this case, the following restrictions apply to all offset
---     and extent parameters of image transfer operations:
+-- -   (0,0,0) specifies that only whole mip levels /must/ be transferred
+--     using the image transfer operations on the corresponding queues. In
+--     this case, the following restrictions apply to all offset and extent
+--     parameters of image transfer operations:
 --
 --     -   The @x@, @y@, and @z@ members of a
 --         'Vulkan.Core10.FundamentalTypes.Offset3D' parameter /must/
@@ -2326,8 +2330,7 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceFeatures' structure describe the
--- following features:
+-- This structure describes the following features:
 --
 -- = See Also
 --
@@ -2594,7 +2597,7 @@
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxDrawIndirectCount maxDrawIndirectCount>.
     multiDrawIndirect :: Bool
   , -- | #features-drawIndirectFirstInstance# @drawIndirectFirstInstance@
-    -- specifies whether indirect draw calls support the @firstInstance@
+    -- specifies whether indirect drawing calls support the @firstInstance@
     -- parameter. If this feature is not enabled, the @firstInstance@ member of
     -- all 'Vulkan.Core10.OtherTypes.DrawIndirectCommand' and
     -- 'Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand' structures that
@@ -2882,14 +2885,14 @@
     -- @vertexPipelineStoresAndAtomics@ specifies whether storage buffers and
     -- images support stores and atomic operations in the vertex, tessellation,
     -- and geometry shader stages. If this feature is not enabled, all storage
-    -- image, storage texel buffers, and storage buffer variables used by these
+    -- image, storage texel buffer, and storage buffer variables used by these
     -- stages in shader modules /must/ be decorated with the @NonWritable@
     -- decoration (or the @readonly@ memory qualifier in GLSL).
     vertexPipelineStoresAndAtomics :: Bool
   , -- | #features-fragmentStoresAndAtomics# @fragmentStoresAndAtomics@ specifies
     -- whether storage buffers and images support stores and atomic operations
     -- in the fragment shader stage. If this feature is not enabled, all
-    -- storage image, storage texel buffers, and storage buffer variables used
+    -- storage image, storage texel buffer, and storage buffer variables used
     -- by the fragment stage in shader modules /must/ be decorated with the
     -- @NonWritable@ decoration (or the @readonly@ memory qualifier in GLSL).
     fragmentStoresAndAtomics :: Bool
@@ -2913,7 +2916,7 @@
   , -- | #features-shaderImageGatherExtended# @shaderImageGatherExtended@
     -- specifies whether the extended set of image gather instructions are
     -- available in shader code. If this feature is not enabled, the
-    -- @OpImage@*@Gather@ instructions do not support the @Offset@ and
+    -- @OpImage*Gather@ instructions do not support the @Offset@ and
     -- @ConstOffsets@ operands. This also specifies whether shader modules
     -- /can/ declare the @ImageGatherExtended@ capability.
     shaderImageGatherExtended :: Bool
@@ -3103,7 +3106,7 @@
   , -- | #features-shaderResourceResidency# @shaderResourceResidency@ specifies
     -- whether image operations that return resource residency information are
     -- supported in shader code. If this feature is not enabled, the
-    -- @OpImageSparse@* instructions /must/ not be used in shader code. This
+    -- @OpImageSparse*@ instructions /must/ not be used in shader code. This
     -- also specifies whether shader modules /can/ declare the
     -- @SparseResidency@ capability. The feature requires at least one of the
     -- @sparseResidency*@ features to be supported.
@@ -3532,7 +3535,7 @@
   , -- | @residencyNonResidentStrict@ specifies whether the physical device /can/
     -- consistently access non-resident regions of a resource. If this property
     -- is 'Vulkan.Core10.FundamentalTypes.TRUE', access to non-resident regions
-    -- of resources will be guaranteed to return values as if the resource were
+    -- of resources will be guaranteed to return values as if the resource was
     -- populated with 0; writes to non-resident regions will be discarded.
     residencyNonResidentStrict :: Bool
   }
@@ -3595,17 +3598,6 @@
 -- are available in the @limits@ member of the 'PhysicalDeviceProperties'
 -- structure which is returned from 'getPhysicalDeviceProperties'.
 --
--- = Description
---
--- [1]
---     For all bitmasks of
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits', the
---     sample count limits defined above represent the minimum supported
---     sample counts for each image type. Individual images /may/ support
---     additional sample counts, which are queried using
---     'getPhysicalDeviceImageFormatProperties' as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-supported-sample-counts Supported Sample Counts>.
---
 -- = See Also
 --
 -- 'Vulkan.Core10.FundamentalTypes.Bool32',
@@ -3659,19 +3651,19 @@
     -- structure.
     maxTexelBufferElements :: Word32
   , -- | #limits-maxUniformBufferRange# @maxUniformBufferRange@ is the maximum
-    -- value that /can/ be specified in the @range@ member of any
-    -- 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo' structures passed to
-    -- a call to 'Vulkan.Core10.DescriptorSet.updateDescriptorSets' for
-    -- descriptors of type
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER' or
+    -- value that /can/ be specified in the @range@ member of a
+    -- 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo' structure passed to
+    -- 'Vulkan.Core10.DescriptorSet.updateDescriptorSets' for descriptors of
+    -- type 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'
+    -- or
     -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'.
     maxUniformBufferRange :: Word32
   , -- | #limits-maxStorageBufferRange# @maxStorageBufferRange@ is the maximum
-    -- value that /can/ be specified in the @range@ member of any
-    -- 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo' structures passed to
-    -- a call to 'Vulkan.Core10.DescriptorSet.updateDescriptorSets' for
-    -- descriptors of type
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER' or
+    -- value that /can/ be specified in the @range@ member of a
+    -- 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo' structure passed to
+    -- 'Vulkan.Core10.DescriptorSet.updateDescriptorSets' for descriptors of
+    -- type 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'
+    -- or
     -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'.
     maxStorageBufferRange :: Word32
   , -- | #limits-maxPushConstantsSize# @maxPushConstantsSize@ is the maximum
@@ -3698,7 +3690,7 @@
     bufferImageGranularity :: DeviceSize
   , -- | #limits-sparseAddressSpaceSize# @sparseAddressSpaceSize@ is the total
     -- amount of address space available, in bytes, for sparse memory
-    -- resources. This is an upper bound on the sum of the size of all sparse
+    -- resources. This is an upper bound on the sum of the sizes of all sparse
     -- resources, regardless of whether any memory is bound to them.
     sparseAddressSpaceSize :: DeviceSize
   , -- | #limits-maxBoundDescriptorSets# @maxBoundDescriptorSets@ is the maximum
@@ -4036,8 +4028,8 @@
     maxGeometryOutputVertices :: Word32
   , -- | #limits-maxGeometryTotalOutputComponents#
     -- @maxGeometryTotalOutputComponents@ is the maximum total number of
-    -- components of output, across all emitted vertices, which /can/ be output
-    -- from the geometry shader stage.
+    -- components of output variables, across all emitted vertices, which /can/
+    -- be output from the geometry shader stage.
     maxGeometryTotalOutputComponents :: Word32
   , -- | #limits-maxFragmentInputComponents# @maxFragmentInputComponents@ is the
     -- maximum number of components of input variables which /can/ be provided
@@ -4081,10 +4073,10 @@
     maxComputeSharedMemorySize :: Word32
   , -- | #limits-maxComputeWorkGroupCount# @maxComputeWorkGroupCount@[3] is the
     -- maximum number of local workgroups that /can/ be dispatched by a single
-    -- dispatch command. These three values represent the maximum number of
+    -- dispatching command. These three values represent the maximum number of
     -- local workgroups for the X, Y, and Z dimensions, respectively. The
-    -- workgroup count parameters to the dispatch commands /must/ be less than
-    -- or equal to the corresponding limit. See
+    -- workgroup count parameters to the dispatching commands /must/ be less
+    -- than or equal to the corresponding limit. See
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dispatch>.
     maxComputeWorkGroupCount :: (Word32, Word32, Word32)
   , -- | #limits-maxComputeWorkGroupInvocations# @maxComputeWorkGroupInvocations@
@@ -4232,20 +4224,20 @@
     -- this limit.
     minStorageBufferOffsetAlignment :: DeviceSize
   , -- | #limits-minTexelOffset# @minTexelOffset@ is the minimum offset value for
-    -- the @ConstOffset@ image operand of any of the @OpImageSample@* or
-    -- @OpImageFetch@* image instructions.
+    -- the @ConstOffset@ image operand of any of the @OpImageSample*@ or
+    -- @OpImageFetch*@ image instructions.
     minTexelOffset :: Int32
   , -- | #limits-maxTexelOffset# @maxTexelOffset@ is the maximum offset value for
-    -- the @ConstOffset@ image operand of any of the @OpImageSample@* or
-    -- @OpImageFetch@* image instructions.
+    -- the @ConstOffset@ image operand of any of the @OpImageSample*@ or
+    -- @OpImageFetch*@ image instructions.
     maxTexelOffset :: Word32
   , -- | #limits-minTexelGatherOffset# @minTexelGatherOffset@ is the minimum
     -- offset value for the @Offset@, @ConstOffset@, or @ConstOffsets@ image
-    -- operands of any of the @OpImage@*@Gather@ image instructions.
+    -- operands of any of the @OpImage*Gather@ image instructions.
     minTexelGatherOffset :: Int32
   , -- | #limits-maxTexelGatherOffset# @maxTexelGatherOffset@ is the maximum
     -- offset value for the @Offset@, @ConstOffset@, or @ConstOffsets@ image
-    -- operands of any of the @OpImage@*@Gather@ image instructions.
+    -- operands of any of the @OpImage*Gather@ image instructions.
     maxTexelGatherOffset :: Word32
   , -- | #limits-minInterpolationOffset# @minInterpolationOffset@ is the base
     -- minimum (inclusive) negative offset value for the @Offset@ operand of
@@ -4338,7 +4330,7 @@
   , -- | #limits-sampledImageStencilSampleCounts#
     -- @sampledImageStencilSampleCounts@ is a bitmask1 of
     -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' indicating
-    -- the sample supported for all 2D images created with
+    -- the sample counts supported for all 2D images created with
     -- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', @usage@
     -- containing
     -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT', and a
@@ -4459,6 +4451,15 @@
   , -- | #limits-nonCoherentAtomSize# @nonCoherentAtomSize@ is the size and
     -- alignment in bytes that bounds concurrent access to
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-hostaccess host-mapped device memory>.
+    --
+    -- [1]
+    --     For all bitmasks of
+    --     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits', the
+    --     sample count limits defined above represent the minimum supported
+    --     sample counts for each image type. Individual images /may/ support
+    --     additional sample counts, which are queried using
+    --     'getPhysicalDeviceImageFormatProperties' as described in
+    --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-supported-sample-counts Supported Sample Counts>.
     nonCoherentAtomSize :: DeviceSize
   }
   deriving (Typeable, Eq)
diff --git a/src/Vulkan/Core10/Enums/AccessFlagBits.hs b/src/Vulkan/Core10/Enums/AccessFlagBits.hs
--- a/src/Vulkan/Core10/Enums/AccessFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/AccessFlagBits.hs
@@ -21,8 +21,8 @@
                                                            , ACCESS_NONE_KHR
                                                            , ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV
                                                            , ACCESS_COMMAND_PREPROCESS_READ_BIT_NV
+                                                           , ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR
                                                            , ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT
-                                                           , ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV
                                                            , ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR
                                                            , ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR
                                                            , ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT
@@ -66,105 +66,105 @@
 -- accesses of that type. The following table lists, for each access flag,
 -- which pipeline stages /can/ perform that type of access.
 --
--- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
--- | Access flag                                                                                           | Supported pipeline stages                                                                                |
--- +=======================================================================================================+==========================================================================================================+
--- | 'ACCESS_INDIRECT_COMMAND_READ_BIT'                                                                    | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT' ,                           |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'          |
--- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
--- | 'ACCESS_INDEX_READ_BIT'                                                                               | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_INPUT_BIT'                              |
--- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
--- | 'ACCESS_VERTEX_ATTRIBUTE_READ_BIT'                                                                    | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_INPUT_BIT'                              |
--- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
--- | 'ACCESS_UNIFORM_READ_BIT'                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV',                           |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV',                           |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR',                   |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT',                            |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT',              |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT',           |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT',                          |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT', or                       |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMPUTE_SHADER_BIT'                            |
--- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
--- | 'ACCESS_SHADER_READ_BIT'                                                                              | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',         |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV',                           |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV',                           |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR',                   |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT',                            |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT',              |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT',           |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT',                          |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT', or                       |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMPUTE_SHADER_BIT'                            |
--- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
--- | 'ACCESS_SHADER_WRITE_BIT'                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV',                           |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV',                           |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR',                   |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT',                            |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT',              |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT',           |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT',                          |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT', or                       |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMPUTE_SHADER_BIT'                            |
--- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
--- | 'ACCESS_INPUT_ATTACHMENT_READ_BIT'                                                                    | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT'                           |
--- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
--- | 'ACCESS_COLOR_ATTACHMENT_READ_BIT'                                                                    | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'                   |
--- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
--- | 'ACCESS_COLOR_ATTACHMENT_WRITE_BIT'                                                                   | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'                   |
--- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
--- | 'ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT'                                                            | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT', or                  |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'                       |
--- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
--- | 'ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT'                                                           | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT', or                  |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'                       |
--- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
--- | 'ACCESS_TRANSFER_READ_BIT'                                                                            | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFER_BIT' or                               |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'          |
--- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
--- | 'ACCESS_TRANSFER_WRITE_BIT'                                                                           | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFER_BIT' or                               |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'          |
--- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
--- | 'ACCESS_HOST_READ_BIT'                                                                                | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'                                      |
--- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
--- | 'ACCESS_HOST_WRITE_BIT'                                                                               | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'                                      |
--- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
--- | 'ACCESS_MEMORY_READ_BIT'                                                                              | Any                                                                                                      |
--- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
--- | 'ACCESS_MEMORY_WRITE_BIT'                                                                             | Any                                                                                                      |
--- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
--- | 'ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT'                                                    | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'                   |
--- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
--- | 'ACCESS_COMMAND_PREPROCESS_READ_BIT_NV'                                                               | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'                     |
--- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
--- | 'ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV'                                                              | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'                     |
--- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
--- | 'ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT'                                                           | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'                 |
--- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR' | 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' |
--- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
--- | 'ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT'                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'                    |
--- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
--- | 'ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT'                                                     | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'                    |
--- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
--- | 'ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT'                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT',                   |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT'                             |
--- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
--- | 'ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'                                                          | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV',                           |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV',                           |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT',                            |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT',              |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT',           |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT',                          |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT',                          |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMPUTE_SHADER_BIT',                           |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR', or                |
--- |                                                                                                       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'          |
--- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
--- | 'ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'                                                         | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'          |
--- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
--- | 'ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT'                                                            | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'              |
--- +-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
+-- +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | Access flag                                            | Supported pipeline stages                                                                           |
+-- +========================================================+=====================================================================================================+
+-- | 'ACCESS_INDIRECT_COMMAND_READ_BIT'                     | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT' ,                      |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'     |
+-- +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_INDEX_READ_BIT'                                | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_INPUT_BIT'                         |
+-- +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_VERTEX_ATTRIBUTE_READ_BIT'                     | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_INPUT_BIT'                         |
+-- +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_UNIFORM_READ_BIT'                              | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV',                      |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV',                      |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR',              |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT',                       |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT',         |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT',      |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT',                     |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT', or                  |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMPUTE_SHADER_BIT'                       |
+-- +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_SHADER_READ_BIT'                               | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',    |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV',                      |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV',                      |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR',              |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT',                       |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT',         |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT',      |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT',                     |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT', or                  |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMPUTE_SHADER_BIT'                       |
+-- +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_SHADER_WRITE_BIT'                              | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV',                      |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV',                      |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR',              |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT',                       |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT',         |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT',      |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT',                     |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT', or                  |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMPUTE_SHADER_BIT'                       |
+-- +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_INPUT_ATTACHMENT_READ_BIT'                     | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT'                      |
+-- +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_COLOR_ATTACHMENT_READ_BIT'                     | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'              |
+-- +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_COLOR_ATTACHMENT_WRITE_BIT'                    | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'              |
+-- +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT'             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT', or             |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'                  |
+-- +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT'            | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT', or             |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'                  |
+-- +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_TRANSFER_READ_BIT'                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFER_BIT' or                          |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'     |
+-- +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_TRANSFER_WRITE_BIT'                            | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFER_BIT' or                          |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'     |
+-- +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_HOST_READ_BIT'                                 | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'                                 |
+-- +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_HOST_WRITE_BIT'                                | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'                                 |
+-- +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_MEMORY_READ_BIT'                               | Any                                                                                                 |
+-- +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_MEMORY_WRITE_BIT'                              | Any                                                                                                 |
+-- +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT'     | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'              |
+-- +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_COMMAND_PREPROCESS_READ_BIT_NV'                | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'                |
+-- +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV'               | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'                |
+-- +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT'            | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'            |
+-- +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR' | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' |
+-- +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT'              | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'               |
+-- +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT'      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'               |
+-- +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT'       | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT',              |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT'                        |
+-- +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'           | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV',                      |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV',                      |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT',                       |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT',         |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT',      |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT',                     |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT',                     |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMPUTE_SHADER_BIT',                      |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR', or           |
+-- |                                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'     |
+-- +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'          | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'     |
+-- +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT'             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'         |
+-- +--------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
 --
 -- Supported access types
 --
@@ -176,7 +176,7 @@
 
 -- | 'ACCESS_INDIRECT_COMMAND_READ_BIT' specifies read access to indirect
 -- command data read as part of an indirect build, trace, drawing or
--- dispatch command.
+-- dispatching command.
 pattern ACCESS_INDIRECT_COMMAND_READ_BIT            = AccessFlagBits 0x00000001
 -- | 'ACCESS_INDEX_READ_BIT' specifies read access to an index buffer as part
 -- of an indexed drawing command, bound by
@@ -279,13 +279,15 @@
 -- 'Vulkan.Core10.Handles.Buffer' inputs to
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdPreprocessGeneratedCommandsNV'.
 pattern ACCESS_COMMAND_PREPROCESS_READ_BIT_NV       = AccessFlagBits 0x00020000
+-- | 'ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR' specifies read
+-- access to a fragment shading rate attachment or shading rate image
+-- during rasterization.
+pattern ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = AccessFlagBits 0x00800000
 -- | 'ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT' specifies read access to a
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>
 -- during dynamic
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapops fragment density map operations>
 pattern ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT    = AccessFlagBits 0x01000000
--- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV"
-pattern ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV       = AccessFlagBits 0x00800000
 -- | 'ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR' specifies write access to
 -- an acceleration structure or
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-scratch acceleration structure scratch buffer>
@@ -346,8 +348,8 @@
   , (ACCESS_NONE_KHR                            , "NONE_KHR")
   , (ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV     , "COMMAND_PREPROCESS_WRITE_BIT_NV")
   , (ACCESS_COMMAND_PREPROCESS_READ_BIT_NV      , "COMMAND_PREPROCESS_READ_BIT_NV")
+  , (ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR, "FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR")
   , (ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT   , "FRAGMENT_DENSITY_MAP_READ_BIT_EXT")
-  , (ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV      , "SHADING_RATE_IMAGE_READ_BIT_NV")
   , (ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR, "ACCELERATION_STRUCTURE_WRITE_BIT_KHR")
   , (ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR , "ACCELERATION_STRUCTURE_READ_BIT_KHR")
   , (ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT, "COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT")
diff --git a/src/Vulkan/Core10/Enums/BlendFactor.hs b/src/Vulkan/Core10/Enums/BlendFactor.hs
--- a/src/Vulkan/Core10/Enums/BlendFactor.hs
+++ b/src/Vulkan/Core10/Enums/BlendFactor.hs
@@ -35,7 +35,7 @@
 --
 -- = Description
 --
--- The semantics of each enum value is described in the table below:
+-- The semantics of the enum values are described in the table below:
 --
 -- +-----------------------------------------+---------------------+--------+
 -- | 'BlendFactor'                           | RGB Blend Factors   | Alpha  |
diff --git a/src/Vulkan/Core10/Enums/BlendOp.hs b/src/Vulkan/Core10/Enums/BlendOp.hs
--- a/src/Vulkan/Core10/Enums/BlendOp.hs
+++ b/src/Vulkan/Core10/Enums/BlendOp.hs
@@ -67,7 +67,7 @@
 --
 -- = Description
 --
--- The semantics of each basic blend operations is described in the table
+-- The semantics of the basic blend operations are described in the table
 -- below:
 --
 -- +-------------------------------+--------------------+-----------------+
diff --git a/src/Vulkan/Core10/Enums/ColorComponentFlagBits.hs b/src/Vulkan/Core10/Enums/ColorComponentFlagBits.hs
--- a/src/Vulkan/Core10/Enums/ColorComponentFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/ColorComponentFlagBits.hs
@@ -30,6 +30,11 @@
 -- The color write mask operation is applied regardless of whether blending
 -- is enabled.
 --
+-- The color write mask operation is applied only if
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-color-write-enable Color Write Enable>
+-- is enabled for the respective attachment. Otherwise the color write mask
+-- is ignored and writes to all components of the attachment are disabled.
+--
 -- = See Also
 --
 -- 'ColorComponentFlags'
diff --git a/src/Vulkan/Core10/Enums/DependencyFlagBits.hs b/src/Vulkan/Core10/Enums/DependencyFlagBits.hs
--- a/src/Vulkan/Core10/Enums/DependencyFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/DependencyFlagBits.hs
@@ -37,7 +37,7 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-barriers-subpass-self-dependencies subpass has more than one view>.
 pattern DEPENDENCY_VIEW_LOCAL_BIT   = DependencyFlagBits 0x00000002
 -- | 'DEPENDENCY_DEVICE_GROUP_BIT' specifies that dependencies are
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-device-local-dependencies non-device-local dependency>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-device-local-dependencies non-device-local>.
 pattern DEPENDENCY_DEVICE_GROUP_BIT = DependencyFlagBits 0x00000004
 
 conNameDependencyFlagBits :: String
diff --git a/src/Vulkan/Core10/Enums/DynamicState.hs b/src/Vulkan/Core10/Enums/DynamicState.hs
--- a/src/Vulkan/Core10/Enums/DynamicState.hs
+++ b/src/Vulkan/Core10/Enums/DynamicState.hs
@@ -9,6 +9,13 @@
                                                       , DYNAMIC_STATE_STENCIL_COMPARE_MASK
                                                       , DYNAMIC_STATE_STENCIL_WRITE_MASK
                                                       , DYNAMIC_STATE_STENCIL_REFERENCE
+                                                      , DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
+                                                      , DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT
+                                                      , DYNAMIC_STATE_LOGIC_OP_EXT
+                                                      , DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT
+                                                      , DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT
+                                                      , DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT
+                                                      , DYNAMIC_STATE_VERTEX_INPUT_EXT
                                                       , DYNAMIC_STATE_STENCIL_OP_EXT
                                                       , DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT
                                                       , DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT
@@ -54,7 +61,7 @@
 -- | 'DYNAMIC_STATE_VIEWPORT' specifies that the @pViewports@ state in
 -- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo' will be ignored
 -- and /must/ be set dynamically with
--- 'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' before any draw
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' before any drawing
 -- commands. The number of viewports used by a pipeline is still specified
 -- by the @viewportCount@ member of
 -- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'.
@@ -62,7 +69,7 @@
 -- | 'DYNAMIC_STATE_SCISSOR' specifies that the @pScissors@ state in
 -- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo' will be ignored
 -- and /must/ be set dynamically with
--- 'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' before any draw
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' before any drawing
 -- commands. The number of scissor rectangles used by a pipeline is still
 -- specified by the @scissorCount@ member of
 -- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'.
@@ -70,7 +77,7 @@
 -- | 'DYNAMIC_STATE_LINE_WIDTH' specifies that the @lineWidth@ state in
 -- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo' will be
 -- ignored and /must/ be set dynamically with
--- 'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' before any draw
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' before any drawing
 -- commands that generate line primitives for the rasterizer.
 pattern DYNAMIC_STATE_LINE_WIDTH                          = DynamicState 2
 -- | 'DYNAMIC_STATE_DEPTH_BIAS' specifies that the @depthBiasConstantFactor@,
@@ -125,6 +132,52 @@
 -- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' member
 -- @stencilTestEnable@ set to 'Vulkan.Core10.FundamentalTypes.TRUE'
 pattern DYNAMIC_STATE_STENCIL_REFERENCE                   = DynamicState 8
+-- | 'DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT' specifies that the
+-- @pColorWriteEnables@ state in
+-- 'Vulkan.Extensions.VK_EXT_color_write_enable.PipelineColorWriteCreateInfoEXT'
+-- will be ignored and /must/ be set dynamically with
+-- 'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
+-- before any draw call.
+pattern DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT              = DynamicState 1000381000
+-- | 'DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT' specifies that the
+-- @primitiveRestartEnable@ state in
+-- 'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo' will be
+-- ignored and /must/ be set dynamically with
+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
+-- before any drawing commands.
+pattern DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT        = DynamicState 1000377004
+-- | 'DYNAMIC_STATE_LOGIC_OP_EXT' specifies that the @logicOp@ state in
+-- 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo' will be
+-- ignored and /must/ be set dynamically with
+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+-- before any drawing commands.
+pattern DYNAMIC_STATE_LOGIC_OP_EXT                        = DynamicState 1000377003
+-- | 'DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT' specifies that the
+-- @depthBiasEnable@ state in
+-- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo' will be
+-- ignored and /must/ be set dynamically with
+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'
+-- before any drawing commands.
+pattern DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT               = DynamicState 1000377002
+-- | 'DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT' specifies that the
+-- @rasterizerDiscardEnable@ state in
+-- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo' will be
+-- ignored and /must/ be set dynamically with
+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'
+-- before any drawing commands.
+pattern DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT       = DynamicState 1000377001
+-- | 'DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT' specifies that the
+-- @patchControlPoints@ state in
+-- 'Vulkan.Core10.Pipeline.PipelineTessellationStateCreateInfo' will be
+-- ignored and /must/ be set dynamically with
+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
+-- before any drawing commands.
+pattern DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT            = DynamicState 1000377000
+-- | 'DYNAMIC_STATE_VERTEX_INPUT_EXT' specifies that the @pVertexInputState@
+-- states will be ignored and /must/ be set dynamically with
+-- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
+-- before any drawing commands
+pattern DYNAMIC_STATE_VERTEX_INPUT_EXT                    = DynamicState 1000352000
 -- | 'DYNAMIC_STATE_STENCIL_OP_EXT' specifies that the @failOp@, @passOp@,
 -- @depthFailOp@, and @compareOp@ states in
 -- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' for both
@@ -195,19 +248,19 @@
 -- and the specific topology order and adjacency /must/ be set dynamically
 -- with
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
--- before any draw commands.
+-- before any drawing commands.
 pattern DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT              = DynamicState 1000267002
 -- | 'DYNAMIC_STATE_FRONT_FACE_EXT' specifies that the @frontFace@ state in
 -- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo' will be
 -- ignored and /must/ be set dynamically with
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetFrontFaceEXT'
--- before any draw commands.
+-- before any drawing commands.
 pattern DYNAMIC_STATE_FRONT_FACE_EXT                      = DynamicState 1000267001
 -- | 'DYNAMIC_STATE_CULL_MODE_EXT' specifies that the @cullMode@ state in
 -- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo' will be
 -- ignored and /must/ be set dynamically with
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetCullModeEXT'
--- before any draw commands.
+-- before any drawing commands.
 pattern DYNAMIC_STATE_CULL_MODE_EXT                       = DynamicState 1000267000
 -- | 'DYNAMIC_STATE_LINE_STIPPLE_EXT' specifies that the @lineStippleFactor@
 -- and @lineStipplePattern@ state in
@@ -227,14 +280,14 @@
 -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR'
 -- or
 -- 'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.cmdSetFragmentShadingRateEnumNV'
--- before any draw commands.
+-- before any drawing commands.
 pattern DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR           = DynamicState 1000226000
 -- | 'DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV' specifies that the
 -- @pExclusiveScissors@ state in
 -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'
 -- will be ignored and /must/ be set dynamically with
 -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'
--- before any draw commands. The number of exclusive scissor rectangles
+-- before any drawing commands. The number of exclusive scissor rectangles
 -- used by a pipeline is still specified by the @exclusiveScissorCount@
 -- member of
 -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'.
@@ -244,14 +297,14 @@
 -- 'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportCoarseSampleOrderStateCreateInfoNV'
 -- will be ignored and /must/ be set dynamically with
 -- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'
--- before any draw commands.
+-- before any drawing commands.
 pattern DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV     = DynamicState 1000164006
 -- | 'DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV' specifies that the
 -- @pShadingRatePalettes@ state in
 -- 'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'
 -- will be ignored and /must/ be set dynamically with
 -- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
--- before any draw commands.
+-- before any drawing commands.
 pattern DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV    = DynamicState 1000164004
 -- | 'DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR' specifies that the
 -- default stack size computation for the pipeline will be ignored and
@@ -298,6 +351,13 @@
              DYNAMIC_STATE_STENCIL_COMPARE_MASK,
              DYNAMIC_STATE_STENCIL_WRITE_MASK,
              DYNAMIC_STATE_STENCIL_REFERENCE,
+             DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT,
+             DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT,
+             DYNAMIC_STATE_LOGIC_OP_EXT,
+             DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT,
+             DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT,
+             DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT,
+             DYNAMIC_STATE_VERTEX_INPUT_EXT,
              DYNAMIC_STATE_STENCIL_OP_EXT,
              DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT,
              DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT,
@@ -337,6 +397,13 @@
   , (DYNAMIC_STATE_STENCIL_COMPARE_MASK               , "STENCIL_COMPARE_MASK")
   , (DYNAMIC_STATE_STENCIL_WRITE_MASK                 , "STENCIL_WRITE_MASK")
   , (DYNAMIC_STATE_STENCIL_REFERENCE                  , "STENCIL_REFERENCE")
+  , (DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT             , "COLOR_WRITE_ENABLE_EXT")
+  , (DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT       , "PRIMITIVE_RESTART_ENABLE_EXT")
+  , (DYNAMIC_STATE_LOGIC_OP_EXT                       , "LOGIC_OP_EXT")
+  , (DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT              , "DEPTH_BIAS_ENABLE_EXT")
+  , (DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT      , "RASTERIZER_DISCARD_ENABLE_EXT")
+  , (DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT           , "PATCH_CONTROL_POINTS_EXT")
+  , (DYNAMIC_STATE_VERTEX_INPUT_EXT                   , "VERTEX_INPUT_EXT")
   , (DYNAMIC_STATE_STENCIL_OP_EXT                     , "STENCIL_OP_EXT")
   , (DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT            , "STENCIL_TEST_ENABLE_EXT")
   , (DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT       , "DEPTH_BOUNDS_TEST_ENABLE_EXT")
diff --git a/src/Vulkan/Core10/Enums/Format.hs b/src/Vulkan/Core10/Enums/Format.hs
--- a/src/Vulkan/Core10/Enums/Format.hs
+++ b/src/Vulkan/Core10/Enums/Format.hs
@@ -187,6 +187,10 @@
                                           , FORMAT_ASTC_12x12_SRGB_BLOCK
                                           , FORMAT_A4B4G4R4_UNORM_PACK16_EXT
                                           , FORMAT_A4R4G4B4_UNORM_PACK16_EXT
+                                          , FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT
+                                          , FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT
+                                          , FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT
+                                          , FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT
                                           , FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT
                                           , FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT
                                           , FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT
@@ -277,6 +281,9 @@
 -- 'Vulkan.Extensions.VK_KHR_surface.SurfaceFormatKHR',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',
 -- 'Vulkan.Core10.Pipeline.VertexInputAttributeDescription',
+-- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoFormatPropertiesKHR VkVideoFormatPropertiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionCreateInfoKHR VkVideoSessionCreateInfoKHR>,
 -- 'Vulkan.Extensions.VK_NV_external_memory_capabilities.getPhysicalDeviceExternalImageFormatPropertiesNV',
 -- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFormatProperties',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2',
@@ -840,10 +847,10 @@
 -- optionally:, 8 bits that are unused.
 pattern FORMAT_X8_D24_UNORM_PACK32                = Format 125
 -- | 'FORMAT_D32_SFLOAT' specifies a one-component, 32-bit signed
--- floating-point format that has 32-bits in the depth component.
+-- floating-point format that has 32 bits in the depth component.
 pattern FORMAT_D32_SFLOAT                         = Format 126
 -- | 'FORMAT_S8_UINT' specifies a one-component, 8-bit unsigned integer
--- format that has 8-bits in the stencil component.
+-- format that has 8 bits in the stencil component.
 pattern FORMAT_S8_UINT                            = Format 127
 -- | 'FORMAT_D16_UNORM_S8_UINT' specifies a two-component, 24-bit format that
 -- has 16 unsigned normalized bits in the depth component and 8 unsigned
@@ -855,7 +862,7 @@
 pattern FORMAT_D24_UNORM_S8_UINT                  = Format 129
 -- | 'FORMAT_D32_SFLOAT_S8_UINT' specifies a two-component format that has 32
 -- signed float bits in the depth component and 8 unsigned integer bits in
--- the stencil component. There are optionally: 24-bits that are unused.
+-- the stencil component. There are optionally: 24 bits that are unused.
 pattern FORMAT_D32_SFLOAT_S8_UINT                 = Format 130
 -- | 'FORMAT_BC1_RGB_UNORM_BLOCK' specifies a three-component,
 -- block-compressed format where each 64-bit compressed texel block encodes
@@ -1119,6 +1126,61 @@
 -- 12..15, a 4-bit R component in bits 8..11, a 4-bit G component in bits
 -- 4..7, and a 4-bit B component in bits 0..3.
 pattern FORMAT_A4R4G4B4_UNORM_PACK16_EXT          = Format 1000340000
+-- | 'FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT' specifies an unsigned
+-- normalized /multi-planar format/ that has a 16-bit G component in each
+-- 16-bit word of plane 0, and a two-component, 32-bit BR plane 1
+-- consisting of a 16-bit B component in the word in bytes 0..1, and a
+-- 16-bit R component in the word in bytes 2..3. Both planes have the same
+-- dimensions and each R, G and B component contributes to a single texel.
+-- The location of each plane when this image is in linear layout can be
+-- determined via 'Vulkan.Core10.Image.getImageSubresourceLayout', using
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for
+-- the G plane, and
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
+-- the BR plane.
+pattern FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT    = Format 1000330003
+-- | 'FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT' specifies an
+-- unsigned normalized /multi-planar format/ that has a 12-bit G component
+-- in the top 12 bits of each 16-bit word of plane 0, and a two-component,
+-- 32-bit BR plane 1 consisting of a 12-bit B component in the top 12 bits
+-- of the word in bytes 0..1, and a 12-bit R component in the top 12 bits
+-- of the word in bytes 2..3, the bottom 4 bits of each word unused. Both
+-- planes have the same dimensions and each R, G and B component
+-- contributes to a single texel. The location of each plane when this
+-- image is in linear layout can be determined via
+-- 'Vulkan.Core10.Image.getImageSubresourceLayout', using
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for
+-- the G plane, and
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
+-- the BR plane.
+pattern FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT = Format 1000330002
+-- | 'FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT' specifies an
+-- unsigned normalized /multi-planar format/ that has a 10-bit G component
+-- in the top 10 bits of each 16-bit word of plane 0, and a two-component,
+-- 32-bit BR plane 1 consisting of a 10-bit B component in the top 10 bits
+-- of the word in bytes 0..1, and a 10-bit R component in the top 10 bits
+-- of the word in bytes 2..3, the bottom 6 bits of each word unused. Both
+-- planes have the same dimensions and each R, G and B component
+-- contributes to a single texel. The location of each plane when this
+-- image is in linear layout can be determined via
+-- 'Vulkan.Core10.Image.getImageSubresourceLayout', using
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for
+-- the G plane, and
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
+-- the BR plane.
+pattern FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT = Format 1000330001
+-- | 'FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT' specifies an unsigned normalized
+-- /multi-planar format/ that has an 8-bit G component in plane 0, and a
+-- two-component, 16-bit BR plane 1 consisting of an 8-bit B component in
+-- byte 0 and an 8-bit R component in byte 1. Both planes have the same
+-- dimensions and each R, G and B component contributes to a single texel.
+-- The location of each plane when this image is in linear layout can be
+-- determined via 'Vulkan.Core10.Image.getImageSubresourceLayout', using
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for
+-- the G plane, and
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
+-- the BR plane.
+pattern FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT       = Format 1000330000
 -- | 'FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC
 -- compressed format where each 128-bit compressed texel block encodes a
 -- 12×12 rectangle of signed floating-point RGBA texel data.
@@ -1229,14 +1291,14 @@
 -- /multi-planar format/ that has a 16-bit G component in each 16-bit word
 -- of plane 0, and a two-component, 32-bit BR plane 1 consisting of a
 -- 16-bit B component in the word in bytes 0..1, and a 16-bit R component
--- in the word in bytes 2..3. The horizontal dimensions of the BR plane is
+-- in the word in bytes 2..3. The horizontal dimension of the BR plane is
 -- halved relative to the image dimensions, and each R and B value is
 -- shared with the G components for which
--- \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B =
--- i_R\). The location of each plane when this image is in linear layout
--- can be determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',
--- using 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
--- for the G plane, and
+-- \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R\). The location
+-- of each plane when this image is in linear layout can be determined via
+-- 'Vulkan.Core10.Image.getImageSubresourceLayout', using
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for
+-- the G plane, and
 -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
 -- the BR plane. This format only supports images with a width that is a
 -- multiple of two.
@@ -1263,7 +1325,7 @@
 -- of plane 0, and a two-component, 32-bit BR plane 1 consisting of a
 -- 16-bit B component in the word in bytes 0..1, and a 16-bit R component
 -- in the word in bytes 2..3. The horizontal and vertical dimensions of the
--- BR plane is halved relative to the image dimensions, and each R and B
+-- BR plane are halved relative to the image dimensions, and each R and B
 -- value is shared with the G components for which
 -- \(\left\lfloor i_G \times 0.5
 -- \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5
@@ -1344,14 +1406,14 @@
 -- top 12 bits of each 16-bit word of plane 0, and a two-component, 32-bit
 -- BR plane 1 consisting of a 12-bit B component in the top 12 bits of the
 -- word in bytes 0..1, and a 12-bit R component in the top 12 bits of the
--- word in bytes 2..3, the bottom 4 bits of each word unused. The
--- horizontal dimensions of the BR plane is halved relative to the image
+-- word in bytes 2..3, with the bottom 4 bits of each word unused. The
+-- horizontal dimension of the BR plane is halved relative to the image
 -- dimensions, and each R and B value is shared with the G components for
--- which \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B =
--- i_R\). The location of each plane when this image is in linear layout
--- can be determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',
--- using 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
--- for the G plane, and
+-- which \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R\). The
+-- location of each plane when this image is in linear layout can be
+-- determined via 'Vulkan.Core10.Image.getImageSubresourceLayout', using
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for
+-- the G plane, and
 -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
 -- the BR plane. This format only supports images with a width that is a
 -- multiple of two.
@@ -1380,9 +1442,9 @@
 -- top 12 bits of each 16-bit word of plane 0, and a two-component, 32-bit
 -- BR plane 1 consisting of a 12-bit B component in the top 12 bits of the
 -- word in bytes 0..1, and a 12-bit R component in the top 12 bits of the
--- word in bytes 2..3, the bottom 4 bits of each word unused. The
--- horizontal and vertical dimensions of the BR plane is halved relative to
--- the image dimensions, and each R and B value is shared with the G
+-- word in bytes 2..3, with the bottom 4 bits of each word unused. The
+-- horizontal and vertical dimensions of the BR plane are halved relative
+-- to the image dimensions, and each R and B value is shared with the G
 -- components for which \(\left\lfloor i_G \times 0.5
 -- \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5
 -- \right\rfloor = j_B = j_R\). The location of each plane when this image
@@ -1486,14 +1548,14 @@
 -- top 10 bits of each 16-bit word of plane 0, and a two-component, 32-bit
 -- BR plane 1 consisting of a 10-bit B component in the top 10 bits of the
 -- word in bytes 0..1, and a 10-bit R component in the top 10 bits of the
--- word in bytes 2..3, the bottom 6 bits of each word unused. The
--- horizontal dimensions of the BR plane is halved relative to the image
+-- word in bytes 2..3, with the bottom 6 bits of each word unused. The
+-- horizontal dimension of the BR plane is halved relative to the image
 -- dimensions, and each R and B value is shared with the G components for
--- which \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B =
--- i_R\). The location of each plane when this image is in linear layout
--- can be determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',
--- using 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
--- for the G plane, and
+-- which \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R\). The
+-- location of each plane when this image is in linear layout can be
+-- determined via 'Vulkan.Core10.Image.getImageSubresourceLayout', using
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for
+-- the G plane, and
 -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
 -- the BR plane. This format only supports images with a width that is a
 -- multiple of two.
@@ -1522,9 +1584,9 @@
 -- top 10 bits of each 16-bit word of plane 0, and a two-component, 32-bit
 -- BR plane 1 consisting of a 10-bit B component in the top 10 bits of the
 -- word in bytes 0..1, and a 10-bit R component in the top 10 bits of the
--- word in bytes 2..3, the bottom 6 bits of each word unused. The
--- horizontal and vertical dimensions of the BR plane is halved relative to
--- the image dimensions, and each R and B value is shared with the G
+-- word in bytes 2..3, with the bottom 6 bits of each word unused. The
+-- horizontal and vertical dimensions of the BR plane are halved relative
+-- to the image dimensions, and each R and B value is shared with the G
 -- components for which \(\left\lfloor i_G \times 0.5
 -- \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5
 -- \right\rfloor = j_B = j_R\). The location of each plane when this image
@@ -1624,14 +1686,14 @@
 -- | 'FORMAT_G8_B8R8_2PLANE_422_UNORM' specifies an unsigned normalized
 -- /multi-planar format/ that has an 8-bit G component in plane 0, and a
 -- two-component, 16-bit BR plane 1 consisting of an 8-bit B component in
--- byte 0 and an 8-bit R component in byte 1. The horizontal dimensions of
+-- byte 0 and an 8-bit R component in byte 1. The horizontal dimension of
 -- the BR plane is halved relative to the image dimensions, and each R and
 -- B value is shared with the G components for which
--- \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B =
--- i_R\). The location of each plane when this image is in linear layout
--- can be determined via 'Vulkan.Core10.Image.getImageSubresourceLayout',
--- using 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
--- for the G plane, and
+-- \(\left\lfloor i_G \times 0.5 \right\rfloor = i_B = i_R\). The location
+-- of each plane when this image is in linear layout can be determined via
+-- 'Vulkan.Core10.Image.getImageSubresourceLayout', using
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for
+-- the G plane, and
 -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
 -- the BR plane. This format only supports images with a width that is a
 -- multiple of two.
@@ -1656,7 +1718,7 @@
 -- /multi-planar format/ that has an 8-bit G component in plane 0, and a
 -- two-component, 16-bit BR plane 1 consisting of an 8-bit B component in
 -- byte 0 and an 8-bit R component in byte 1. The horizontal and vertical
--- dimensions of the BR plane is halved relative to the image dimensions,
+-- dimensions of the BR plane are halved relative to the image dimensions,
 -- and each R and B value is shared with the G components for which
 -- \(\left\lfloor i_G \times 0.5
 -- \right\rfloor = i_B = i_R\) and \(\left\lfloor j_G \times 0.5
@@ -1900,6 +1962,10 @@
              FORMAT_ASTC_12x12_SRGB_BLOCK,
              FORMAT_A4B4G4R4_UNORM_PACK16_EXT,
              FORMAT_A4R4G4B4_UNORM_PACK16_EXT,
+             FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT,
+             FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT,
+             FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT,
+             FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT,
              FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT,
              FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT,
              FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT,
@@ -2152,6 +2218,10 @@
   , (FORMAT_ASTC_12x12_SRGB_BLOCK             , "ASTC_12x12_SRGB_BLOCK")
   , (FORMAT_A4B4G4R4_UNORM_PACK16_EXT         , "A4B4G4R4_UNORM_PACK16_EXT")
   , (FORMAT_A4R4G4B4_UNORM_PACK16_EXT         , "A4R4G4B4_UNORM_PACK16_EXT")
+  , (FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT   , "G16_B16R16_2PLANE_444_UNORM_EXT")
+  , (FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT, "G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT")
+  , (FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT, "G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT")
+  , (FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT      , "G8_B8R8_2PLANE_444_UNORM_EXT")
   , (FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT       , "ASTC_12x12_SFLOAT_BLOCK_EXT")
   , (FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT       , "ASTC_12x10_SFLOAT_BLOCK_EXT")
   , (FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT       , "ASTC_10x10_SFLOAT_BLOCK_EXT")
diff --git a/src/Vulkan/Core10/Enums/FormatFeatureFlagBits.hs b/src/Vulkan/Core10/Enums/FormatFeatureFlagBits.hs
--- a/src/Vulkan/Core10/Enums/FormatFeatureFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/FormatFeatureFlagBits.hs
@@ -65,7 +65,7 @@
 --
 -- -   'FORMAT_FEATURE_STORAGE_IMAGE_BIT' specifies that an image view
 --     /can/ be used as a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage images>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage image>.
 --
 -- -   'FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT' specifies that an image
 --     view /can/ be used as storage image that supports atomic operations.
@@ -214,13 +214,13 @@
 -- -   'FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' specifies
 --     that an image view /can/ be used as a
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>.
---     An implementation /must/ not set this feature for formats that with
+--     An implementation /must/ not set this feature for formats with
 --     numeric type other than @*UINT@, or set it as a buffer feature.
 --
 -- The following bits /may/ be set in @bufferFeatures@, specifying that the
 -- features are supported by <VkBuffer.html buffers> or
 -- <VkBufferView.html buffer views> created with the queried
--- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceProperties'::@format@:
+-- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFormatProperties'::@format@:
 --
 -- -   'FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT' specifies that the format
 --     /can/ be used to create a buffer view that /can/ be bound to a
@@ -262,7 +262,7 @@
 pattern FORMAT_FEATURE_SAMPLED_IMAGE_BIT                        = FormatFeatureFlagBits 0x00000001
 -- | 'FORMAT_FEATURE_STORAGE_IMAGE_BIT' specifies that an image view /can/ be
 -- used as a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage images>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage image>.
 pattern FORMAT_FEATURE_STORAGE_IMAGE_BIT                        = FormatFeatureFlagBits 0x00000002
 -- | 'FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT' specifies that an image view
 -- /can/ be used as storage image that supports atomic operations.
@@ -334,8 +334,8 @@
 -- | 'FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' specifies that
 -- an image view /can/ be used as a
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>.
--- An implementation /must/ not set this feature for formats that with
--- numeric type other than @*UINT@, or set it as a buffer feature.
+-- An implementation /must/ not set this feature for formats with numeric
+-- type other than @*UINT@, or set it as a buffer feature.
 pattern FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = FormatFeatureFlagBits 0x40000000
 -- | 'FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT' specifies that an image
 -- view /can/ be used as a
diff --git a/src/Vulkan/Core10/Enums/ImageAspectFlagBits.hs b/src/Vulkan/Core10/Enums/ImageAspectFlagBits.hs
--- a/src/Vulkan/Core10/Enums/ImageAspectFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/ImageAspectFlagBits.hs
@@ -47,7 +47,6 @@
 -- | 'IMAGE_ASPECT_STENCIL_BIT' specifies the stencil aspect.
 pattern IMAGE_ASPECT_STENCIL_BIT            = ImageAspectFlagBits 0x00000004
 -- | 'IMAGE_ASPECT_METADATA_BIT' specifies the metadata aspect, used for
--- sparse
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory sparse resource>
 -- operations.
 pattern IMAGE_ASPECT_METADATA_BIT           = ImageAspectFlagBits 0x00000008
diff --git a/src/Vulkan/Core10/Enums/ImageCreateFlagBits.hs b/src/Vulkan/Core10/Enums/ImageCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/ImageCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/ImageCreateFlagBits.hs
@@ -62,7 +62,7 @@
 -- backed using sparse memory binding with memory ranges that might also
 -- simultaneously be backing another image (or another portion of the same
 -- image). Images created with this flag /must/ also be created with the
--- 'IMAGE_CREATE_SPARSE_BINDING_BIT' flag
+-- 'IMAGE_CREATE_SPARSE_BINDING_BIT' flag.
 pattern IMAGE_CREATE_SPARSE_ALIASED_BIT              = ImageCreateFlagBits 0x00000004
 -- | 'IMAGE_CREATE_MUTABLE_FORMAT_BIT' specifies that the image /can/ be used
 -- to create a 'Vulkan.Core10.Handles.ImageView' with a different format
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
@@ -11,8 +11,8 @@
                                                     , IMAGE_LAYOUT_PREINITIALIZED
                                                     , IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR
                                                     , IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR
+                                                    , IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR
                                                     , IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT
-                                                    , IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV
                                                     , IMAGE_LAYOUT_SHARED_PRESENT_KHR
                                                     , IMAGE_LAYOUT_PRESENT_SRC_KHR
                                                     , IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
@@ -118,7 +118,7 @@
 -- subresources of images created with the
 -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT' or
 -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
--- usage bit enabled.
+-- usage bits enabled.
 pattern IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL         = ImageLayout 5
 -- | 'IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL' /must/ only be used as a source
 -- image of a transfer command (see the definition of
@@ -154,6 +154,16 @@
 -- only access as an attachment, or in shaders as a sampled image, combined
 -- image\/sampler, or input attachment.
 pattern IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR            = ImageLayout 1000314000
+-- | 'IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR' /must/ only
+-- be used as a
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-image shading rate image>.
+-- This layout is valid only for image subresources of images created with
+-- the
+-- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+-- usage bit enabled.
+pattern IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = ImageLayout 1000164003
 -- | 'IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT' /must/ only be used as a
 -- fragment density map attachment in a 'Vulkan.Core10.Handles.RenderPass'.
 -- This layout is valid only for image subresources of images created with
@@ -161,8 +171,6 @@
 -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT'
 -- usage bit enabled.
 pattern IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = ImageLayout 1000218000
--- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV"
-pattern IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV          = ImageLayout 1000164003
 -- | 'IMAGE_LAYOUT_SHARED_PRESENT_KHR' is valid only for shared presentable
 -- images, and /must/ be used for any usage the image supports.
 pattern IMAGE_LAYOUT_SHARED_PRESENT_KHR               = ImageLayout 1000111000
@@ -218,8 +226,8 @@
              IMAGE_LAYOUT_PREINITIALIZED,
              IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR,
              IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR,
+             IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR,
              IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT,
-             IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV,
              IMAGE_LAYOUT_SHARED_PRESENT_KHR,
              IMAGE_LAYOUT_PRESENT_SRC_KHR,
              IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,
@@ -248,8 +256,8 @@
   , (IMAGE_LAYOUT_PREINITIALIZED                  , "PREINITIALIZED")
   , (IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR          , "ATTACHMENT_OPTIMAL_KHR")
   , (IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR           , "READ_ONLY_OPTIMAL_KHR")
+  , (IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR, "FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR")
   , (IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT, "FRAGMENT_DENSITY_MAP_OPTIMAL_EXT")
-  , (IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV         , "SHADING_RATE_OPTIMAL_NV")
   , (IMAGE_LAYOUT_SHARED_PRESENT_KHR              , "SHARED_PRESENT_KHR")
   , (IMAGE_LAYOUT_PRESENT_SRC_KHR                 , "PRESENT_SRC_KHR")
   , (IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL       , "STENCIL_READ_ONLY_OPTIMAL")
diff --git a/src/Vulkan/Core10/Enums/ImageTiling.hs b/src/Vulkan/Core10/Enums/ImageTiling.hs
--- a/src/Vulkan/Core10/Enums/ImageTiling.hs
+++ b/src/Vulkan/Core10/Enums/ImageTiling.hs
@@ -29,7 +29,7 @@
   deriving newtype (Eq, Ord, Storable, Zero)
 
 -- | 'IMAGE_TILING_OPTIMAL' specifies optimal tiling (texels are laid out in
--- an implementation-dependent arrangement, for more optimal memory
+-- an implementation-dependent arrangement, for more efficient memory
 -- access).
 pattern IMAGE_TILING_OPTIMAL                 = ImageTiling 0
 -- | 'IMAGE_TILING_LINEAR' specifies linear tiling (texels are laid out in
diff --git a/src/Vulkan/Core10/Enums/ImageUsageFlagBits.hs b/src/Vulkan/Core10/Enums/ImageUsageFlagBits.hs
--- a/src/Vulkan/Core10/Enums/ImageUsageFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/ImageUsageFlagBits.hs
@@ -9,8 +9,8 @@
                                                                    , IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
                                                                    , IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
                                                                    , IMAGE_USAGE_INPUT_ATTACHMENT_BIT
+                                                                   , IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
                                                                    , IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
-                                                                   , IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV
                                                                    , ..
                                                                    )
                                                ) where
@@ -38,54 +38,59 @@
 
 -- | 'IMAGE_USAGE_TRANSFER_SRC_BIT' specifies that the image /can/ be used as
 -- the source of a transfer command.
-pattern IMAGE_USAGE_TRANSFER_SRC_BIT             = ImageUsageFlagBits 0x00000001
+pattern IMAGE_USAGE_TRANSFER_SRC_BIT                         = ImageUsageFlagBits 0x00000001
 -- | 'IMAGE_USAGE_TRANSFER_DST_BIT' specifies that the image /can/ be used as
 -- the destination of a transfer command.
-pattern IMAGE_USAGE_TRANSFER_DST_BIT             = ImageUsageFlagBits 0x00000002
+pattern IMAGE_USAGE_TRANSFER_DST_BIT                         = ImageUsageFlagBits 0x00000002
 -- | 'IMAGE_USAGE_SAMPLED_BIT' specifies that the image /can/ be used to
 -- create a 'Vulkan.Core10.Handles.ImageView' suitable for occupying a
 -- 'Vulkan.Core10.Handles.DescriptorSet' slot either of type
 -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE' or
 -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
 -- and be sampled by a shader.
-pattern IMAGE_USAGE_SAMPLED_BIT                  = ImageUsageFlagBits 0x00000004
+pattern IMAGE_USAGE_SAMPLED_BIT                              = ImageUsageFlagBits 0x00000004
 -- | 'IMAGE_USAGE_STORAGE_BIT' specifies that the image /can/ be used to
 -- create a 'Vulkan.Core10.Handles.ImageView' suitable for occupying a
 -- 'Vulkan.Core10.Handles.DescriptorSet' slot of type
 -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE'.
-pattern IMAGE_USAGE_STORAGE_BIT                  = ImageUsageFlagBits 0x00000008
+pattern IMAGE_USAGE_STORAGE_BIT                              = ImageUsageFlagBits 0x00000008
 -- | 'IMAGE_USAGE_COLOR_ATTACHMENT_BIT' specifies that the image /can/ be
 -- used to create a 'Vulkan.Core10.Handles.ImageView' suitable for use as a
 -- color or resolve attachment in a 'Vulkan.Core10.Handles.Framebuffer'.
-pattern IMAGE_USAGE_COLOR_ATTACHMENT_BIT         = ImageUsageFlagBits 0x00000010
+pattern IMAGE_USAGE_COLOR_ATTACHMENT_BIT                     = ImageUsageFlagBits 0x00000010
 -- | 'IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT' specifies that the image
 -- /can/ be used to create a 'Vulkan.Core10.Handles.ImageView' suitable for
 -- use as a depth\/stencil or depth\/stencil resolve attachment in a
 -- 'Vulkan.Core10.Handles.Framebuffer'.
-pattern IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = ImageUsageFlagBits 0x00000020
+pattern IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT             = ImageUsageFlagBits 0x00000020
 -- | 'IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT' specifies that the memory bound
--- to this image will have been allocated with the
+-- to this image will be allocated with the
 -- 'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT'
 -- (see
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory>
 -- for more detail). This bit /can/ be set for any image that /can/ be used
 -- to create a 'Vulkan.Core10.Handles.ImageView' suitable for use as a
 -- color, resolve, depth\/stencil, or input attachment.
-pattern IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT     = ImageUsageFlagBits 0x00000040
+pattern IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT                 = ImageUsageFlagBits 0x00000040
 -- | 'IMAGE_USAGE_INPUT_ATTACHMENT_BIT' specifies that the image /can/ be
 -- used to create a 'Vulkan.Core10.Handles.ImageView' suitable for
 -- occupying 'Vulkan.Core10.Handles.DescriptorSet' slot of type
 -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT';
 -- be read from a shader as an input attachment; and be used as an input
 -- attachment in a framebuffer.
-pattern IMAGE_USAGE_INPUT_ATTACHMENT_BIT         = ImageUsageFlagBits 0x00000080
+pattern IMAGE_USAGE_INPUT_ATTACHMENT_BIT                     = ImageUsageFlagBits 0x00000080
+-- | 'IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' specifies that
+-- the image /can/ be used to create a 'Vulkan.Core10.Handles.ImageView'
+-- suitable for use as a
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-image shading rate image>
+pattern IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = ImageUsageFlagBits 0x00000100
 -- | 'IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT' specifies that the image
 -- /can/ be used to create a 'Vulkan.Core10.Handles.ImageView' suitable for
 -- use as a
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapops fragment density map image>.
-pattern IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = ImageUsageFlagBits 0x00000200
--- No documentation found for Nested "VkImageUsageFlagBits" "VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV"
-pattern IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV    = ImageUsageFlagBits 0x00000100
+pattern IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT             = ImageUsageFlagBits 0x00000200
 
 conNameImageUsageFlagBits :: String
 conNameImageUsageFlagBits = "ImageUsageFlagBits"
@@ -95,16 +100,16 @@
 
 showTableImageUsageFlagBits :: [(ImageUsageFlagBits, String)]
 showTableImageUsageFlagBits =
-  [ (IMAGE_USAGE_TRANSFER_SRC_BIT            , "TRANSFER_SRC_BIT")
-  , (IMAGE_USAGE_TRANSFER_DST_BIT            , "TRANSFER_DST_BIT")
-  , (IMAGE_USAGE_SAMPLED_BIT                 , "SAMPLED_BIT")
-  , (IMAGE_USAGE_STORAGE_BIT                 , "STORAGE_BIT")
-  , (IMAGE_USAGE_COLOR_ATTACHMENT_BIT        , "COLOR_ATTACHMENT_BIT")
-  , (IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, "DEPTH_STENCIL_ATTACHMENT_BIT")
-  , (IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT    , "TRANSIENT_ATTACHMENT_BIT")
-  , (IMAGE_USAGE_INPUT_ATTACHMENT_BIT        , "INPUT_ATTACHMENT_BIT")
-  , (IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT, "FRAGMENT_DENSITY_MAP_BIT_EXT")
-  , (IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV   , "SHADING_RATE_IMAGE_BIT_NV")
+  [ (IMAGE_USAGE_TRANSFER_SRC_BIT                        , "TRANSFER_SRC_BIT")
+  , (IMAGE_USAGE_TRANSFER_DST_BIT                        , "TRANSFER_DST_BIT")
+  , (IMAGE_USAGE_SAMPLED_BIT                             , "SAMPLED_BIT")
+  , (IMAGE_USAGE_STORAGE_BIT                             , "STORAGE_BIT")
+  , (IMAGE_USAGE_COLOR_ATTACHMENT_BIT                    , "COLOR_ATTACHMENT_BIT")
+  , (IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT            , "DEPTH_STENCIL_ATTACHMENT_BIT")
+  , (IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT                , "TRANSIENT_ATTACHMENT_BIT")
+  , (IMAGE_USAGE_INPUT_ATTACHMENT_BIT                    , "INPUT_ATTACHMENT_BIT")
+  , (IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, "FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR")
+  , (IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT            , "FRAGMENT_DENSITY_MAP_BIT_EXT")
   ]
 
 instance Show ImageUsageFlagBits where
diff --git a/src/Vulkan/Core10/Enums/LogicOp.hs b/src/Vulkan/Core10/Enums/LogicOp.hs
--- a/src/Vulkan/Core10/Enums/LogicOp.hs
+++ b/src/Vulkan/Core10/Enums/LogicOp.hs
@@ -93,7 +93,8 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'
+-- 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo',
+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
 newtype LogicOp = LogicOp Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
diff --git a/src/Vulkan/Core10/Enums/LogicOp.hs-boot b/src/Vulkan/Core10/Enums/LogicOp.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core10/Enums/LogicOp.hs-boot
@@ -0,0 +1,8 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "LogicOp"
+module Vulkan.Core10.Enums.LogicOp  (LogicOp) where
+
+
+
+data LogicOp
+
diff --git a/src/Vulkan/Core10/Enums/ObjectType.hs b/src/Vulkan/Core10/Enums/ObjectType.hs
--- a/src/Vulkan/Core10/Enums/ObjectType.hs
+++ b/src/Vulkan/Core10/Enums/ObjectType.hs
@@ -34,6 +34,8 @@
                                                   , OBJECT_TYPE_VALIDATION_CACHE_EXT
                                                   , OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR
                                                   , OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT
+                                                  , OBJECT_TYPE_CU_FUNCTION_NVX
+                                                  , OBJECT_TYPE_CU_MODULE_NVX
                                                   , OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT
                                                   , OBJECT_TYPE_DISPLAY_MODE_KHR
                                                   , OBJECT_TYPE_DISPLAY_KHR
@@ -225,6 +227,10 @@
 pattern OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR      = ObjectType 1000150000
 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT"
 pattern OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT       = ObjectType 1000128000
+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_CU_FUNCTION_NVX"
+pattern OBJECT_TYPE_CU_FUNCTION_NVX                 = ObjectType 1000029001
+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_CU_MODULE_NVX"
+pattern OBJECT_TYPE_CU_MODULE_NVX                   = ObjectType 1000029000
 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT"
 pattern OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT       = ObjectType 1000011000
 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DISPLAY_MODE_KHR"
@@ -273,6 +279,8 @@
              OBJECT_TYPE_VALIDATION_CACHE_EXT,
              OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR,
              OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT,
+             OBJECT_TYPE_CU_FUNCTION_NVX,
+             OBJECT_TYPE_CU_MODULE_NVX,
              OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT,
              OBJECT_TYPE_DISPLAY_MODE_KHR,
              OBJECT_TYPE_DISPLAY_KHR,
@@ -323,6 +331,8 @@
   , (OBJECT_TYPE_VALIDATION_CACHE_EXT           , "VALIDATION_CACHE_EXT")
   , (OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR     , "ACCELERATION_STRUCTURE_KHR")
   , (OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT      , "DEBUG_UTILS_MESSENGER_EXT")
+  , (OBJECT_TYPE_CU_FUNCTION_NVX                , "CU_FUNCTION_NVX")
+  , (OBJECT_TYPE_CU_MODULE_NVX                  , "CU_MODULE_NVX")
   , (OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT      , "DEBUG_REPORT_CALLBACK_EXT")
   , (OBJECT_TYPE_DISPLAY_MODE_KHR               , "DISPLAY_MODE_KHR")
   , (OBJECT_TYPE_DISPLAY_KHR                    , "DISPLAY_KHR")
diff --git a/src/Vulkan/Core10/Enums/PipelineCreateFlagBits.hs b/src/Vulkan/Core10/Enums/PipelineCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/PipelineCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/PipelineCreateFlagBits.hs
@@ -68,9 +68,9 @@
 --     on each shader in the pipeline before using the pipeline.
 --
 -- -   'PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR' specifies that the
---     shader compiler should capture statistics for the executables
---     produced by the compile process which /can/ later be retrieved by
---     calling
+--     shader compiler should capture statistics for the pipeline
+--     executables produced by the compile process which /can/ later be
+--     retrieved by calling
 --     'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.getPipelineExecutableStatisticsKHR'.
 --     Enabling this flag /must/ not affect the final compiled pipeline but
 --     /may/ disable pipeline caching or otherwise affect pipeline creation
@@ -78,8 +78,8 @@
 --
 -- -   'PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR' specifies
 --     that the shader compiler should capture the internal representations
---     of executables produced by the compile process which /can/ later be
---     retrieved by calling
+--     of pipeline executables produced by the compile process which /can/
+--     later be retrieved by calling
 --     'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.getPipelineExecutableInternalRepresentationsKHR'.
 --     Enabling this flag /must/ not affect the final compiled pipeline but
 --     /may/ disable pipeline caching or otherwise affect pipeline creation
@@ -109,10 +109,10 @@
 --
 -- -   'PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR' specifies that
 --     triangle primitives will be skipped during traversal using
---     @OpTraceKHR@.
+--     @OpTraceRayKHR@.
 --
 -- -   'PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR' specifies that AABB
---     primitives will be skipped during traversal using @OpTraceKHR@.
+--     primitives will be skipped during traversal using @OpTraceRayKHR@.
 --
 -- -   'PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'
 --     specifies that the shader group handles /can/ be saved and reused on
diff --git a/src/Vulkan/Core10/Enums/PipelineStageFlagBits.hs b/src/Vulkan/Core10/Enums/PipelineStageFlagBits.hs
--- a/src/Vulkan/Core10/Enums/PipelineStageFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/PipelineStageFlagBits.hs
@@ -20,10 +20,10 @@
                                                                          , PIPELINE_STAGE_ALL_COMMANDS_BIT
                                                                          , PIPELINE_STAGE_NONE_KHR
                                                                          , PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV
+                                                                         , PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
                                                                          , PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT
                                                                          , PIPELINE_STAGE_MESH_SHADER_BIT_NV
                                                                          , PIPELINE_STAGE_TASK_SHADER_BIT_NV
-                                                                         , PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV
                                                                          , PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR
                                                                          , PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
                                                                          , PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT
@@ -69,8 +69,9 @@
 -- execution when specified in the first scope.
 pattern PIPELINE_STAGE_TOP_OF_PIPE_BIT                      = PipelineStageFlagBits 0x00000001
 -- | 'PIPELINE_STAGE_DRAW_INDIRECT_BIT' specifies the stage of the pipeline
--- where Draw\/DispatchIndirect\/TraceRaysIndirect data structures are
--- consumed. This stage also includes reading commands written by
+-- where @VkDrawIndirect*@ \/ @VkDispatchIndirect*@ \/
+-- @VkTraceRaysIndirect*@ data structures are consumed. This stage also
+-- includes reading commands written by
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdExecuteGeneratedCommandsNV'.
 pattern PIPELINE_STAGE_DRAW_INDIRECT_BIT                    = PipelineStageFlagBits 0x00000002
 -- | 'PIPELINE_STAGE_VERTEX_INPUT_BIT' specifies the stage of the pipeline
@@ -172,7 +173,7 @@
 --
 -- -   'PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
 --
--- -   'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+-- -   'PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
 --
 -- -   'PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
 pattern PIPELINE_STAGE_ALL_GRAPHICS_BIT                     = PipelineStageFlagBits 0x00008000
@@ -186,6 +187,14 @@
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdPreprocessGeneratedCommandsNV'
 -- is handled.
 pattern PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV            = PipelineStageFlagBits 0x00020000
+-- | 'PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' specifies the
+-- stage of the pipeline where the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-attachment shading rate image>
+-- is read to determine the fragment shading rate for portions of a
+-- rasterized primitive.
+pattern PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = PipelineStageFlagBits 0x00400000
 -- | 'PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT' specifies the stage of
 -- the pipeline where the fragment density map is read to
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapops generate the fragment areas>.
@@ -194,8 +203,6 @@
 pattern PIPELINE_STAGE_MESH_SHADER_BIT_NV                   = PipelineStageFlagBits 0x00100000
 -- | 'PIPELINE_STAGE_TASK_SHADER_BIT_NV' specifies the task shader stage.
 pattern PIPELINE_STAGE_TASK_SHADER_BIT_NV                   = PipelineStageFlagBits 0x00080000
--- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV"
-pattern PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV            = PipelineStageFlagBits 0x00400000
 -- | 'PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR' specifies the execution of
 -- the ray tracing shader stages, via
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV' ,
@@ -251,10 +258,10 @@
   , (PIPELINE_STAGE_ALL_COMMANDS_BIT                    , "ALL_COMMANDS_BIT")
   , (PIPELINE_STAGE_NONE_KHR                            , "NONE_KHR")
   , (PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV           , "COMMAND_PREPROCESS_BIT_NV")
+  , (PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, "FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR")
   , (PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT    , "FRAGMENT_DENSITY_PROCESS_BIT_EXT")
   , (PIPELINE_STAGE_MESH_SHADER_BIT_NV                  , "MESH_SHADER_BIT_NV")
   , (PIPELINE_STAGE_TASK_SHADER_BIT_NV                  , "TASK_SHADER_BIT_NV")
-  , (PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV           , "SHADING_RATE_IMAGE_BIT_NV")
   , (PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR          , "RAY_TRACING_SHADER_BIT_KHR")
   , (PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, "ACCELERATION_STRUCTURE_BUILD_BIT_KHR")
   , (PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT       , "CONDITIONAL_RENDERING_BIT_EXT")
diff --git a/src/Vulkan/Core10/Enums/PrimitiveTopology.hs b/src/Vulkan/Core10/Enums/PrimitiveTopology.hs
--- a/src/Vulkan/Core10/Enums/PrimitiveTopology.hs
+++ b/src/Vulkan/Core10/Enums/PrimitiveTopology.hs
@@ -37,9 +37,8 @@
 -- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iOS41NzgxMjUiCiAgIGhlaWdodD0iMTMuODc1IgogICB2aWV3Qm94PSIwIDAgOS41NzgxMjUxIDEzLjg3NSIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnODY1MyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi40ICg1ZGE2ODljMzEzLCAyMDE5LTAxLTE0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0icHJpbWl0aXZlX3RvcG9sb2d5X2tleV92ZXJ0ZXhfbnVtYmVyLnN2ZyI+CiAgPGRlZnMKICAgICBpZD0iZGVmczg2NDciIC8+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIGlkPSJiYXNlIgogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxLjAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAuMCIKICAgICBpbmtzY2FwZTpwYWdlc2hhZG93PSIyIgogICAgIGlua3NjYXBlOnpvb209IjIuODI4NDI3MSIKICAgICBpbmtzY2FwZTpjeD0iNzguNTg2NDQiCiAgICAgaW5rc2NhcGU6Y3k9Ii02OS41NjgzODgiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9InB4IgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImxheWVyMSIKICAgICBzaG93Z3JpZD0idHJ1ZSIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE5MjAiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTAwMSIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iLTkiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9Ii05IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjAiCiAgICAgZml0LW1hcmdpbi10b3A9IjEiCiAgICAgZml0LW1hcmdpbi1sZWZ0PSIxIgogICAgIGZpdC1tYXJnaW4tcmlnaHQ9IjEiCiAgICAgZml0LW1hcmdpbi1ib3R0b209IjEiCiAgICAgaW5rc2NhcGU6c25hcC1ncmlkcz0idHJ1ZSIKICAgICBpbmtzY2FwZTpzbmFwLXRleHQtYmFzZWxpbmU9InRydWUiCiAgICAgaW5rc2NhcGU6c25hcC1vYmplY3QtbWlkcG9pbnRzPSJ0cnVlIgogICAgIHVuaXRzPSJweCIKICAgICBib3JkZXJsYXllcj0iZmFsc2UiPgogICAgPGlua3NjYXBlOmdyaWQKICAgICAgIHR5cGU9Inh5Z3JpZCIKICAgICAgIGlkPSJncmlkOTYyNiIKICAgICAgIG9yaWdpbng9Ii05MC4zNjcxOTEiCiAgICAgICBvcmlnaW55PSItNjE4Ljc1Nzg0IiAvPgogIDwvc29kaXBvZGk6bmFtZWR2aWV3PgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTg2NTAiPgogICAgPHJkZjpSREY+CiAgICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgICAgPGRjOnRpdGxlPjwvZGM6dGl0bGU+CiAgICAgIDwvY2M6V29yaz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMDIuOTAxNTgsMjEwLjY2Nzg2KSI+CiAgICA8dGV4dAogICAgICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIKICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjEuMjU7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidzYW5zLXNlcmlmLCBOb3JtYWwnO2ZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1jYXBzOm5vcm1hbDtmb250LXZhcmlhbnQtbnVtZXJpYzpub3JtYWw7Zm9udC1mZWF0dXJlLXNldHRpbmdzOm5vcm1hbDt0ZXh0LWFsaWduOmNlbnRlcjtsZXR0ZXItc3BhY2luZzowcHg7d29yZC1zcGFjaW5nOjBweDt3cml0aW5nLW1vZGU6bHItdGI7dGV4dC1hbmNob3I6bWlkZGxlO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MS4xNjQyNzM5OCIKICAgICAgIHg9IjEwNy41MzQzOSIKICAgICAgIHk9Ii0xOTguMDM1MDUiCiAgICAgICBpZD0idGV4dDUwNzAtMi0yLTktOS00MS05Ij48dHNwYW4KICAgICAgICAgc29kaXBvZGk6cm9sZT0ibGluZSIKICAgICAgICAgaWQ9InRzcGFuNTA2OC0wLTMtMzYtOS0xLTUiCiAgICAgICAgIHg9IjEwNy41MzQzOSIKICAgICAgICAgeT0iLTE5OC4wMzUwNSIKICAgICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3RyZXRjaDpub3JtYWw7Zm9udC1zaXplOjE2cHg7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidzYW5zLXNlcmlmLCBOb3JtYWwnO2ZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1jYXBzOm5vcm1hbDtmb250LXZhcmlhbnQtbnVtZXJpYzpub3JtYWw7Zm9udC1mZWF0dXJlLXNldHRpbmdzOm5vcm1hbDt0ZXh0LWFsaWduOmNlbnRlcjt3cml0aW5nLW1vZGU6bHItdGI7dGV4dC1hbmNob3I6bWlkZGxlO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2Utd2lkdGg6MS4xNjQyNzM5OCI+NTwvdHNwYW4+PC90ZXh0PgogIDwvZz4KPC9zdmc+Cg== primitive topology key vertex number>>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Vertex    | Sequence position of a vertex within the provided vertex data.                                                                 |
 -- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Number    |                                                                                                                                |
 -- +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------+
--- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iNTcuNDYxNTcxIgogICBoZWlnaHQ9IjguOTgxNzg2NyIKICAgdmlld0JveD0iMCAwIDU3LjQ2MTU3MSA4Ljk4MTc4NyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnODY1MyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi40ICg1ZGE2ODljMzEzLCAyMDE5LTAxLTE0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0icHJpbWl0aXZlX3RvcG9sb2d5X2tleV9wcm92b2tpbmdfdmVydGV4LnN2ZyI+CiAgPGRlZnMKICAgICBpZD0iZGVmczg2NDciPgogICAgPG1hcmtlcgogICAgICAgaW5rc2NhcGU6c3RvY2tpZD0iQXJyb3cxTXN0YXJ0IgogICAgICAgb3JpZW50PSJhdXRvIgogICAgICAgcmVmWT0iMCIKICAgICAgIHJlZlg9IjAiCiAgICAgICBpZD0ibWFya2VyNjc0NC04LTItMiIKICAgICAgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlIgogICAgICAgaW5rc2NhcGU6aXNzdG9jaz0idHJ1ZSI+CiAgICAgIDxwYXRoCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIGlkPSJwYXRoNjc0Mi05LTY3LTUiCiAgICAgICAgIGQ9Ik0gMCwwIDUsLTUgLTEyLjUsMCA1LDUgWiIKICAgICAgICAgc3R5bGU9ImZpbGw6I2ZiMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I2ZiMDAwMDtzdHJva2Utd2lkdGg6MS4wMDAwMDAwM3B0O3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuNCwwLDAsMC40LDQsMCkiIC8+CiAgICA8L21hcmtlcj4KICA8L2RlZnM+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIGlkPSJiYXNlIgogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxLjAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAuMCIKICAgICBpbmtzY2FwZTpwYWdlc2hhZG93PSIyIgogICAgIGlua3NjYXBlOnpvb209IjIuODI4NDI3MSIKICAgICBpbmtzY2FwZTpjeD0iLTEzOC43MDg0NCIKICAgICBpbmtzY2FwZTpjeT0iLTU1Ljg2NTYyOCIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0icHgiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIgogICAgIHNob3dncmlkPSJ0cnVlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMjU5NSIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSIxNDk1IgogICAgIGlua3NjYXBlOndpbmRvdy14PSI0ODEiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjE5MSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGZpdC1tYXJnaW4tdG9wPSIxIgogICAgIGZpdC1tYXJnaW4tbGVmdD0iMSIKICAgICBmaXQtbWFyZ2luLXJpZ2h0PSIxIgogICAgIGZpdC1tYXJnaW4tYm90dG9tPSIxIgogICAgIGlua3NjYXBlOnNuYXAtZ3JpZHM9InRydWUiCiAgICAgaW5rc2NhcGU6c25hcC10ZXh0LWJhc2VsaW5lPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtb2JqZWN0LW1pZHBvaW50cz0idHJ1ZSIKICAgICB1bml0cz0icHgiCiAgICAgYm9yZGVybGF5ZXI9ImZhbHNlIj4KICAgIDxpbmtzY2FwZTpncmlkCiAgICAgICB0eXBlPSJ4eWdyaWQiCiAgICAgICBpZD0iZ3JpZDk2MjYiCiAgICAgICBvcmlnaW54PSItOTAuNTA5MTEiCiAgICAgICBvcmlnaW55PSItNTk1LjUwOTE2IiAvPgogIDwvc29kaXBvZGk6bmFtZWR2aWV3PgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTg2NTAiPgogICAgPHJkZjpSREY+CiAgICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgICAgPGRjOnRpdGxlIC8+CiAgICAgIDwvY2M6V29yaz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMDMuMDQzNSwxODIuNTI1OTUpIj4KICAgIDxnCiAgICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTMwLDM1LjAwMDA1NykiCiAgICAgICBpZD0iZzExOTEzLTAiPgogICAgICA8cGF0aAogICAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDE4NzItMi0zLTEtMS01IgogICAgICAgICBkPSJtIDI4Ny41MzQzOSwtMjEzLjAzNTExIGggLTUwIgogICAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojZmIwMDAwO3N0cm9rZS13aWR0aDoxcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MTttYXJrZXItc3RhcnQ6dXJsKCNtYXJrZXI2NzQ0LTgtMi0yKSIgLz4KICAgICAgPGNpcmNsZQogICAgICAgICByPSIzLjQ5MDg5MzEiCiAgICAgICAgIGN5PSItMjEzLjAzNTExIgogICAgICAgICBjeD0iMjM3LjUzNDM5IgogICAgICAgICBpZD0icGF0aDQ1MTctMC04LTUtOTEtMC0zLTgiCiAgICAgICAgIHN0eWxlPSJmaWxsOiNmZjAwMDA7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjE7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4KICAgIDwvZz4KICA8L2c+Cjwvc3ZnPgo= primitive topology key provoking vertex>>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | Provoking | Provoking vertex within the main primitive. The arrow points along an edge of the relevant primitive, following winding order. |
--- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Vertex    | Used in                                                                                                                        |
--- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |           | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-flatshading flat shading>.       |
+-- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iMTUuNzE0ODQ5IgogICBoZWlnaHQ9IjEwLjkzODc2MiIKICAgdmlld0JveD0iMCAwIDE1LjcxNDg0OSAxMC45Mzg3NjIiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2Zzg2NTMiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuOTIuNCAoNWRhNjg5YzMxMywgMjAxOS0wMS0xNCkiCiAgIHNvZGlwb2RpOmRvY25hbWU9InByaW1pdGl2ZV90b3BvbG9neV9rZXlfcHJvdm9raW5nX3ZlcnRleC5zdmciPgogIDxkZWZzCiAgICAgaWQ9ImRlZnM4NjQ3IiAvPgogIDxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpZD0iYmFzZSIKICAgICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgICAgYm9yZGVyY29sb3I9IiM2NjY2NjYiCiAgICAgYm9yZGVyb3BhY2l0eT0iMS4wIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp6b29tPSIyLjgyODQyNzEiCiAgICAgaW5rc2NhcGU6Y3g9Ii0xMzguNzA4NDQiCiAgICAgaW5rc2NhcGU6Y3k9Ii01NS44NjU2MjgiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9InB4IgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImxheWVyMSIKICAgICBzaG93Z3JpZD0idHJ1ZSIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjI1OTUiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTQ5NSIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iNDgxIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIxOTEiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMCIKICAgICBmaXQtbWFyZ2luLXRvcD0iMSIKICAgICBmaXQtbWFyZ2luLWxlZnQ9IjEiCiAgICAgZml0LW1hcmdpbi1yaWdodD0iMSIKICAgICBmaXQtbWFyZ2luLWJvdHRvbT0iMSIKICAgICBpbmtzY2FwZTpzbmFwLWdyaWRzPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtdGV4dC1iYXNlbGluZT0idHJ1ZSIKICAgICBpbmtzY2FwZTpzbmFwLW9iamVjdC1taWRwb2ludHM9InRydWUiCiAgICAgdW5pdHM9InB4IgogICAgIGJvcmRlcmxheWVyPSJmYWxzZSI+CiAgICA8aW5rc2NhcGU6Z3JpZAogICAgICAgdHlwZT0ieHlncmlkIgogICAgICAgaWQ9ImdyaWQ5NjI2IgogICAgICAgb3JpZ2lueD0iLTkwLjUwOTEwNyIKICAgICAgIG9yaWdpbnk9Ii01OTUuNTA5MTciIC8+CiAgPC9zb2RpcG9kaTpuYW1lZHZpZXc+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhODY1MCI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGUgLz4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiCiAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEwMy4wNDM1LDE4NC40ODI5MikiPgogICAgPGNpcmNsZQogICAgICAgc3R5bGU9ImZpbGw6I2ZmMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MTtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgaWQ9InBhdGg0NTE3LTAtOC01LTkxLTAtMy04IgogICAgICAgY3g9IjEwNy41MzQzOSIKICAgICAgIGN5PSItMTc4LjAzNTA1IgogICAgICAgcj0iMy40OTA4OTMxIiAvPgogICAgPHBhdGgKICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiNmYTAwMDA7c3Ryb2tlLXdpZHRoOjEuMDAxNTc0NzU7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgIGQ9Im0gMTA3LjUzNDM5LC0xNzguMDM1IDEwLC01IgogICAgICAgaWQ9InBhdGg0NjcyIgogICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4KICA8L2c+Cjwvc3ZnPgo= primitive topology key provoking vertex>>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | Provoking | Provoking vertex within the main primitive. The tail is angled towards the relevant primitive. Used in                         |
+-- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Vertex    | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-flatshading flat shading>.       |
 -- +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------+
 -- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iODIiCiAgIGhlaWdodD0iMyIKICAgdmlld0JveD0iMCAwIDgyLjAwMDAwMSAzLjAwMDAwMDEiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2Zzg2NTMiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuOTIuNCAoNWRhNjg5YzMxMywgMjAxOS0wMS0xNCkiCiAgIHNvZGlwb2RpOmRvY25hbWU9InByaW1pdGl2ZV90b3BvbG9neV9rZXlfZWRnZS5zdmciPgogIDxkZWZzCiAgICAgaWQ9ImRlZnM4NjQ3IiAvPgogIDxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpZD0iYmFzZSIKICAgICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgICAgYm9yZGVyY29sb3I9IiM2NjY2NjYiCiAgICAgYm9yZGVyb3BhY2l0eT0iMS4wIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp6b29tPSIyLjgyODQyNzEiCiAgICAgaW5rc2NhcGU6Y3g9Ii0xNTUuNzc5NSIKICAgICBpbmtzY2FwZTpjeT0iLTQuNTU4MjQ3MyIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0icHgiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIgogICAgIHNob3dncmlkPSJ0cnVlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMjI2MiIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSIxNTA3IgogICAgIGlua3NjYXBlOndpbmRvdy14PSI0ODIiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjM4NSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGZpdC1tYXJnaW4tdG9wPSIxIgogICAgIGZpdC1tYXJnaW4tbGVmdD0iMSIKICAgICBmaXQtbWFyZ2luLXJpZ2h0PSIxIgogICAgIGZpdC1tYXJnaW4tYm90dG9tPSIxIgogICAgIGlua3NjYXBlOnNuYXAtZ3JpZHM9InRydWUiCiAgICAgaW5rc2NhcGU6c25hcC10ZXh0LWJhc2VsaW5lPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtb2JqZWN0LW1pZHBvaW50cz0idHJ1ZSIKICAgICB1bml0cz0icHgiCiAgICAgYm9yZGVybGF5ZXI9ImZhbHNlIj4KICAgIDxpbmtzY2FwZTpncmlkCiAgICAgICB0eXBlPSJ4eWdyaWQiCiAgICAgICBpZD0iZ3JpZDk2MjYiCiAgICAgICBvcmlnaW54PSItMzA5IgogICAgICAgb3JpZ2lueT0iLTY0OC41MDAwMyIgLz4KICA8L3NvZGlwb2RpOm5hbWVkdmlldz4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGE4NjUwIj4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICAgIDxkYzp0aXRsZSAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZwogICAgIGlua3NjYXBlOmxhYmVsPSJMYXllciAxIgogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9ImxheWVyMSIKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzIxLjUzNDM5LDIyOS41MzUwMykiPgogICAgPHBhdGgKICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLWRhc2hvZmZzZXQ6MDtzdHJva2Utb3BhY2l0eToxIgogICAgICAgZD0ibSAzMjIuNTM0MzksLTIyOC4wMzUwMyBoIDgwIgogICAgICAgaWQ9InBhdGgyMDMzLTEiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogIDwvZz4KPC9zdmc+Cg== primitive topology key edge>>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | Primitive | An edge connecting the points of a main primitive.                                                                             |
 -- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Edge      |                                                                                                                                |
diff --git a/src/Vulkan/Core10/Enums/QueueFlagBits.hs b/src/Vulkan/Core10/Enums/QueueFlagBits.hs
--- a/src/Vulkan/Core10/Enums/QueueFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/QueueFlagBits.hs
@@ -28,29 +28,6 @@
 --
 -- = Description
 --
--- -   'QUEUE_GRAPHICS_BIT' specifies that queues in this queue family
---     support graphics operations.
---
--- -   'QUEUE_COMPUTE_BIT' specifies that queues in this queue family
---     support compute operations.
---
--- -   'QUEUE_TRANSFER_BIT' specifies that queues in this queue family
---     support transfer operations.
---
--- -   'QUEUE_SPARSE_BINDING_BIT' specifies that queues in this queue
---     family support sparse memory management operations (see
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory Sparse Resources>).
---     If any of the sparse resource features are enabled, then at least
---     one queue family /must/ support this bit.
---
--- -   if 'QUEUE_PROTECTED_BIT' is set, then the queues in this queue
---     family support the
---     'Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DEVICE_QUEUE_CREATE_PROTECTED_BIT'
---     bit. (see
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-protected-memory Protected Memory>).
---     If the physical device supports the @protectedMemory@ feature, at
---     least one of its queue families /must/ support this bit.
---
 -- If an implementation exposes any queue family that supports graphics
 -- operations, at least one queue family of at least one physical device
 -- exposed by the implementation /must/ support both graphics and compute
@@ -79,15 +56,28 @@
 newtype QueueFlagBits = QueueFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_GRAPHICS_BIT"
+-- | 'QUEUE_GRAPHICS_BIT' specifies that queues in this queue family support
+-- graphics operations.
 pattern QUEUE_GRAPHICS_BIT       = QueueFlagBits 0x00000001
--- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_COMPUTE_BIT"
+-- | 'QUEUE_COMPUTE_BIT' specifies that queues in this queue family support
+-- compute operations.
 pattern QUEUE_COMPUTE_BIT        = QueueFlagBits 0x00000002
--- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_TRANSFER_BIT"
+-- | 'QUEUE_TRANSFER_BIT' specifies that queues in this queue family support
+-- transfer operations.
 pattern QUEUE_TRANSFER_BIT       = QueueFlagBits 0x00000004
--- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_SPARSE_BINDING_BIT"
+-- | 'QUEUE_SPARSE_BINDING_BIT' specifies that queues in this queue family
+-- support sparse memory management operations (see
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory Sparse Resources>).
+-- If any of the sparse resource features are enabled, then at least one
+-- queue family /must/ support this bit.
 pattern QUEUE_SPARSE_BINDING_BIT = QueueFlagBits 0x00000008
--- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_PROTECTED_BIT"
+-- | 'QUEUE_PROTECTED_BIT' specifies that queues in this queue family support
+-- the
+-- 'Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DEVICE_QUEUE_CREATE_PROTECTED_BIT'
+-- bit. (see
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-protected-memory Protected Memory>).
+-- If the physical device supports the @protectedMemory@ feature, at least
+-- one of its queue families /must/ support this bit.
 pattern QUEUE_PROTECTED_BIT      = QueueFlagBits 0x00000010
 
 conNameQueueFlagBits :: String
diff --git a/src/Vulkan/Core10/Enums/StructureType.hs b/src/Vulkan/Core10/Enums/StructureType.hs
--- a/src/Vulkan/Core10/Enums/StructureType.hs
+++ b/src/Vulkan/Core10/Enums/StructureType.hs
@@ -49,12 +49,18 @@
                                                         , STRUCTURE_TYPE_MEMORY_BARRIER
                                                         , STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO
                                                         , STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO
+                                                        , STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT
                                                         , STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT
                                                         , STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA
                                                         , STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA
                                                         , STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA
                                                         , STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA
                                                         , STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA
+                                                        , STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT
+                                                        , STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT
                                                         , STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE
                                                         , STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT
@@ -75,6 +81,7 @@
                                                         , STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT
                                                         , STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV
@@ -108,6 +115,8 @@
                                                         , STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT
+                                                        , STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV
                                                         , STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV
                                                         , STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV
@@ -133,6 +142,9 @@
                                                         , STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT
                                                         , STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT
                                                         , STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT
+                                                        , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT
                                                         , STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV
@@ -355,6 +367,9 @@
                                                         , STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD
                                                         , STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX
                                                         , STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX
+                                                        , STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX
+                                                        , STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX
+                                                        , STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX
                                                         , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT
@@ -505,23 +520,6 @@
 
 -- | VkStructureType - Vulkan structure types (@sType@)
 --
--- = Description
---
--- Each value corresponds to a particular structure with a @sType@ member
--- with a matching name. As a general rule, the name of each
--- 'StructureType' value is obtained by taking the name of the structure,
--- stripping the leading @Vk@, prefixing each capital letter with @_@,
--- converting the entire resulting string to upper case, and prefixing it
--- with @VK_STRUCTURE_TYPE_@. For example, structures of type
--- 'Vulkan.Core10.Image.ImageCreateInfo' correspond to a 'StructureType' of
--- 'STRUCTURE_TYPE_IMAGE_CREATE_INFO', and thus its @sType@ member /must/
--- equal that when it is passed to the API.
---
--- The values 'STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO' and
--- 'STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO' are reserved for internal use
--- by the loader, and do not have corresponding Vulkan structures in this
--- Specification.
---
 -- = See Also
 --
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureBuildGeometryInfoKHR',
@@ -576,6 +574,7 @@
 -- 'Vulkan.Extensions.VK_EXT_conditional_rendering.CommandBufferInheritanceConditionalRenderingInfoEXT',
 -- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',
 -- 'Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM',
+-- 'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
 -- 'Vulkan.Extensions.VK_KHR_synchronization2.CommandBufferSubmitInfoKHR',
 -- 'Vulkan.Core10.CommandPool.CommandPoolCreateInfo',
 -- 'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',
@@ -590,6 +589,9 @@
 -- 'Vulkan.Extensions.VK_KHR_copy_commands2.CopyImageInfo2KHR',
 -- 'Vulkan.Extensions.VK_KHR_copy_commands2.CopyImageToBufferInfo2KHR',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyMemoryToAccelerationStructureInfoKHR',
+-- 'Vulkan.Extensions.VK_NVX_binary_import.CuFunctionCreateInfoNVX',
+-- 'Vulkan.Extensions.VK_NVX_binary_import.CuLaunchInfoNVX',
+-- 'Vulkan.Extensions.VK_NVX_binary_import.CuModuleCreateInfoNVX',
 -- 'Vulkan.Extensions.VK_KHR_external_semaphore_win32.D3D12FenceSubmitInfoKHR',
 -- 'Vulkan.Extensions.VK_EXT_debug_marker.DebugMarkerMarkerInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_debug_marker.DebugMarkerObjectNameInfoEXT',
@@ -760,6 +762,7 @@
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeatures',
 -- 'Vulkan.Extensions.VK_EXT_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeaturesEXT',
 -- 'Vulkan.Extensions.VK_AMD_device_coherent_memory.PhysicalDeviceCoherentMemoryFeaturesAMD',
+-- 'Vulkan.Extensions.VK_EXT_color_write_enable.PhysicalDeviceColorWriteEnableFeaturesEXT',
 -- 'Vulkan.Extensions.VK_NV_compute_shader_derivatives.PhysicalDeviceComputeShaderDerivativesFeaturesNV',
 -- 'Vulkan.Extensions.VK_EXT_conditional_rendering.PhysicalDeviceConditionalRenderingFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.PhysicalDeviceConservativeRasterizationPropertiesEXT',
@@ -781,6 +784,7 @@
 -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_driver_properties.PhysicalDeviceDriverProperties',
 -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PhysicalDeviceExclusiveScissorFeaturesNV',
+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.PhysicalDeviceExtendedDynamicState2FeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.PhysicalDeviceExtendedDynamicStateFeaturesEXT',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalBufferInfo',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities.PhysicalDeviceExternalFenceInfo',
@@ -809,6 +813,7 @@
 -- 'Vulkan.Extensions.VK_EXT_filter_cubic.PhysicalDeviceImageViewImageFormatInfoEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.PhysicalDeviceImagelessFramebufferFeatures',
 -- 'Vulkan.Extensions.VK_EXT_index_type_uint8.PhysicalDeviceIndexTypeUint8FeaturesEXT',
+-- 'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.PhysicalDeviceInheritedViewportScissorFeaturesNV',
 -- 'Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockPropertiesEXT',
 -- 'Vulkan.Extensions.VK_EXT_line_rasterization.PhysicalDeviceLineRasterizationFeaturesEXT',
@@ -835,6 +840,8 @@
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
 -- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryFeatures',
 -- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryProperties',
+-- 'Vulkan.Extensions.VK_EXT_provoking_vertex.PhysicalDeviceProvokingVertexFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_provoking_vertex.PhysicalDeviceProvokingVertexPropertiesEXT',
 -- 'Vulkan.Extensions.VK_KHR_push_descriptor.PhysicalDevicePushDescriptorPropertiesKHR',
 -- 'Vulkan.Extensions.VK_KHR_ray_query.PhysicalDeviceRayQueryFeaturesKHR',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelineFeaturesKHR',
@@ -883,17 +890,21 @@
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers.PhysicalDeviceVariablePointersFeatures',
 -- 'Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.PhysicalDeviceVertexInputDynamicStateFeaturesEXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkPhysicalDeviceVideoFormatInfoKHR VkPhysicalDeviceVideoFormatInfoKHR>,
 -- 'Vulkan.Core12.PhysicalDeviceVulkan11Features',
 -- 'Vulkan.Core12.PhysicalDeviceVulkan11Properties',
 -- 'Vulkan.Core12.PhysicalDeviceVulkan12Features',
 -- 'Vulkan.Core12.PhysicalDeviceVulkan12Properties',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model.PhysicalDeviceVulkanMemoryModelFeatures',
 -- 'Vulkan.Extensions.VK_KHR_workgroup_memory_explicit_layout.PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR',
+-- 'Vulkan.Extensions.VK_EXT_ycbcr_2plane_444_formats.PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_ycbcr_image_arrays.PhysicalDeviceYcbcrImageArraysFeaturesEXT',
 -- 'Vulkan.Extensions.VK_KHR_zero_initialize_workgroup_memory.PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR',
 -- 'Vulkan.Core10.PipelineCache.PipelineCacheCreateInfo',
 -- 'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PipelineColorBlendAdvancedStateCreateInfoEXT',
 -- 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo',
+-- 'Vulkan.Extensions.VK_EXT_color_write_enable.PipelineColorWriteCreateInfoEXT',
 -- 'Vulkan.Extensions.VK_AMD_pipeline_compiler_control.PipelineCompilerControlCreateInfoAMD',
 -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.PipelineCoverageModulationStateCreateInfoNV',
 -- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PipelineCoverageReductionStateCreateInfoNV',
@@ -916,6 +927,7 @@
 -- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.PipelineRasterizationConservativeStateCreateInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_provoking_vertex.PipelineRasterizationProvokingVertexStateCreateInfoEXT',
 -- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo',
 -- 'Vulkan.Extensions.VK_AMD_rasterization_order.PipelineRasterizationStateRasterizationOrderAMD',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT',
@@ -1004,7 +1016,51 @@
 -- 'Vulkan.Extensions.VK_EXT_validation_cache.ValidationCacheCreateInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_validation_features.ValidationFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_validation_flags.ValidationFlagsEXT',
+-- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputAttributeDescription2EXT',
+-- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputBindingDescription2EXT',
 -- 'Vulkan.Extensions.VK_NN_vi_surface.ViSurfaceCreateInfoNN',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoBeginCodingInfoKHR VkVideoBeginCodingInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoBindMemoryKHR VkVideoBindMemoryKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoCapabilitiesKHR VkVideoCapabilitiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoCodingControlInfoKHR VkVideoCodingControlInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264CapabilitiesEXT VkVideoDecodeH264CapabilitiesEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264DpbSlotInfoEXT VkVideoDecodeH264DpbSlotInfoEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264MvcEXT VkVideoDecodeH264MvcEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264PictureInfoEXT VkVideoDecodeH264PictureInfoEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264ProfileEXT VkVideoDecodeH264ProfileEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264SessionCreateInfoEXT VkVideoDecodeH264SessionCreateInfoEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264SessionParametersAddInfoEXT VkVideoDecodeH264SessionParametersAddInfoEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264SessionParametersCreateInfoEXT VkVideoDecodeH264SessionParametersCreateInfoEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265CapabilitiesEXT VkVideoDecodeH265CapabilitiesEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265DpbSlotInfoEXT VkVideoDecodeH265DpbSlotInfoEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265PictureInfoEXT VkVideoDecodeH265PictureInfoEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265ProfileEXT VkVideoDecodeH265ProfileEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265SessionCreateInfoEXT VkVideoDecodeH265SessionCreateInfoEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265SessionParametersAddInfoEXT VkVideoDecodeH265SessionParametersAddInfoEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265SessionParametersCreateInfoEXT VkVideoDecodeH265SessionParametersCreateInfoEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeInfoKHR VkVideoDecodeInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264CapabilitiesEXT VkVideoEncodeH264CapabilitiesEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264DpbSlotInfoEXT VkVideoEncodeH264DpbSlotInfoEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264EmitPictureParametersEXT VkVideoEncodeH264EmitPictureParametersEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264NaluSliceEXT VkVideoEncodeH264NaluSliceEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264ProfileEXT VkVideoEncodeH264ProfileEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264SessionCreateInfoEXT VkVideoEncodeH264SessionCreateInfoEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264SessionParametersAddInfoEXT VkVideoEncodeH264SessionParametersAddInfoEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264SessionParametersCreateInfoEXT VkVideoEncodeH264SessionParametersCreateInfoEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264VclFrameInfoEXT VkVideoEncodeH264VclFrameInfoEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeInfoKHR VkVideoEncodeInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeRateControlInfoKHR VkVideoEncodeRateControlInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEndCodingInfoKHR VkVideoEndCodingInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoFormatPropertiesKHR VkVideoFormatPropertiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoGetMemoryPropertiesKHR VkVideoGetMemoryPropertiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoPictureResourceKHR VkVideoPictureResourceKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileKHR VkVideoProfileKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfilesKHR VkVideoProfilesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoQueueFamilyProperties2KHR VkVideoQueueFamilyProperties2KHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoReferenceSlotKHR VkVideoReferenceSlotKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionCreateInfoKHR VkVideoSessionCreateInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionParametersCreateInfoKHR VkVideoSessionParametersCreateInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionParametersUpdateInfoKHR VkVideoSessionParametersUpdateInfoKHR>,
 -- 'Vulkan.Extensions.VK_KHR_wayland_surface.WaylandSurfaceCreateInfoKHR',
 -- 'Vulkan.Extensions.VK_KHR_win32_keyed_mutex.Win32KeyedMutexAcquireReleaseInfoKHR',
 -- 'Vulkan.Extensions.VK_NV_win32_keyed_mutex.Win32KeyedMutexAcquireReleaseInfoNV',
@@ -1116,8 +1172,14 @@
 pattern STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO               = StructureType 47
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO"
 pattern STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO                 = StructureType 48
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT      = StructureType 1000381001
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT = StructureType 1000381000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX"
 pattern STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX            = StructureType 1000378000
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT = StructureType 1000377000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA"
 pattern STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA  = StructureType 1000365001
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA"
@@ -1128,6 +1190,12 @@
 pattern STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA   = StructureType 1000364001
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA"
 pattern STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA  = StructureType 1000364000
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT"
+pattern STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT  = StructureType 1000352002
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT"
+pattern STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT    = StructureType 1000352001
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT = StructureType 1000352000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE"
 pattern STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = StructureType 1000351002
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE"
@@ -1168,6 +1236,8 @@
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = StructureType 1000332001
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT"
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = StructureType 1000332000
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT = StructureType 1000330000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV"
 pattern STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV = StructureType 1000326002
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV"
@@ -1234,6 +1304,10 @@
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = StructureType 1000281001
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT"
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = StructureType 1000281000
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV"
+pattern STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV = StructureType 1000278001
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV = StructureType 1000278000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV"
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = StructureType 1000277007
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV"
@@ -1284,6 +1358,12 @@
 pattern STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = StructureType 1000255002
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT"
 pattern STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT    = StructureType 1000255000
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT = StructureType 1000254002
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT = StructureType 1000254001
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT = StructureType 1000254000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT"
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = StructureType 1000252000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT"
@@ -1728,6 +1808,12 @@
 pattern STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX         = StructureType 1000030001
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX"
 pattern STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX                = StructureType 1000030000
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX"
+pattern STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX                        = StructureType 1000029002
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX"
+pattern STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX               = StructureType 1000029001
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX"
+pattern STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX                 = StructureType 1000029000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT"
 pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = StructureType 1000028002
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT"
@@ -2049,12 +2135,18 @@
              STRUCTURE_TYPE_MEMORY_BARRIER,
              STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO,
              STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
+             STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT,
+             STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT,
              STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX,
+             STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT,
              STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA,
              STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA,
              STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA,
              STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA,
              STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA,
+             STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT,
+             STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT,
+             STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT,
              STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE,
              STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT,
@@ -2075,6 +2167,7 @@
              STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT,
+             STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT,
              STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV,
@@ -2108,6 +2201,8 @@
              STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT,
+             STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV,
+             STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV,
              STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV,
              STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV,
@@ -2133,6 +2228,9 @@
              STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT,
              STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT,
              STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT,
+             STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT,
+             STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT,
+             STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT,
              STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV,
@@ -2355,6 +2453,9 @@
              STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD,
              STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX,
              STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX,
+             STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX,
+             STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX,
+             STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX,
              STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT,
@@ -2549,12 +2650,22 @@
   , (STRUCTURE_TYPE_MEMORY_BARRIER                           , "MEMORY_BARRIER")
   , (STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO              , "LOADER_INSTANCE_CREATE_INFO")
   , (STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO                , "LOADER_DEVICE_CREATE_INFO")
+  , (STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT     , "PIPELINE_COLOR_WRITE_CREATE_INFO_EXT")
+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT, "PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT")
   , (STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX           , "SCREEN_SURFACE_CREATE_INFO_QNX")
-  , (STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA , "SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA")
+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT
+    , "PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT"
+    )
+  , (STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA   , "SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA")
   , (STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA, "IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA")
-  , (STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA    , "MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA")
-  , (STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA  , "MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA")
-  , (STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA , "IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA")
+  , (STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA      , "MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA")
+  , (STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA    , "MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA")
+  , (STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA   , "IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA")
+  , (STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT   , "VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT")
+  , (STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT     , "VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT")
+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT
+    , "PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT"
+    )
   , (STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE, "MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE")
   , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE
     , "PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE"
@@ -2583,6 +2694,9 @@
   , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT
     , "PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT"
     )
+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT
+    , "PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT"
+    )
   , ( STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV
     , "PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV"
     )
@@ -2638,6 +2752,12 @@
   , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT
     , "PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT"
     )
+  , ( STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV
+    , "COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV"
+    )
+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV
+    , "PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV"
+    )
   , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV
     , "PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV"
     )
@@ -2679,6 +2799,11 @@
   , (STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT   , "SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT")
   , (STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT , "SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT")
   , (STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT         , "SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT")
+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT, "PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT")
+  , ( STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT
+    , "PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT"
+    )
+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT  , "PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT")
   , (STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT, "PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT")
   , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT
     , "PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT"
@@ -3029,6 +3154,9 @@
   , (STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD , "TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD")
   , (STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX        , "IMAGE_VIEW_ADDRESS_PROPERTIES_NVX")
   , (STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX               , "IMAGE_VIEW_HANDLE_INFO_NVX")
+  , (STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX                       , "CU_LAUNCH_INFO_NVX")
+  , (STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX              , "CU_FUNCTION_CREATE_INFO_NVX")
+  , (STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX                , "CU_MODULE_CREATE_INFO_NVX")
   , ( STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT
     , "PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT"
     )
diff --git a/src/Vulkan/Core10/Enums/VertexInputRate.hs b/src/Vulkan/Core10/Enums/VertexInputRate.hs
--- a/src/Vulkan/Core10/Enums/VertexInputRate.hs
+++ b/src/Vulkan/Core10/Enums/VertexInputRate.hs
@@ -19,7 +19,8 @@
 --
 -- = See Also
 --
--- 'Vulkan.Core10.Pipeline.VertexInputBindingDescription'
+-- 'Vulkan.Core10.Pipeline.VertexInputBindingDescription',
+-- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.VertexInputBindingDescription2EXT'
 newtype VertexInputRate = VertexInputRate Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
diff --git a/src/Vulkan/Core10/ExtensionDiscovery.hs b/src/Vulkan/Core10/ExtensionDiscovery.hs
--- a/src/Vulkan/Core10/ExtensionDiscovery.hs
+++ b/src/Vulkan/Core10/ExtensionDiscovery.hs
@@ -85,8 +85,7 @@
 -- the @pProperties@ array, and on return the variable is overwritten with
 -- the number of structures actually written to @pProperties@. If
 -- @pPropertyCount@ is less than the number of extension properties
--- available, at most @pPropertyCount@ structures will be written. If
--- @pPropertyCount@ is smaller than the number of extensions available,
+-- available, at most @pPropertyCount@ structures will be written, and
 -- 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned instead of
 -- 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate that not all the
 -- available properties were returned.
@@ -254,6 +253,12 @@
 --
 -- = See Also
 --
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264CapabilitiesEXT VkVideoDecodeH264CapabilitiesEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264SessionCreateInfoEXT VkVideoDecodeH264SessionCreateInfoEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265CapabilitiesEXT VkVideoDecodeH265CapabilitiesEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265SessionCreateInfoEXT VkVideoDecodeH265SessionCreateInfoEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264CapabilitiesEXT VkVideoEncodeH264CapabilitiesEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264SessionCreateInfoEXT VkVideoEncodeH264SessionCreateInfoEXT>,
 -- 'enumerateDeviceExtensionProperties',
 -- 'enumerateInstanceExtensionProperties'
 data ExtensionProperties = ExtensionProperties
diff --git a/src/Vulkan/Core10/FuncPointers.hs b/src/Vulkan/Core10/FuncPointers.hs
--- a/src/Vulkan/Core10/FuncPointers.hs
+++ b/src/Vulkan/Core10/FuncPointers.hs
@@ -38,6 +38,10 @@
 -- | PFN_vkInternalFreeNotification - Application-defined memory free
 -- notification function
 --
+-- = Description
+--
+-- > described link:https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-host-allocation-scope[here^].
+--
 -- = See Also
 --
 -- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
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
@@ -61,7 +61,10 @@
 -- = See Also
 --
 -- 'Vulkan.Extensions.VK_KHR_display.DisplayPlaneCapabilitiesKHR',
--- 'Rect2D', 'Vulkan.Extensions.VK_KHR_incremental_present.RectLayerKHR'
+-- 'Rect2D', 'Vulkan.Extensions.VK_KHR_incremental_present.RectLayerKHR',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264CapabilitiesEXT VkVideoDecodeH264CapabilitiesEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeInfoKHR VkVideoDecodeInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoPictureResourceKHR VkVideoPictureResourceKHR>
 data Offset2D = Offset2D
   { -- | @x@ is the x offset.
     x :: Int32
@@ -190,6 +193,13 @@
 -- 'Vulkan.Extensions.VK_EXT_display_surface_counter.SurfaceCapabilities2EXT',
 -- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoCapabilitiesKHR VkVideoCapabilitiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeInfoKHR VkVideoDecodeInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264CapabilitiesEXT VkVideoEncodeH264CapabilitiesEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264SessionCreateInfoEXT VkVideoEncodeH264SessionCreateInfoEXT>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeInfoKHR VkVideoEncodeInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoPictureResourceKHR VkVideoPictureResourceKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionCreateInfoKHR VkVideoSessionCreateInfoKHR>,
 -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR',
 -- 'Vulkan.Core10.Pass.getRenderAreaGranularity'
 data Extent2D = Extent2D
@@ -368,8 +378,8 @@
 --
 -- = Description
 --
--- 'TRUE' represents a boolean __True__ (integer 1) value, and 'FALSE' a
--- boolean __False__ (integer 0) value.
+-- 'TRUE' represents a boolean __True__ (unsigned integer 1) value, and
+-- 'FALSE' a boolean __False__ (unsigned integer 0) value.
 --
 -- All values returned from a Vulkan implementation in a 'Bool32' will be
 -- either 'TRUE' or 'FALSE'.
@@ -382,6 +392,7 @@
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryInstancesDataKHR',
 -- 'Vulkan.Extensions.VK_EXT_conditional_rendering.CommandBufferInheritanceConditionalRenderingInfoEXT',
 -- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',
+-- 'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
 -- 'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationBufferCreateInfoNV',
 -- 'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationImageCreateInfoNV',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.DescriptorSetLayoutSupport',
@@ -403,6 +414,7 @@
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeatures',
 -- 'Vulkan.Extensions.VK_EXT_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeaturesEXT',
 -- 'Vulkan.Extensions.VK_AMD_device_coherent_memory.PhysicalDeviceCoherentMemoryFeaturesAMD',
+-- 'Vulkan.Extensions.VK_EXT_color_write_enable.PhysicalDeviceColorWriteEnableFeaturesEXT',
 -- 'Vulkan.Extensions.VK_NV_compute_shader_derivatives.PhysicalDeviceComputeShaderDerivativesFeaturesNV',
 -- 'Vulkan.Extensions.VK_EXT_conditional_rendering.PhysicalDeviceConditionalRenderingFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_conservative_rasterization.PhysicalDeviceConservativeRasterizationPropertiesEXT',
@@ -419,6 +431,7 @@
 -- 'Vulkan.Extensions.VK_EXT_device_memory_report.PhysicalDeviceDeviceMemoryReportFeaturesEXT',
 -- 'Vulkan.Extensions.VK_NV_device_diagnostics_config.PhysicalDeviceDiagnosticsConfigFeaturesNV',
 -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PhysicalDeviceExclusiveScissorFeaturesNV',
+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.PhysicalDeviceExtendedDynamicState2FeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.PhysicalDeviceExtendedDynamicStateFeaturesEXT',
 -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceFeatures',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls.PhysicalDeviceFloatControlsProperties',
@@ -437,6 +450,7 @@
 -- 'Vulkan.Extensions.VK_EXT_image_robustness.PhysicalDeviceImageRobustnessFeaturesEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.PhysicalDeviceImagelessFramebufferFeatures',
 -- 'Vulkan.Extensions.VK_EXT_index_type_uint8.PhysicalDeviceIndexTypeUint8FeaturesEXT',
+-- 'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.PhysicalDeviceInheritedViewportScissorFeaturesNV',
 -- 'Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockFeaturesEXT',
 -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits',
 -- 'Vulkan.Extensions.VK_EXT_line_rasterization.PhysicalDeviceLineRasterizationFeaturesEXT',
@@ -453,6 +467,8 @@
 -- 'Vulkan.Extensions.VK_EXT_private_data.PhysicalDevicePrivateDataFeaturesEXT',
 -- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryFeatures',
 -- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryProperties',
+-- 'Vulkan.Extensions.VK_EXT_provoking_vertex.PhysicalDeviceProvokingVertexFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_provoking_vertex.PhysicalDeviceProvokingVertexPropertiesEXT',
 -- 'Vulkan.Extensions.VK_KHR_ray_query.PhysicalDeviceRayQueryFeaturesKHR',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelineFeaturesKHR',
 -- 'Vulkan.Extensions.VK_NV_representative_fragment_test.PhysicalDeviceRepresentativeFragmentTestFeaturesNV',
@@ -488,17 +504,20 @@
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout.PhysicalDeviceUniformBufferStandardLayoutFeatures',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers.PhysicalDeviceVariablePointersFeatures',
 -- 'Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.PhysicalDeviceVertexInputDynamicStateFeaturesEXT',
 -- 'Vulkan.Core12.PhysicalDeviceVulkan11Features',
 -- 'Vulkan.Core12.PhysicalDeviceVulkan11Properties',
 -- 'Vulkan.Core12.PhysicalDeviceVulkan12Features',
 -- 'Vulkan.Core12.PhysicalDeviceVulkan12Properties',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model.PhysicalDeviceVulkanMemoryModelFeatures',
 -- 'Vulkan.Extensions.VK_KHR_workgroup_memory_explicit_layout.PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR',
+-- 'Vulkan.Extensions.VK_EXT_ycbcr_2plane_444_formats.PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_ycbcr_image_arrays.PhysicalDeviceYcbcrImageArraysFeaturesEXT',
 -- 'Vulkan.Extensions.VK_KHR_zero_initialize_workgroup_memory.PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR',
 -- 'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PipelineColorBlendAdvancedStateCreateInfoEXT',
 -- 'Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState',
 -- 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo',
+-- 'Vulkan.Extensions.VK_EXT_color_write_enable.PipelineColorWriteCreateInfoEXT',
 -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.PipelineCoverageModulationStateCreateInfoNV',
 -- 'Vulkan.Extensions.VK_NV_fragment_coverage_to_color.PipelineCoverageToColorStateCreateInfoNV',
 -- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo',
@@ -521,11 +540,16 @@
 -- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',
 -- 'Vulkan.Extensions.VK_AMD_display_native_hdr.SwapchainDisplayNativeHdrCreateInfoAMD',
 -- 'Vulkan.Extensions.VK_AMD_texture_gather_bias_lod.TextureLODGatherFormatPropertiesAMD',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264EmitPictureParametersEXT VkVideoEncodeH264EmitPictureParametersEXT>,
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdExecuteGeneratedCommandsNV',
+-- 'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT',
+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnableEXT',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetDepthTestEnableEXT',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnableEXT',
+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT',
+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetStencilTestEnableEXT',
 -- 'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceSupportKHR',
 -- 'Vulkan.Extensions.VK_AMD_display_native_hdr.setLocalDimmingAMD',
@@ -660,6 +684,10 @@
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseMemoryBind',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.StridedDeviceAddressRegionKHR',
 -- 'Vulkan.Core10.Image.SubresourceLayout',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoBindMemoryKHR VkVideoBindMemoryKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoCapabilitiesKHR VkVideoCapabilitiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeInfoKHR VkVideoDecodeInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeInfoKHR VkVideoEncodeInfoKHR>,
 -- 'Vulkan.Core10.MemoryManagement.bindBufferMemory',
 -- 'Vulkan.Core10.MemoryManagement.bindImageMemory',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT',
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
@@ -122,6 +122,10 @@
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseMemoryBind',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.StridedDeviceAddressRegionKHR',
 -- 'Vulkan.Core10.Image.SubresourceLayout',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoBindMemoryKHR VkVideoBindMemoryKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoCapabilitiesKHR VkVideoCapabilitiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeInfoKHR VkVideoDecodeInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeInfoKHR VkVideoEncodeInfoKHR>,
 -- 'Vulkan.Core10.MemoryManagement.bindBufferMemory',
 -- 'Vulkan.Core10.MemoryManagement.bindImageMemory',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT',
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
@@ -187,6 +187,8 @@
 -- 'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfacePresentModesKHR',
 -- 'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceSupportKHR',
 -- 'Vulkan.Extensions.VK_EXT_tooling_info.getPhysicalDeviceToolPropertiesEXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetPhysicalDeviceVideoCapabilitiesKHR vkGetPhysicalDeviceVideoCapabilitiesKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetPhysicalDeviceVideoFormatPropertiesKHR vkGetPhysicalDeviceVideoFormatPropertiesKHR>,
 -- 'Vulkan.Extensions.VK_KHR_wayland_surface.getPhysicalDeviceWaylandPresentationSupportKHR',
 -- 'Vulkan.Extensions.VK_KHR_win32_surface.getPhysicalDeviceWin32PresentationSupportKHR',
 -- 'Vulkan.Extensions.VK_KHR_xcb_surface.getPhysicalDeviceXcbPresentationSupportKHR',
@@ -227,6 +229,7 @@
 -- 'Vulkan.Core10.MemoryManagement.bindImageMemory',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.bindImageMemory2',
 -- 'Vulkan.Extensions.VK_KHR_bind_memory2.bindImageMemory2KHR',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkBindVideoSessionMemoryKHR vkBindVideoSessionMemoryKHR>,
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.buildAccelerationStructuresKHR',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.compileDeferredNV',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.copyAccelerationStructureKHR',
@@ -238,6 +241,8 @@
 -- 'Vulkan.Core10.BufferView.createBufferView',
 -- 'Vulkan.Core10.CommandPool.createCommandPool',
 -- 'Vulkan.Core10.Pipeline.createComputePipelines',
+-- 'Vulkan.Extensions.VK_NVX_binary_import.createCuFunctionNVX',
+-- 'Vulkan.Extensions.VK_NVX_binary_import.createCuModuleNVX',
 -- 'Vulkan.Extensions.VK_KHR_deferred_host_operations.createDeferredOperationKHR',
 -- 'Vulkan.Core10.DescriptorSet.createDescriptorPool',
 -- 'Vulkan.Core10.DescriptorSet.createDescriptorSetLayout',
@@ -267,6 +272,8 @@
 -- 'Vulkan.Extensions.VK_KHR_display_swapchain.createSharedSwapchainsKHR',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR',
 -- 'Vulkan.Extensions.VK_EXT_validation_cache.createValidationCacheEXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCreateVideoSessionKHR vkCreateVideoSessionKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCreateVideoSessionParametersKHR vkCreateVideoSessionParametersKHR>,
 -- 'Vulkan.Extensions.VK_EXT_debug_marker.debugMarkerSetObjectNameEXT',
 -- 'Vulkan.Extensions.VK_EXT_debug_marker.debugMarkerSetObjectTagEXT',
 -- 'Vulkan.Extensions.VK_KHR_deferred_host_operations.deferredOperationJoinKHR',
@@ -275,6 +282,8 @@
 -- 'Vulkan.Core10.Buffer.destroyBuffer',
 -- 'Vulkan.Core10.BufferView.destroyBufferView',
 -- 'Vulkan.Core10.CommandPool.destroyCommandPool',
+-- 'Vulkan.Extensions.VK_NVX_binary_import.destroyCuFunctionNVX',
+-- 'Vulkan.Extensions.VK_NVX_binary_import.destroyCuModuleNVX',
 -- 'Vulkan.Extensions.VK_KHR_deferred_host_operations.destroyDeferredOperationKHR',
 -- 'Vulkan.Core10.DescriptorSet.destroyDescriptorPool',
 -- 'Vulkan.Core10.DescriptorSet.destroyDescriptorSetLayout',
@@ -299,6 +308,8 @@
 -- 'Vulkan.Core10.Shader.destroyShaderModule',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.destroySwapchainKHR',
 -- 'Vulkan.Extensions.VK_EXT_validation_cache.destroyValidationCacheEXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkDestroyVideoSessionKHR vkDestroyVideoSessionKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkDestroyVideoSessionParametersKHR vkDestroyVideoSessionParametersKHR>,
 -- 'Vulkan.Core10.Queue.deviceWaitIdle',
 -- 'Vulkan.Extensions.VK_EXT_display_control.displayPowerControlEXT',
 -- 'Vulkan.Core10.Memory.flushMappedMemoryRanges',
@@ -383,6 +394,7 @@
 -- 'Vulkan.Extensions.VK_KHR_swapchain.getSwapchainImagesKHR',
 -- 'Vulkan.Extensions.VK_KHR_shared_presentable_image.getSwapchainStatusKHR',
 -- 'Vulkan.Extensions.VK_EXT_validation_cache.getValidationCacheDataEXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetVideoSessionMemoryRequirementsKHR vkGetVideoSessionMemoryRequirementsKHR>,
 -- 'Vulkan.Extensions.VK_KHR_external_fence_fd.importFenceFdKHR',
 -- 'Vulkan.Extensions.VK_KHR_external_fence_win32.importFenceWin32HandleKHR',
 -- 'Vulkan.Extensions.VK_KHR_external_semaphore_fd.importSemaphoreFdKHR',
@@ -418,6 +430,7 @@
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.updateDescriptorSetWithTemplate',
 -- 'Vulkan.Extensions.VK_KHR_descriptor_update_template.updateDescriptorSetWithTemplateKHR',
 -- 'Vulkan.Core10.DescriptorSet.updateDescriptorSets',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkUpdateVideoSessionParametersKHR vkUpdateVideoSessionParametersKHR>,
 -- 'Vulkan.Core10.Fence.waitForFences',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.waitSemaphores',
 -- 'Vulkan.Extensions.VK_KHR_timeline_semaphore.waitSemaphoresKHR',
@@ -483,6 +496,7 @@
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.cmdBeginRenderPass2',
 -- 'Vulkan.Extensions.VK_KHR_create_renderpass2.cmdBeginRenderPass2KHR',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR vkCmdBeginVideoCodingKHR>,
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindPipeline',
@@ -499,6 +513,7 @@
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdClearAttachments',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdClearColorImage',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdClearDepthStencilImage',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdControlVideoCodingKHR vkCmdControlVideoCodingKHR>,
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdCopyAccelerationStructureKHR',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdCopyAccelerationStructureNV',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdCopyAccelerationStructureToMemoryKHR',
@@ -512,9 +527,11 @@
 -- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyImageToBuffer2KHR',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdCopyMemoryToAccelerationStructureKHR',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults',
+-- 'Vulkan.Extensions.VK_NVX_binary_import.cmdCuLaunchKernelNVX',
 -- 'Vulkan.Extensions.VK_EXT_debug_marker.cmdDebugMarkerBeginEXT',
 -- '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.Core10.CommandBufferBuilding.cmdDispatch',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.cmdDispatchBase',
 -- 'Vulkan.Extensions.VK_KHR_device_group.cmdDispatchBaseKHR',
@@ -533,6 +550,7 @@
 -- 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectCountNV',
 -- 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectNV',
 -- 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksNV',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdEncodeVideoKHR vkCmdEncodeVideoKHR>,
 -- 'Vulkan.Extensions.VK_EXT_conditional_rendering.cmdEndConditionalRenderingEXT',
 -- 'Vulkan.Extensions.VK_EXT_debug_utils.cmdEndDebugUtilsLabelEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdEndQuery',
@@ -541,6 +559,7 @@
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.cmdEndRenderPass2',
 -- 'Vulkan.Extensions.VK_KHR_create_renderpass2.cmdEndRenderPass2KHR',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdEndVideoCodingKHR vkCmdEndVideoCodingKHR>,
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdExecuteCommands',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdExecuteGeneratedCommandsNV',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdFillBuffer',
@@ -562,8 +581,10 @@
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants',
 -- 'Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.cmdSetCheckpointNV',
 -- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV',
+-- 'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetCullModeEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBias',
+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnableEXT',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetDepthCompareOpEXT',
@@ -580,10 +601,14 @@
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetFrontFaceEXT',
 -- 'Vulkan.Extensions.VK_EXT_line_rasterization.cmdSetLineStippleEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth',
+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT',
+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT',
 -- 'Vulkan.Extensions.VK_INTEL_performance_query.cmdSetPerformanceMarkerINTEL',
 -- 'Vulkan.Extensions.VK_INTEL_performance_query.cmdSetPerformanceOverrideINTEL',
 -- 'Vulkan.Extensions.VK_INTEL_performance_query.cmdSetPerformanceStreamMarkerINTEL',
+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT',
+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdSetRayTracingPipelineStackSizeKHR',
 -- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor',
@@ -593,6 +618,7 @@
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetStencilTestEnableEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask',
+-- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport',
 -- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV',
 -- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV',
@@ -639,6 +665,7 @@
 -- 'Vulkan.Extensions.VK_FUCHSIA_external_memory.MemoryGetZirconHandleInfoFUCHSIA',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseMemoryBind',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoBindMemoryKHR VkVideoBindMemoryKHR>,
 -- 'Vulkan.Extensions.VK_KHR_win32_keyed_mutex.Win32KeyedMutexAcquireReleaseInfoKHR',
 -- 'Vulkan.Extensions.VK_NV_win32_keyed_mutex.Win32KeyedMutexAcquireReleaseInfoNV',
 -- 'Vulkan.Core10.Memory.allocateMemory',
@@ -700,6 +727,8 @@
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsStreamNV',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseBufferMemoryBindInfo',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeInfoKHR VkVideoDecodeInfoKHR>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeInfoKHR VkVideoEncodeInfoKHR>,
 -- 'Vulkan.Core10.MemoryManagement.bindBufferMemory',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer',
@@ -807,6 +836,7 @@
 -- 'Vulkan.Core10.Pass.FramebufferCreateInfo',
 -- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewHandleInfoNVX',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoPictureResourceKHR VkVideoPictureResourceKHR>,
 -- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdBindShadingRateImageNV',
 -- 'Vulkan.Core10.ImageView.createImageView',
 -- 'Vulkan.Core10.ImageView.destroyImageView',
diff --git a/src/Vulkan/Core10/Image.hs b/src/Vulkan/Core10/Image.hs
--- a/src/Vulkan/Core10/Image.hs
+++ b/src/Vulkan/Core10/Image.hs
@@ -215,6 +215,10 @@
 --     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
 --     provided when @image@ was created, @pAllocator@ /must/ be @NULL@
 --
+-- -   #VUID-vkDestroyImage-image-04882# @image@ /must/ not have been
+--     acquired from
+--     'Vulkan.Extensions.VK_KHR_swapchain.getSwapchainImagesKHR'
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkDestroyImage-device-parameter# @device@ /must/ be a valid
@@ -498,6 +502,8 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views Image Views>
 -- for more detail).
 --
+-- == Image Creation Limits
+--
 -- Valid values for some image creation parameters are limited by a
 -- numerical upper bound or by inclusion in a bitset. For example,
 -- 'ImageCreateInfo'::@arrayLayers@ is limited by
@@ -562,7 +568,7 @@
 --         the @pNext@ chain includes no
 --         'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'
 --         structure with non-zero @externalFormat@, then
---         @imageCreateFormatFeatures@ is value of
+--         @imageCreateFormatFeatures@ is the value of
 --         'Vulkan.Core10.DeviceInitialization.FormatProperties'::@optimalTilingFeatures@
 --         found by calling
 --         'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFormatProperties'
@@ -689,12 +695,12 @@
 --
 --         -   'Vulkan.Core10.DeviceInitialization.ImageFormatProperties'::@maxArrayLayers@
 --             is
---             'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::maxImageArrayLayers.
+--             'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxImageArrayLayers@.
 --
 --         -   Each component of
 --             'Vulkan.Core10.DeviceInitialization.ImageFormatProperties'::@maxExtent@
 --             is
---             'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::maxImageDimension2D.
+--             'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxImageDimension2D@.
 --
 --         -   'Vulkan.Core10.DeviceInitialization.ImageFormatProperties'::@sampleCounts@
 --             contains exactly
@@ -722,12 +728,12 @@
 --     in @imageCreateImageFormatPropertiesList@. The value is undefined if
 --     @imageCreateImageFormatPropertiesList@ is empty.
 --
--- = Valid Usage
+-- == Valid Usage
 --
 -- -   #VUID-VkImageCreateInfo-imageCreateMaxMipLevels-02251# Each of the
 --     following values (as described in
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
---     /must/ not be undefined @imageCreateMaxMipLevels@,
+--     /must/ not be undefined : @imageCreateMaxMipLevels@,
 --     @imageCreateMaxArrayLayers@, @imageCreateMaxExtent@, and
 --     @imageCreateSampleCounts@
 --
@@ -1257,16 +1263,16 @@
 --     greater than @1@
 --
 -- -   #VUID-VkImageCreateInfo-imageType-02082# If @usage@ includes
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR',
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR',
 --     @imageType@ /must/ be 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'
 --
 -- -   #VUID-VkImageCreateInfo-samples-02083# If @usage@ includes
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR',
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR',
 --     @samples@ /must/ be
 --     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
 --
 -- -   #VUID-VkImageCreateInfo-tiling-02084# If @usage@ includes
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV',
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV',
 --     @tiling@ /must/ be
 --     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL'
 --
@@ -1306,20 +1312,20 @@
 --     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'
 --     structure was included in the @pNext@ chain and
 --     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@viewFormatCount@
---     is not zero then all of the formats in
+--     is not zero, then all of the formats in
 --     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@pViewFormats@
 --     /must/ be compatible with the @format@ as described in the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility compatibility table>
 --
 -- -   #VUID-VkImageCreateInfo-flags-04738# If @flags@ does not contain
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT'
---     and the @pNext@ chain include a
+--     and the @pNext@ chain includes a
 --     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'
---     structure then
+--     structure, then
 --     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@viewFormatCount@
 --     /must/ be @0@ or @1@
 --
--- = Valid Usage (Implicit)
+-- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkImageCreateInfo-sType-sType# @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_CREATE_INFO'
@@ -1335,7 +1341,10 @@
 --     'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierListCreateInfoEXT',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo',
 --     'Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo',
---     or 'Vulkan.Extensions.VK_KHR_swapchain.ImageSwapchainCreateInfoKHR'
+--     'Vulkan.Extensions.VK_KHR_swapchain.ImageSwapchainCreateInfoKHR',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileKHR VkVideoProfileKHR>,
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfilesKHR VkVideoProfilesKHR>
 --
 -- -   #VUID-VkImageCreateInfo-sType-unique# The @sType@ value of each
 --     struct in the @pNext@ chain /must/ be unique
@@ -1371,7 +1380,6 @@
 --     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
 --     value
 --
--- \<\/section>
 -- = See Also
 --
 -- 'Vulkan.Core10.FundamentalTypes.Extent3D',
@@ -1407,8 +1415,8 @@
   , -- | @arrayLayers@ is the number of layers in the image.
     arrayLayers :: Word32
   , -- | @samples@ is a
-    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' specifying
-    -- the number of
+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
+    -- specifying the number of
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling samples per texel>.
     samples :: SampleCountFlagBits
   , -- | @tiling@ is a 'Vulkan.Core10.Enums.ImageTiling.ImageTiling' value
@@ -1422,9 +1430,9 @@
     -- specifying the sharing mode of the image when it will be accessed by
     -- multiple queue families.
     sharingMode :: SharingMode
-  , -- | @pQueueFamilyIndices@ is a list of queue families that will access this
-    -- image (ignored if @sharingMode@ is not
-    -- 'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT').
+  , -- | @pQueueFamilyIndices@ is a pointer to an array of queue families that
+    -- will access this image. It is ignored if @sharingMode@ is not
+    -- 'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT'.
     queueFamilyIndices :: Vector Word32
   , -- | @initialLayout@ is a 'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
     -- specifying the initial 'Vulkan.Core10.Enums.ImageLayout.ImageLayout' of
diff --git a/src/Vulkan/Core10/ImageView.hs b/src/Vulkan/Core10/ImageView.hs
--- a/src/Vulkan/Core10/ImageView.hs
+++ b/src/Vulkan/Core10/ImageView.hs
@@ -377,7 +377,7 @@
 --
 -- When using an image view of a depth\/stencil image to populate a
 -- descriptor set (e.g. for sampling in the shader, or for use as an input
--- attachment), the @aspectMask@ /must/ only include one bit and selects
+-- attachment), the @aspectMask@ /must/ only include one bit, which selects
 -- whether the image view is used for depth reads (i.e. using a
 -- floating-point sampler or input attachment in the shader) or stencil
 -- reads (i.e. using an unsigned integer sampler or input attachment in the
@@ -521,8 +521,8 @@
 -- implicit @usage@ /can/ be overriden by adding a
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.ImageViewUsageCreateInfo'
 -- structure to the @pNext@ chain, but the view usage /must/ be a subset of
--- the image usage. If the image was has a depth-stencil format and was
--- created with a
+-- the image usage. If @image@ has a depth-stencil format and was created
+-- with a
 -- 'Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'
 -- structure included in the @pNext@ chain of
 -- 'Vulkan.Core10.Image.ImageCreateInfo', the usage is calculated based on
@@ -573,8 +573,8 @@
 -- flag, @format@ /must/ be /compatible/ with the image’s format as
 -- described above, or /must/ be an uncompressed format in which case it
 -- /must/ be /size-compatible/ with the image’s format, as defined for
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-images-format-size-compatibility copying data between images>
--- In this case the resulting image view’s texel dimensions equal the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-images-format-size-compatibility copying data between images>.
+-- In this case, the resulting image view’s texel dimensions equal the
 -- dimensions of the selected mip level divided by the compressed texel
 -- block size and rounded up.
 --
@@ -601,9 +601,9 @@
 -- If the image has a
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>
 -- @format@ and @subresourceRange.aspectMask@ is
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT',
--- @format@ /must/ be identical to the image @format@, and the sampler to
--- be used with the image view /must/ enable
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT', then
+-- the @format@ /must/ be identical to the image @format@, and the sampler
+-- to be used with the image view /must/ enable
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>.
 --
 -- If @image@ was created with the
@@ -998,7 +998,7 @@
 --
 -- -   #VUID-VkImageViewCreateInfo-image-02086# If @image@ was created with
 --     @usage@ containing
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR',
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR',
 --     @viewType@ /must/ be
 --     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' or
 --     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'
@@ -1006,13 +1006,13 @@
 -- -   #VUID-VkImageViewCreateInfo-image-02087# If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage feature>
 --     is enabled, and If @image@ was created with @usage@ containing
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV',
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV',
 --     @format@ /must/ be 'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT'
 --
 -- -   #VUID-VkImageViewCreateInfo-usage-04550# If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate feature>
 --     is enabled, and the @usage@ for the image view includes
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR',
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR',
 --     then the image view’s
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
 --     /must/ contain
@@ -1021,7 +1021,7 @@
 -- -   #VUID-VkImageViewCreateInfo-usage-04551# If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate feature>
 --     is enabled, the @usage@ for the image view includes
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR',
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR',
 --     and
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-layeredShadingRateAttachments layeredShadingRateAttachments>
 --     is 'Vulkan.Core10.FundamentalTypes.FALSE',
@@ -1153,8 +1153,10 @@
 --     @NULL@ or a pointer to a valid instance of
 --     'Vulkan.Extensions.VK_EXT_astc_decode_mode.ImageViewASTCDecodeModeEXT',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.ImageViewUsageCreateInfo',
+--     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileKHR VkVideoProfileKHR>,
 --     or
---     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo'
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfilesKHR VkVideoProfilesKHR>
 --
 -- -   #VUID-VkImageViewCreateInfo-sType-unique# The @sType@ value of each
 --     struct in the @pNext@ chain /must/ be unique
@@ -1203,12 +1205,12 @@
   , -- | @format@ is a 'Vulkan.Core10.Enums.Format.Format' describing the format
     -- and type used to interpret texel blocks in the image.
     format :: Format
-  , -- | @components@ is a 'ComponentMapping' specifies a remapping of color
-    -- components (or of depth or stencil components after they have been
+  , -- | @components@ is a 'ComponentMapping' structure specifying a remapping of
+    -- color components (or of depth or stencil components after they have been
     -- converted into color components).
     components :: ComponentMapping
-  , -- | @subresourceRange@ is a 'ImageSubresourceRange' selecting the set of
-    -- mipmap levels and array layers to be accessible to the view.
+  , -- | @subresourceRange@ is a 'ImageSubresourceRange' structure selecting the
+    -- set of mipmap levels and array layers to be accessible to the view.
     subresourceRange :: ImageSubresourceRange
   }
   deriving (Typeable)
diff --git a/src/Vulkan/Core10/LayerDiscovery.hs b/src/Vulkan/Core10/LayerDiscovery.hs
--- a/src/Vulkan/Core10/LayerDiscovery.hs
+++ b/src/Vulkan/Core10/LayerDiscovery.hs
@@ -79,11 +79,10 @@
 -- the @pProperties@ array, and on return the variable is overwritten with
 -- the number of structures actually written to @pProperties@. If
 -- @pPropertyCount@ is less than the number of layer properties available,
--- at most @pPropertyCount@ structures will be written. If @pPropertyCount@
--- is smaller than the number of layers available,
+-- at most @pPropertyCount@ structures will be written, and
 -- 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned instead of
 -- 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate that not all the
--- available layer properties were returned.
+-- available properties were returned.
 --
 -- The list of available layers may change at any time due to actions
 -- outside of the Vulkan implementation, so two calls to
@@ -160,11 +159,10 @@
 -- the @pProperties@ array, and on return the variable is overwritten with
 -- the number of structures actually written to @pProperties@. If
 -- @pPropertyCount@ is less than the number of layer properties available,
--- at most @pPropertyCount@ structures will be written. If @pPropertyCount@
--- is smaller than the number of layers available,
+-- at most @pPropertyCount@ structures will be written, and
 -- 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned instead of
 -- 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate that not all the
--- available layer properties were returned.
+-- available properties were returned.
 --
 -- The list of layers enumerated by 'enumerateDeviceLayerProperties' /must/
 -- be exactly the sequence of layers enabled for the instance. The members
diff --git a/src/Vulkan/Core10/Memory.hs b/src/Vulkan/Core10/Memory.hs
--- a/src/Vulkan/Core10/Memory.hs
+++ b/src/Vulkan/Core10/Memory.hs
@@ -125,9 +125,9 @@
 -- When memory is allocated, its contents are undefined with the following
 -- constraint:
 --
--- -   The contents of unprotected memory /must/ not be a function of data
---     protected memory objects, even if those memory objects were
---     previously freed.
+-- -   The contents of unprotected memory /must/ not be a function of the
+--     contents of data protected memory objects, even if those memory
+--     objects were previously freed.
 --
 -- Note
 --
@@ -169,13 +169,13 @@
 --
 -- -   #VUID-vkAllocateMemory-pAllocateInfo-01713#
 --     @pAllocateInfo->allocationSize@ /must/ be less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceMemoryProperties'::@memoryHeaps@[memindex].size
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceMemoryProperties'::@memoryHeaps@[@memindex@].@size@
 --     where @memindex@ =
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceMemoryProperties'::@memoryTypes@[pAllocateInfo->memoryTypeIndex].heapIndex
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceMemoryProperties'::@memoryTypes@[@pAllocateInfo->memoryTypeIndex@].@heapIndex@
 --     as returned by
 --     'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceMemoryProperties'
 --     for the 'Vulkan.Core10.Handles.PhysicalDevice' that @device@ was
---     created from
+--     created from.
 --
 -- -   #VUID-vkAllocateMemory-pAllocateInfo-01714#
 --     @pAllocateInfo->memoryTypeIndex@ /must/ be less than
@@ -183,13 +183,13 @@
 --     as returned by
 --     'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceMemoryProperties'
 --     for the 'Vulkan.Core10.Handles.PhysicalDevice' that @device@ was
---     created from
+--     created from.
 --
 -- -   #VUID-vkAllocateMemory-deviceCoherentMemory-02790# If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceCoherentMemory deviceCoherentMemory>
 --     feature is not enabled, @pAllocateInfo->memoryTypeIndex@ /must/ not
 --     identify a memory type supporting
---     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'
+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'.
 --
 -- -   #VUID-vkAllocateMemory-maxMemoryAllocationCount-04101# There /must/
 --     be less than
@@ -237,7 +237,7 @@
                => -- | @device@ is the logical device that owns the memory.
                   Device
                -> -- | @pAllocateInfo@ is a pointer to a 'MemoryAllocateInfo' structure
-                  -- describing parameters of the allocation. A successful returned
+                  -- describing parameters of the allocation. A successfully returned
                   -- allocation /must/ use the requested parameters — no substitution is
                   -- permitted by the implementation.
                   (MemoryAllocateInfo a)
@@ -841,11 +841,12 @@
 -- possible.
 --
 -- Importing memory /must/ not increase overall heap usage within a system.
--- However, they /must/ affect the following per-process values: *
--- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.PhysicalDeviceMaintenance3Properties'::@maxMemoryAllocationCount@
--- *
--- 'Vulkan.Extensions.VK_EXT_memory_budget.PhysicalDeviceMemoryBudgetPropertiesEXT'::@heapUsage@
+-- However, it /must/ affect the following per-process values:
 --
+-- -   'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.PhysicalDeviceMaintenance3Properties'::@maxMemoryAllocationCount@
+--
+-- -   'Vulkan.Extensions.VK_EXT_memory_budget.PhysicalDeviceMemoryBudgetPropertiesEXT'::@heapUsage@
+--
 -- When performing a memory import operation, it is the responsibility of
 -- the application to ensure the external handles and their associated
 -- payloads meet all valid usage requirements. However, implementations
@@ -1165,12 +1166,12 @@
 data MemoryAllocateInfo (es :: [Type]) = MemoryAllocateInfo
   { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
-  , -- | @allocationSize@ is the size of the allocation in bytes
+  , -- | @allocationSize@ is the size of the allocation in bytes.
     allocationSize :: DeviceSize
   , -- | @memoryTypeIndex@ is an index identifying a memory type from the
     -- @memoryTypes@ array of the
     -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceMemoryProperties'
-    -- structure
+    -- structure.
     memoryTypeIndex :: Word32
   }
   deriving (Typeable)
diff --git a/src/Vulkan/Core10/MemoryManagement.hs b/src/Vulkan/Core10/MemoryManagement.hs
--- a/src/Vulkan/Core10/MemoryManagement.hs
+++ b/src/Vulkan/Core10/MemoryManagement.hs
@@ -142,11 +142,11 @@
 --     equal to the size of @memory@ minus @memoryOffset@
 --
 -- -   #VUID-vkBindBufferMemory-buffer-01444# If @buffer@ requires a
---     dedicated allocation(as reported by
+--     dedicated allocation (as reported by
 --     'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2'
 --     in
---     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedRequirements'::requiresDedicatedAllocation
---     for @buffer@), @memory@ /must/ have been created with
+--     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedRequirements'::@requiresDedicatedAllocation@
+--     for @buffer@), @memory@ /must/ have been allocated with
 --     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::@buffer@
 --     equal to @buffer@
 --
@@ -161,22 +161,24 @@
 --     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::@buffer@,
 --     and @memoryOffset@ /must/ be zero
 --
--- -   #VUID-vkBindBufferMemory-None-01898# If buffer was created with the
+-- -   #VUID-vkBindBufferMemory-None-01898# If @buffer@ was created with
+--     the
 --     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
 --     bit set, the buffer /must/ be bound to a memory object allocated
 --     with a memory type that reports
 --     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_PROTECTED_BIT'
 --
--- -   #VUID-vkBindBufferMemory-None-01899# If buffer was created with the
+-- -   #VUID-vkBindBufferMemory-None-01899# If @buffer@ was created with
+--     the
 --     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
 --     bit not set, the buffer /must/ not be bound to a memory object
---     created with a memory type that reports
+--     allocated with a memory type that reports
 --     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_PROTECTED_BIT'
 --
 -- -   #VUID-vkBindBufferMemory-buffer-01038# If @buffer@ was created with
 --     'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationBufferCreateInfoNV'::@dedicatedAllocation@
 --     equal to 'Vulkan.Core10.FundamentalTypes.TRUE', @memory@ /must/ have
---     been created with
+--     been allocated with
 --     'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV'::@buffer@
 --     equal to a buffer handle created with identical creation parameters
 --     to @buffer@ and @memoryOffset@ /must/ be zero
@@ -188,16 +190,16 @@
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo'::@handleTypes@
 --     when @buffer@ was created
 --
--- -   #VUID-vkBindBufferMemory-memory-02985# If @memory@ was created by a
---     memory import operation, that is not
+-- -   #VUID-vkBindBufferMemory-memory-02985# If @memory@ was allocated by
+--     a memory import operation, that is not
 --     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ImportAndroidHardwareBufferInfoANDROID'
 --     with a non-@NULL@ @buffer@ value, the external handle type of the
 --     imported memory /must/ also have been set in
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo'::@handleTypes@
 --     when @buffer@ was created
 --
--- -   #VUID-vkBindBufferMemory-memory-02986# If @memory@ was created with
---     the
+-- -   #VUID-vkBindBufferMemory-memory-02986# If @memory@ was allocated
+--     with the
 --     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ImportAndroidHardwareBufferInfoANDROID'
 --     memory import operation with a non-@NULL@ @buffer@ value,
 --     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID'
@@ -366,7 +368,7 @@
 --     allocation (as reported by
 --     'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2'
 --     in
---     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedRequirements'::requiresDedicatedAllocation
+--     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedRequirements'::@requiresDedicatedAllocation@
 --     for @image@), @memory@ /must/ have been created with
 --     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::@image@
 --     equal to @image@
diff --git a/src/Vulkan/Core10/OtherTypes.hs b/src/Vulkan/Core10/OtherTypes.hs
--- a/src/Vulkan/Core10/OtherTypes.hs
+++ b/src/Vulkan/Core10/OtherTypes.hs
@@ -207,9 +207,10 @@
 --     with a sharing mode of
 --     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',
 --     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are not equal, and
---     one of @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ is a special
---     queue family values reserved for external memory transfers, the
---     other /must/ be 'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED'
+--     one of @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ is one of the
+--     special queue family values reserved for external memory transfers,
+--     the other /must/ be
+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED'
 --
 -- -   #VUID-VkBufferMemoryBarrier-buffer-04089# If @buffer@ was created
 --     with a sharing mode of
@@ -603,9 +604,9 @@
 --     or @oldLayout@ and @newLayout@ define an
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
 --     and @oldLayout@ or @newLayout@ is
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR'
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR'
 --     then @image@ /must/ have been created with
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
 --     set
 --
 -- -   #VUID-VkImageMemoryBarrier-image-01671# If @image@ has a
@@ -655,9 +656,10 @@
 --     a sharing mode of
 --     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',
 --     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are not equal, and
---     one of @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ is a special
---     queue family values reserved for external memory transfers, the
---     other /must/ be 'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED'
+--     one of @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ is one of the
+--     special queue family values reserved for external memory transfers,
+--     the other /must/ be
+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED'
 --
 -- -   #VUID-VkImageMemoryBarrier-image-04072# If @image@ was created with
 --     a sharing mode of
@@ -813,7 +815,7 @@
            zero
 
 
--- | VkDrawIndirectCommand - Structure specifying a draw indirect command
+-- | VkDrawIndirectCommand - Structure specifying a indirect drawing command
 --
 -- = Description
 --
@@ -891,8 +893,8 @@
            zero
 
 
--- | VkDrawIndexedIndirectCommand - Structure specifying a draw indexed
--- indirect command
+-- | VkDrawIndexedIndirectCommand - Structure specifying a indexed indirect
+-- drawing command
 --
 -- = Description
 --
@@ -985,7 +987,7 @@
            zero
 
 
--- | VkDispatchIndirectCommand - Structure specifying a dispatch indirect
+-- | VkDispatchIndirectCommand - Structure specifying a indirect dispatching
 -- command
 --
 -- = Description
diff --git a/src/Vulkan/Core10/Pass.hs b/src/Vulkan/Core10/Pass.hs
--- a/src/Vulkan/Core10/Pass.hs
+++ b/src/Vulkan/Core10/Pass.hs
@@ -479,8 +479,8 @@
 --     (the horizontal granularity).
 --
 -- -   the @offset.y@ member in @renderArea@ is a multiple of the @height@
---     of the returned 'Vulkan.Core10.FundamentalTypes.Extent2D' (the
---     vertical granularity).
+--     member of the returned 'Vulkan.Core10.FundamentalTypes.Extent2D'
+--     (the vertical granularity).
 --
 -- -   either the @offset.width@ member in @renderArea@ is a multiple of
 --     the horizontal granularity or @offset.x@+@offset.width@ is equal to
@@ -831,8 +831,9 @@
   , -- | @format@ is a 'Vulkan.Core10.Enums.Format.Format' value specifying the
     -- format of the image view that will be used for the attachment.
     format :: Format
-  , -- | @samples@ is the number of samples of the image as defined in
-    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'.
+  , -- | @samples@ is a
+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
+    -- specifying the number of samples of the image.
     samples :: SampleCountFlagBits
   , -- | @loadOp@ is a 'Vulkan.Core10.Enums.AttachmentLoadOp.AttachmentLoadOp'
     -- value specifying how the contents of color and depth components of the
@@ -1021,8 +1022,10 @@
 -- decorated with a @Location@ value of __X__, then it uses the attachment
 -- provided in @pColorAttachments@[__X__]. If the @attachment@ member of
 -- any element of @pColorAttachments@ is
--- 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', writes to the
--- corresponding location by a fragment are discarded.
+-- 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', or if
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-color-write-enable Color Write Enable>
+-- has been disabled for the corresponding attachment index, then writes to
+-- the corresponding location by a fragment shader are discarded.
 --
 -- If @flags@ does not include
 -- 'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM',
@@ -1201,8 +1204,8 @@
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', they /must/ have the
 --     same sample count
 --
--- -   #VUID-VkSubpassDescription-attachment-00853# The @attachment@ member
---     of each element of @pPreserveAttachments@ /must/ not be
+-- -   #VUID-VkSubpassDescription-attachment-00853# Each element of
+--     @pPreserveAttachments@ /must/ not be
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'
 --
 -- -   #VUID-VkSubpassDescription-pPreserveAttachments-00854# Each element
@@ -1239,16 +1242,6 @@
 --     then the subpass /must/ be the last subpass in a subpass dependency
 --     chain
 --
--- -   #VUID-VkSubpassDescription-flags-03344# If @flags@ includes
---     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM',
---     then the sample count of the input attachments /must/ equal
---     @rasterizationSamples@
---
--- -   #VUID-VkSubpassDescription-flags-03345# If @flags@ includes
---     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM',
---     and if @sampleShadingEnable@ is enabled (explicitly or implicitly)
---     then @minSampleShading@ /must/ equal 0.0
---
 -- -   #VUID-VkSubpassDescription-pInputAttachments-02868# If the render
 --     pass is created with
 --     'Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM'
@@ -1313,17 +1306,17 @@
     -- structures defining the input attachments for this subpass and their
     -- layouts.
     inputAttachments :: Vector AttachmentReference
-  , -- | @pColorAttachments@ is a pointer to an array of 'AttachmentReference'
-    -- structures defining the color attachments for this subpass and their
-    -- layouts.
+  , -- | @pColorAttachments@ is a pointer to an array of @colorAttachmentCount@
+    -- 'AttachmentReference' structures defining the color attachments for this
+    -- subpass and their layouts.
     colorAttachments :: Vector AttachmentReference
-  , -- | @pResolveAttachments@ is an optional array of @colorAttachmentCount@
-    -- 'AttachmentReference' structures defining the resolve attachments for
-    -- this subpass and their layouts.
+  , -- | @pResolveAttachments@ is @NULL@ or a pointer to an array of
+    -- @colorAttachmentCount@ 'AttachmentReference' structures defining the
+    -- resolve attachments for this subpass and their layouts.
     resolveAttachments :: Vector AttachmentReference
-  , -- | @pDepthStencilAttachment@ is a pointer to a 'AttachmentReference'
-    -- structure specifying the depth\/stencil attachment for this subpass and
-    -- its layout.
+  , -- | @pDepthStencilAttachment@ is a pointer to an array of
+    -- 'AttachmentReference' structures specifying the depth\/stencil
+    -- attachment for this subpass and its layout.
     depthStencilAttachment :: Maybe AttachmentReference
   , -- | @pPreserveAttachments@ is a pointer to an array of
     -- @preserveAttachmentCount@ render pass attachment indices identifying
@@ -1453,7 +1446,7 @@
 --
 -- The first
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
--- is limited to access in the pipeline stages determined by the
+-- is limited to accesses in the pipeline stages determined by the
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>
 -- specified by @srcStageMask@. It is also limited to access types in the
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks source access mask>
@@ -1461,7 +1454,7 @@
 --
 -- The second
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
--- is limited to access in the pipeline stages determined by the
+-- is limited to accesses in the pipeline stages determined by the
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>
 -- specified by @dstStageMask@. It is also limited to access types in the
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks destination access mask>
@@ -1767,7 +1760,7 @@
 --     'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.RenderPassInputAttachmentAspectCreateInfo'
 --     structure, the @inputAttachmentIndex@ member of each element of its
 --     @pAspectReferences@ member /must/ be less than the value of
---     @inputAttachmentCount@ in the member of @pSubpasses@ identified by
+--     @inputAttachmentCount@ in the element of @pSubpasses@ identified by
 --     its @subpass@ member
 --
 -- -   #VUID-VkRenderPassCreateInfo-pNext-01963# If the @pNext@ chain
@@ -2007,7 +2000,7 @@
 --     as attachment and non-attachment if both accesses are read-only.
 --
 -- -   For depth\/stencil attachments, each aspect /can/ be used separately
---     as attachments and non-attachments as long as the non-attachment
+--     as attachment and non-attachment as long as the non-attachment
 --     accesses are also via an image subresource in either the
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL'
 --     layout or the
@@ -2122,16 +2115,16 @@
 --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
 --     each element of @pAttachments@ that is used as an input, color,
 --     resolve, or depth\/stencil attachment by @renderPass@ /must/ have
---     been created with a VkImageCreateInfo::@width@ greater than or equal
---     to @width@
+--     been created with a 'Vulkan.Core10.Image.ImageCreateInfo'::@width@
+--     greater than or equal to @width@
 --
 -- -   #VUID-VkFramebufferCreateInfo-flags-04534# If @flags@ does not
 --     include
 --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
 --     each element of @pAttachments@ that is used as an input, color,
 --     resolve, or depth\/stencil attachment by @renderPass@ /must/ have
---     been created with a VkImageCreateInfo::@height@ greater than or
---     equal to @height@
+--     been created with a 'Vulkan.Core10.Image.ImageCreateInfo'::@height@
+--     greater than or equal to @height@
 --
 -- -   #VUID-VkFramebufferCreateInfo-flags-04535# If @flags@ does not
 --     include
@@ -2139,8 +2132,8 @@
 --     each element of @pAttachments@ that is used as an input, color,
 --     resolve, or depth\/stencil attachment by @renderPass@ /must/ have
 --     been created with a
---     VkImageViewCreateInfo::@subresourceRange.layerCount@ greater than or
---     equal to @layers@
+--     'Vulkan.Core10.ImageView.ImageViewCreateInfo'::@subresourceRange.layerCount@
+--     greater than or equal to @layers@
 --
 -- -   #VUID-VkFramebufferCreateInfo-renderPass-04536# If @renderPass@ was
 --     specified with non-zero view masks, each element of @pAttachments@
@@ -2199,7 +2192,7 @@
 --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
 --     an element of @pAttachments@ that is used as a
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
---     /must/ have a width at least as large as ⌈@width@ \\ @texelWidth@⌉,
+--     /must/ have a width at least as large as ⌈@width@ \/ @texelWidth@⌉,
 --     where @texelWidth@ is the largest value of
 --     @shadingRateAttachmentTexelSize.width@ in a
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateAttachmentInfoKHR'
@@ -2210,7 +2203,7 @@
 --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
 --     an element of @pAttachments@ that is used as a
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
---     /must/ have a height at least as large as ⌈@height@ \\
+--     /must/ have a height at least as large as ⌈@height@ \/
 --     @texelHeight@⌉, where @texelHeight@ is the largest value of
 --     @shadingRateAttachmentTexelSize.height@ in a
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateAttachmentInfoKHR'
@@ -2281,7 +2274,7 @@
 --     member of an instance of
 --     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'
 --     in the @pNext@ chain that is used as an input, color, resolve or
---     depth\/stencil attachment in @pRenderPass@ /must/ be greater than or
+--     depth\/stencil attachment in @renderPass@ /must/ be greater than or
 --     equal to @width@
 --
 -- -   #VUID-VkFramebufferCreateInfo-flags-04542# If @flags@ includes
@@ -2290,7 +2283,7 @@
 --     member of an instance of
 --     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'
 --     in the @pNext@ chain that is used as an input, color, resolve or
---     depth\/stencil attachment in @pRenderPass@ /must/ be greater than or
+--     depth\/stencil attachment in @renderPass@ /must/ be greater than or
 --     equal to @height@
 --
 -- -   #VUID-VkFramebufferCreateInfo-flags-03196# If @flags@ includes
@@ -2320,7 +2313,7 @@
 --     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'
 --     in the @pNext@ chain that is used as a
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
---     /must/ be greater than or equal to ⌈@width@ \\ @texelWidth@⌉, where
+--     /must/ be greater than or equal to ⌈@width@ \/ @texelWidth@⌉, where
 --     @texelWidth@ is the largest value of
 --     @shadingRateAttachmentTexelSize.width@ in a
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateAttachmentInfoKHR'
@@ -2333,7 +2326,7 @@
 --     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'
 --     in the @pNext@ chain that is used as a
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
---     /must/ be greater than or equal to ⌈@height@ \\ @texelHeight@⌉,
+--     /must/ be greater than or equal to ⌈@height@ \/ @texelHeight@⌉,
 --     where @texelHeight@ is the largest value of
 --     @shadingRateAttachmentTexelSize.height@ in a
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateAttachmentInfoKHR'
@@ -2364,7 +2357,7 @@
 --     @pAttachmentImageInfos@ member of a
 --     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'
 --     structure included in the @pNext@ chain used as an input, color,
---     resolve, or depth\/stencil attachment in @pRenderPass@ /must/ be
+--     resolve, or depth\/stencil attachment in @renderPass@ /must/ be
 --     greater than the maximum bit index set in the view mask in the
 --     subpasses in which it is used in @renderPass@
 --
@@ -2375,7 +2368,7 @@
 --     @pAttachmentImageInfos@ member of a
 --     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'
 --     structure included in the @pNext@ chain used as an input, color,
---     resolve, or depth\/stencil attachment in @pRenderPass@ /must/ be
+--     resolve, or depth\/stencil attachment in @renderPass@ /must/ be
 --     greater than or equal to @layers@
 --
 -- -   #VUID-VkFramebufferCreateInfo-flags-03201# If @flags@ includes
@@ -2438,7 +2431,7 @@
 --     each element of @pAttachments@ that is used as a fragment shading
 --     rate attachment by @renderPass@ /must/ have been created with a
 --     @usage@ value including
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
 --
 -- -   #VUID-VkFramebufferCreateInfo-flags-04549# If @flags@ includes
 --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
@@ -2448,7 +2441,7 @@
 --     structure included in the @pNext@ chain that refers to an attachment
 --     used as a fragment shading rate attachment by @renderPass@ /must/
 --     include
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Core10/Pipeline.hs b/src/Vulkan/Core10/Pipeline.hs
--- a/src/Vulkan/Core10/Pipeline.hs
+++ b/src/Vulkan/Core10/Pipeline.hs
@@ -155,6 +155,7 @@
 import Vulkan.Core10.Handles (PipelineCache(..))
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_blend_operation_advanced (PipelineColorBlendAdvancedStateCreateInfoEXT)
 import Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlags (PipelineColorBlendStateCreateFlags)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_color_write_enable (PipelineColorWriteCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_pipeline_compiler_control (PipelineCompilerControlCreateInfoAMD)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_framebuffer_mixed_samples (PipelineCoverageModulationStateCreateInfoNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_coverage_reduction_mode (PipelineCoverageReductionStateCreateInfoNV)
@@ -172,6 +173,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conservative_rasterization (PipelineRasterizationConservativeStateCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clip_enable (PipelineRasterizationDepthClipStateCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_line_rasterization (PipelineRasterizationLineStateCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_provoking_vertex (PipelineRasterizationProvokingVertexStateCreateInfoEXT)
 import Vulkan.Core10.Enums.PipelineRasterizationStateCreateFlags (PipelineRasterizationStateCreateFlags)
 import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_rasterization_order (PipelineRasterizationStateRasterizationOrderAMD)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_transform_feedback (PipelineRasterizationStateStreamCreateInfoEXT)
@@ -264,10 +266,10 @@
 --
 -- = Description
 --
--- The 'GraphicsPipelineCreateInfo' structure includes an array of shader
--- create info structures containing all the desired active shader stages,
--- as well as creation info to define all relevant fixed-function stages,
--- and a pipeline layout.
+-- The 'GraphicsPipelineCreateInfo' structure includes an array of
+-- 'PipelineShaderStageCreateInfo' structures for each of the desired
+-- active shader stages, as well as creation information for all relevant
+-- fixed-function stages, and a pipeline layout.
 --
 -- == Valid Usage
 --
@@ -692,6 +694,7 @@
 --
 -- = See Also
 --
+-- 'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
 -- 'PipelineViewportStateCreateInfo',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
@@ -834,11 +837,7 @@
            zero
 
 
--- | VkSpecializationInfo - Structure specifying specialization info
---
--- = Description
---
--- @pMapEntries@ is a pointer to a 'SpecializationMapEntry' structure.
+-- | VkSpecializationInfo - Structure specifying specialization information
 --
 -- == Valid Usage
 --
@@ -1589,7 +1588,7 @@
 -- 'Vulkan.Core10.Enums.Format.Format',
 -- 'PipelineVertexInputStateCreateInfo'
 data VertexInputAttributeDescription = VertexInputAttributeDescription
-  { -- | @location@ is the shader binding location number for this attribute.
+  { -- | @location@ is the shader input location number for this attribute.
     location :: Word32
   , -- | @binding@ is the binding number which this attribute takes its data
     -- from.
@@ -1952,7 +1951,7 @@
     next :: Chain es
   , -- | @flags@ is reserved for future use.
     flags :: PipelineTessellationStateCreateFlags
-  , -- | @patchControlPoints@ number of control points per patch.
+  , -- | @patchControlPoints@ is the number of control points per patch.
     patchControlPoints :: Word32
   }
   deriving (Typeable)
@@ -2261,6 +2260,7 @@
 --     'Vulkan.Extensions.VK_EXT_conservative_rasterization.PipelineRasterizationConservativeStateCreateInfoEXT',
 --     'Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT',
 --     'Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT',
+--     'Vulkan.Extensions.VK_EXT_provoking_vertex.PipelineRasterizationProvokingVertexStateCreateInfoEXT',
 --     'Vulkan.Extensions.VK_AMD_rasterization_order.PipelineRasterizationStateRasterizationOrderAMD',
 --     or
 --     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'
@@ -2344,6 +2344,7 @@
   getNext PipelineRasterizationStateCreateInfo{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineRasterizationStateCreateInfo e => b) -> Maybe b
   extends _ f
+    | Just Refl <- eqT @e @PipelineRasterizationProvokingVertexStateCreateInfoEXT = Just f
     | Just Refl <- eqT @e @PipelineRasterizationLineStateCreateInfoEXT = Just f
     | Just Refl <- eqT @e @PipelineRasterizationDepthClipStateCreateInfoEXT = Just f
     | Just Refl <- eqT @e @PipelineRasterizationStateStreamCreateInfoEXT = Just f
@@ -2504,8 +2505,8 @@
   , -- | @flags@ is reserved for future use.
     flags :: PipelineMultisampleStateCreateFlags
   , -- | @rasterizationSamples@ is a
-    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' specifying
-    -- the number of samples used in rasterization.
+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
+    -- specifying the number of samples used in rasterization.
     rasterizationSamples :: SampleCountFlagBits
   , -- | @sampleShadingEnable@ /can/ be used to enable
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading Sample Shading>.
@@ -2513,8 +2514,8 @@
   , -- | @minSampleShading@ specifies a minimum fraction of sample shading if
     -- @sampleShadingEnable@ is set to 'Vulkan.Core10.FundamentalTypes.TRUE'.
     minSampleShading :: Float
-  , -- | @pSampleMask@ is an array of 'Vulkan.Core10.FundamentalTypes.SampleMask'
-    -- values used in the
+  , -- | @pSampleMask@ is a pointer to an array of
+    -- 'Vulkan.Core10.FundamentalTypes.SampleMask' values used in the
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-samplemask sample mask test>.
     sampleMask :: Vector SampleMask
   , -- | @alphaToCoverageEnable@ controls whether a temporary coverage value is
@@ -2715,7 +2716,7 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>,
 --     then @colorAttachmentCount@ of the subpass this pipeline is compiled
 --     against /must/ be less than or equal to
---     'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT'::advancedBlendMaxColorAttachments
+--     'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendMaxColorAttachments@
 --
 -- -   #VUID-VkPipelineColorBlendAttachmentState-constantAlphaColorBlendFactors-04454#
 --     If the @VK_KHR_portability_subset@ extension is enabled, and
@@ -2905,9 +2906,12 @@
 --     /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO'
 --
--- -   #VUID-VkPipelineColorBlendStateCreateInfo-pNext-pNext# @pNext@
---     /must/ be @NULL@ or a pointer to a valid instance of
+-- -   #VUID-VkPipelineColorBlendStateCreateInfo-pNext-pNext# Each @pNext@
+--     member of any structure (including this one) in the @pNext@ chain
+--     /must/ be either @NULL@ or a pointer to a valid instance of
 --     'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PipelineColorBlendAdvancedStateCreateInfoEXT'
+--     or
+--     'Vulkan.Extensions.VK_EXT_color_write_enable.PipelineColorWriteCreateInfoEXT'
 --
 -- -   #VUID-VkPipelineColorBlendStateCreateInfo-sType-unique# The @sType@
 --     value of each struct in the @pNext@ chain /must/ be unique
@@ -2937,8 +2941,7 @@
     logicOpEnable :: Bool
   , -- | @logicOp@ selects which logical operation to apply.
     logicOp :: LogicOp
-  , -- | @pAttachments@: is a pointer to an array of per target attachment
-    -- states.
+  , -- | @pAttachments@ is a pointer to an array of per target attachment states.
     attachments :: Vector PipelineColorBlendAttachmentState
   , -- | @blendConstants@ is a pointer to an array of four values used as the R,
     -- G, B, and A components of the blend constant that are used in blending,
@@ -2958,6 +2961,7 @@
   getNext PipelineColorBlendStateCreateInfo{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineColorBlendStateCreateInfo e => b) -> Maybe b
   extends _ f
+    | Just Refl <- eqT @e @PipelineColorWriteCreateInfoEXT = Just f
     | Just Refl <- eqT @e @PipelineColorBlendAdvancedStateCreateInfoEXT = Just f
     | otherwise = Nothing
 
@@ -3065,7 +3069,7 @@
   , -- | @pDynamicStates@ is a pointer to an array of
     -- 'Vulkan.Core10.Enums.DynamicState.DynamicState' values specifying which
     -- pieces of pipeline state will use the values from dynamic state commands
-    -- rather than from pipeline state creation info.
+    -- rather than from pipeline state creation information.
     dynamicStates :: Vector DynamicState
   }
   deriving (Typeable)
@@ -3383,6 +3387,87 @@
 -- back to the application, and
 -- 'Vulkan.Core10.Enums.Result.ERROR_INVALID_SHADER_NV' will be generated.
 --
+-- The state required for a graphics pipeline is divided into
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-vertex-input vertex input state>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+-- and
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output state>.
+--
+-- Vertex input state is defined by:
+--
+-- -   'PipelineVertexInputStateCreateInfo'
+--
+-- -   'PipelineInputAssemblyStateCreateInfo'
+--
+-- Pre-rasterization shader state is defined by:
+--
+-- -   'PipelineShaderStageCreateInfo' entries for each vertex processing
+--     shader stage used
+--
+-- -   Within the 'Vulkan.Core10.Handles.PipelineLayout', all bindings that
+--     affect the specified shader stages
+--
+-- -   'PipelineViewportStateCreateInfo'
+--
+-- -   'PipelineRasterizationStateCreateInfo'
+--
+-- -   'PipelineTessellationStateCreateInfo' if tessellation stages are
+--     included.
+--
+-- -   'Vulkan.Core10.Handles.RenderPass' and @subpass@ parameter
+--
+-- -   'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--
+-- -   'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'
+--
+-- -   'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'
+--
+-- Fragment shader state is defined by:
+--
+-- -   A 'PipelineShaderStageCreateInfo' entry for the fragment shader
+--
+-- -   Within the 'Vulkan.Core10.Handles.PipelineLayout', all bindings that
+--     affect the fragment shader
+--
+-- -   'PipelineMultisampleStateCreateInfo'
+--
+-- -   'PipelineDepthStencilStateCreateInfo'
+--
+-- -   'Vulkan.Core10.Handles.RenderPass' and @subpass@ parameter
+--
+-- -   'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'
+--
+-- -   'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'
+--
+-- Fragment output state is defined by:
+--
+-- -   'PipelineColorBlendStateCreateInfo'
+--
+-- -   The @alphaToCoverageEnable@ and @alphaToOneEnable@ members of
+--     'PipelineMultisampleStateCreateInfo'.
+--
+-- -   'Vulkan.Core10.Handles.RenderPass' and @subpass@ parameter
+--
+-- A complete graphics pipeline always includes
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+-- with other subsets included depending on that state. If the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+-- includes a vertex shader, then
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-vertex-input vertex input state>
+-- is included in a complete graphics pipeline. If the value of
+-- 'PipelineRasterizationStateCreateInfo'::@rasterizerDiscardEnable@ in the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+-- is 'Vulkan.Core10.FundamentalTypes.FALSE' or the
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+-- dynamic state is enabled
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
+-- and
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>
+-- is included in a complete graphics pipeline.
+--
+-- Pipelines /must/ be created with a complete set of pipeline state.
+--
 -- == Valid Usage
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-flags-00722# If @flags@ contains
@@ -3414,9 +3499,11 @@
 -- -   #VUID-VkGraphicsPipelineCreateInfo-stage-00726# The @stage@ member
 --     of each element of @pStages@ /must/ be unique
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-02095# The geometric
---     shader stages provided in @pStages@ /must/ be either from the mesh
---     shading pipeline (@stage@ is
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-02095# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     the geometric shader stages provided in @pStages@ /must/ be either
+--     from the mesh shading pipeline (@stage@ is
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_NV'
 --     or
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV')
@@ -3427,8 +3514,10 @@
 --     or
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT')
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-stage-02096# The @stage@ member
---     of one element of @pStages@ /must/ be either
+-- -   #VUID-VkGraphicsPipelineCreateInfo-stage-02096# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     the @stage@ member of one element of @pStages@ /must/ be either
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV'
 --
@@ -3436,110 +3525,153 @@
 --     of each element of @pStages@ /must/ not be
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00729# If @pStages@
---     includes a tessellation control shader stage, it /must/ include a
---     tessellation evaluation shader stage
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00729# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and @pStages@ includes a tessellation control shader stage, it
+--     /must/ include a tessellation evaluation shader stage
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00730# If @pStages@
---     includes a tessellation evaluation shader stage, it /must/ include a
---     tessellation control shader stage
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00730# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and @pStages@ includes a tessellation evaluation shader stage, it
+--     /must/ include a tessellation control shader stage
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00731# If @pStages@
---     includes a tessellation control shader stage and a tessellation
---     evaluation shader stage, @pTessellationState@ /must/ be a valid
---     pointer to a valid 'PipelineTessellationStateCreateInfo' structure
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00731# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and @pStages@ includes a tessellation control shader stage and a
+--     tessellation evaluation shader stage, @pTessellationState@ /must/ be
+--     a valid pointer to a valid 'PipelineTessellationStateCreateInfo'
+--     structure
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00732# If @pStages@
---     includes tessellation shader stages, the shader code of at least one
---     stage /must/ contain an @OpExecutionMode@ instruction that specifies
---     the type of subdivision in the pipeline
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00732# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and @pStages@ includes tessellation shader stages, the shader code
+--     of at least one stage /must/ contain an @OpExecutionMode@
+--     instruction that specifies the type of subdivision in the pipeline
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00733# If @pStages@
---     includes tessellation shader stages, and the shader code of both
---     stages contain an @OpExecutionMode@ instruction that specifies the
---     type of subdivision in the pipeline, they /must/ both specify the
---     same subdivision mode
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00733# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and @pStages@ includes tessellation shader stages, and the shader
+--     code of both stages contain an @OpExecutionMode@ instruction that
+--     specifies the type of subdivision in the pipeline, they /must/ both
+--     specify the same subdivision mode
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00734# If @pStages@
---     includes tessellation shader stages, the shader code of at least one
---     stage /must/ contain an @OpExecutionMode@ instruction that specifies
---     the output patch size in the pipeline
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00734# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and @pStages@ includes tessellation shader stages, the shader code
+--     of at least one stage /must/ contain an @OpExecutionMode@
+--     instruction that specifies the output patch size in the pipeline
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00735# If @pStages@
---     includes tessellation shader stages, and the shader code of both
---     contain an @OpExecutionMode@ instruction that specifies the out
---     patch size in the pipeline, they /must/ both specify the same patch
---     size
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00735# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and @pStages@ includes tessellation shader stages, and the shader
+--     code of both contain an @OpExecutionMode@ instruction that specifies
+--     the out patch size in the pipeline, they /must/ both specify the
+--     same patch size
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00736# If @pStages@
---     includes tessellation shader stages, the @topology@ member of
---     @pInputAssembly@ /must/ be
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00736# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and @pStages@ includes tessellation shader stages, the @topology@
+--     member of @pInputAssembly@ /must/ be
 --     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-topology-00737# If the @topology@
---     member of @pInputAssembly@ is
+-- -   #VUID-VkGraphicsPipelineCreateInfo-topology-00737# If the pipeline
+--     is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and the @topology@ member of @pInputAssembly@ is
 --     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',
 --     @pStages@ /must/ include tessellation shader stages
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00738# If @pStages@
---     includes a geometry shader stage, and does not include any
---     tessellation shader stages, its shader code /must/ contain an
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00738# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and @pStages@ includes a geometry shader stage, and does not include
+--     any tessellation shader stages, its shader code /must/ contain an
 --     @OpExecutionMode@ instruction that specifies an input primitive type
 --     that is
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-geometry-execution compatible>
 --     with the primitive topology specified in @pInputAssembly@
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00739# If @pStages@
---     includes a geometry shader stage, and also includes tessellation
---     shader stages, its shader code /must/ contain an @OpExecutionMode@
---     instruction that specifies an input primitive type that is
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00739# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and @pStages@ includes a geometry shader stage, and also includes
+--     tessellation shader stages, its shader code /must/ contain an
+--     @OpExecutionMode@ instruction that specifies an input primitive type
+--     that is
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-geometry-execution compatible>
 --     with the primitive topology that is output by the tessellation
 --     stages
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00740# If @pStages@
---     includes a fragment shader stage and a geometry shader stage, and
---     the fragment shader code reads from an input variable that is
---     decorated with @PrimitiveID@, then the geometry shader code /must/
---     write to a matching output variable, decorated with @PrimitiveID@,
---     in all execution paths
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00740# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     it includes both a fragment shader and a geometry shader, and the
+--     fragment shader code reads from an input variable that is decorated
+--     with @PrimitiveID@, then the geometry shader code /must/ write to a
+--     matching output variable, decorated with @PrimitiveID@, in all
+--     execution paths
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00741# If @pStages@
---     includes a fragment shader stage, its shader code /must/ not read
---     from any input attachment that is defined as
---     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' in @subpass@
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00741# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
+--     the fragment shader /must/ not read from any input attachment that
+--     is defined as 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' in
+--     @subpass@
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00742# The shader code
---     for the entry points identified by @pStages@, and the rest of the
---     state identified by this structure /must/ adhere to the pipeline
---     linking rules described in the
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00742# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and multiple pre-rasterization shader stages are included in
+--     @pStages@, the shader code for the entry points identified by those
+--     @pStages@ and the rest of the state identified by this structure
+--     /must/ adhere to the pipeline linking rules described in the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces Shader Interfaces>
 --     chapter
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-01756# If rasterization
---     is not disabled and @subpass@ uses a depth\/stencil attachment in
---     @renderPass@ that has a layout of
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL'
---     or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL'
---     in the 'Vulkan.Core10.Pass.AttachmentReference' defined by
---     @subpass@, the @depthWriteEnable@ member of @pDepthStencilState@
---     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+-- -   #VUID-VkGraphicsPipelineCreateInfo-None-04889# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     the fragment shader and last vertex processing shader stage and any
+--     relevant state /must/ adhere to the pipeline linking rules described
+--     in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces Shader Interfaces>
+--     chapter
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-01757# If rasterization
---     is not disabled and @subpass@ uses a depth\/stencil attachment in
---     @renderPass@ that has a layout of
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL'
---     or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL'
---     in the 'Vulkan.Core10.Pass.AttachmentReference' defined by
---     @subpass@, the @failOp@, @passOp@ and @depthFailOp@ members of each
---     of the @front@ and @back@ members of @pDepthStencilState@ /must/ be
+-- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-04890# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     and @subpass@ uses a depth\/stencil attachment in @renderPass@ with
+--     a read-only layout for the depth aspect in the
+--     'Vulkan.Core10.Pass.AttachmentReference' defined by @subpass@, the
+--     @depthWriteEnable@ member of @pDepthStencilState@ /must/ be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-04891# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     and @subpass@ uses a depth\/stencil attachment in @renderPass@ with
+--     a read-only layout for the stencil aspect in the
+--     'Vulkan.Core10.Pass.AttachmentReference' defined by @subpass@, the
+--     @failOp@, @passOp@ and @depthFailOp@ members of each of the @front@
+--     and @back@ members of @pDepthStencilState@ /must/ be
 --     'Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-blendEnable-04717# If
---     rasterization is not disabled, then for each color attachment in the
---     subpass, if the
+-- -   #VUID-VkGraphicsPipelineCreateInfo-blendEnable-04717# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,
+--     then for each color attachment in the subpass, if the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
 --     of the format of the corresponding attachment description do not
 --     contain
@@ -3548,67 +3680,88 @@
 --     @pAttachments@ member of @pColorBlendState@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-attachmentCount-00746# If
---     rasterization is not disabled and the subpass uses color
---     attachments, the @attachmentCount@ member of @pColorBlendState@
---     /must/ be equal to the @colorAttachmentCount@ used to create
---     @subpass@
+-- -   #VUID-VkGraphicsPipelineCreateInfo-attachmentCount-00746# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,
+--     and the subpass uses color attachments, the @attachmentCount@ member
+--     of @pColorBlendState@ /must/ be equal to the @colorAttachmentCount@
+--     used to create @subpass@
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04130# If no
---     element of the @pDynamicStates@ member of @pDynamicState@ is
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04130# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and no element of the @pDynamicStates@ member of @pDynamicState@ is
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' or
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT',
 --     the @pViewports@ member of @pViewportState@ /must/ be a valid
 --     pointer to an array of @pViewportState->viewportCount@ valid
 --     'Viewport' structures
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04131# If no
---     element of the @pDynamicStates@ member of @pDynamicState@ is
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04131# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and no element of the @pDynamicStates@ member of @pDynamicState@ is
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' or
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT',
 --     the @pScissors@ member of @pViewportState@ /must/ be a valid pointer
 --     to an array of @pViewportState->scissorCount@
 --     'Vulkan.Core10.FundamentalTypes.Rect2D' structures
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00749# If the wide
---     lines feature is not enabled, and no element of the @pDynamicStates@
---     member of @pDynamicState@ is
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00749# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and the wide lines feature is not enabled, and no element of the
+--     @pDynamicStates@ member of @pDynamicState@ is
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH', the
 --     @lineWidth@ member of @pRasterizationState@ /must/ be @1.0@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00750# If
---     the @rasterizerDiscardEnable@ member of @pRasterizationState@ is
+--     the pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and the @rasterizerDiscardEnable@ member of @pRasterizationState@ is
 --     'Vulkan.Core10.FundamentalTypes.FALSE', @pViewportState@ /must/ be a
 --     valid pointer to a valid 'PipelineViewportStateCreateInfo' structure
 --
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pViewportState-04892# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and the graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+--     dynamic state enabled, @pViewportState@ /must/ be a valid pointer to
+--     a valid 'PipelineViewportStateCreateInfo' structure
+--
 -- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00751# If
---     the @rasterizerDiscardEnable@ member of @pRasterizationState@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', @pMultisampleState@ /must/
---     be a valid pointer to a valid 'PipelineMultisampleStateCreateInfo'
---     structure
+--     the pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     @pMultisampleState@ /must/ be a valid pointer to a valid
+--     'PipelineMultisampleStateCreateInfo' structure
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00752# If
---     the @rasterizerDiscardEnable@ member of @pRasterizationState@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and @subpass@ uses a
---     depth\/stencil attachment, @pDepthStencilState@ /must/ be a valid
---     pointer to a valid 'PipelineDepthStencilStateCreateInfo' structure
+--     the pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     and @subpass@ uses a depth\/stencil attachment, @pDepthStencilState@
+--     /must/ be a valid pointer to a valid
+--     'PipelineDepthStencilStateCreateInfo' structure
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00753# If
---     the @rasterizerDiscardEnable@ member of @pRasterizationState@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE', and @subpass@ uses color
---     attachments, @pColorBlendState@ /must/ be a valid pointer to a valid
---     'PipelineColorBlendStateCreateInfo' structure
+--     the pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,
+--     and @subpass@ uses color attachments, @pColorBlendState@ /must/ be a
+--     valid pointer to a valid 'PipelineColorBlendStateCreateInfo'
+--     structure
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-04493# If
---     the @rasterizerDiscardEnable@ member of @pRasterizationState@ is
---     'Vulkan.Core10.FundamentalTypes.FALSE',
+--     the pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,
 --     @pColorBlendState->attachmentCount@ /must/ be greater than the index
 --     of all color attachments that are not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' for the @subpass@
 --     index in @renderPass@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00754# If the
---     depth bias clamping feature is not enabled, no element of the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     the depth bias clamping feature is not enabled, no element of the
 --     @pDynamicStates@ member of @pDynamicState@ is
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS', and the
 --     @depthBiasEnable@ member of @pRasterizationState@ is
@@ -3616,16 +3769,20 @@
 --     of @pRasterizationState@ /must/ be @0.0@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-02510# If the
---     @VK_EXT_depth_range_unrestricted@ extension is not enabled and no
---     element of the @pDynamicStates@ member of @pDynamicState@ is
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     and the @VK_EXT_depth_range_unrestricted@ extension is not enabled
+--     and no element of the @pDynamicStates@ member of @pDynamicState@ is
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS', and
 --     the @depthBoundsTestEnable@ member of @pDepthStencilState@ is
 --     'Vulkan.Core10.FundamentalTypes.TRUE', the @minDepthBounds@ and
 --     @maxDepthBounds@ members of @pDepthStencilState@ /must/ be between
 --     @0.0@ and @1.0@, inclusive
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01521# If no
---     element of the @pDynamicStates@ member of @pDynamicState@ is
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01521# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     and no element of the @pDynamicStates@ member of @pDynamicState@ is
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT',
 --     and the @sampleLocationsEnable@ member of a
 --     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'
@@ -3638,8 +3795,10 @@
 --     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
 --     with a @samples@ parameter equaling @rasterizationSamples@
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01522# If no
---     element of the @pDynamicStates@ member of @pDynamicState@ is
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01522# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     and no element of the @pDynamicStates@ member of @pDynamicState@ is
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT',
 --     and the @sampleLocationsEnable@ member of a
 --     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'
@@ -3652,8 +3811,10 @@
 --     'Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'
 --     with a @samples@ parameter equaling @rasterizationSamples@
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01523# If no
---     element of the @pDynamicStates@ member of @pDynamicState@ is
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01523# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     and no element of the @pDynamicStates@ member of @pDynamicState@ is
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT',
 --     and the @sampleLocationsEnable@ member of a
 --     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'
@@ -3663,7 +3824,9 @@
 --     @rasterizationSamples@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-sampleLocationsEnable-01524# If
---     the @sampleLocationsEnable@ member of a
+--     the pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     and the @sampleLocationsEnable@ member of a
 --     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'
 --     structure included in the @pNext@ chain of @pMultisampleState@ is
 --     'Vulkan.Core10.FundamentalTypes.TRUE', the fragment shader code
@@ -3674,34 +3837,45 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent>
 --     with all shaders specified in @pStages@
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-00757# If neither the
---     @VK_AMD_mixed_attachment_samples@ nor the
+-- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-00757# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     and neither the @VK_AMD_mixed_attachment_samples@ nor the
 --     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, and if
 --     @subpass@ uses color and\/or depth\/stencil attachments, then the
 --     @rasterizationSamples@ member of @pMultisampleState@ /must/ be the
 --     same as the sample count for those subpass attachments
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-01505# If the
---     @VK_AMD_mixed_attachment_samples@ extension is enabled, and if
---     @subpass@ uses color and\/or depth\/stencil attachments, then the
+-- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-01505# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     and the @VK_AMD_mixed_attachment_samples@ extension is enabled, and
+--     if @subpass@ uses color and\/or depth\/stencil attachments, then the
 --     @rasterizationSamples@ member of @pMultisampleState@ /must/ equal
 --     the maximum of the sample counts of those subpass attachments
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-01411# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
---     @subpass@ has a depth\/stencil attachment and depth test, stencil
+-- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-01411# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     and the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and
+--     if @subpass@ has a depth\/stencil attachment and depth test, stencil
 --     test, or depth bounds test are enabled, then the
 --     @rasterizationSamples@ member of @pMultisampleState@ /must/ be the
 --     same as the sample count of the depth\/stencil attachment
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-01412# If the
---     @VK_NV_framebuffer_mixed_samples@ extension is enabled, and if
---     @subpass@ has any color attachments, then the @rasterizationSamples@
---     member of @pMultisampleState@ /must/ be greater than or equal to the
---     sample count for those subpass attachments
+-- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-01412# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     and the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and
+--     if @subpass@ has any color attachments, then the
+--     @rasterizationSamples@ member of @pMultisampleState@ /must/ be
+--     greater than or equal to the sample count for those subpass
+--     attachments
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-coverageReductionMode-02722# If
---     the @VK_NV_coverage_reduction_mode@ extension is enabled, the
+--     the pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     and the @VK_NV_coverage_reduction_mode@ extension is enabled, the
 --     coverage reduction mode specified by
 --     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PipelineCoverageReductionStateCreateInfoNV'::@coverageReductionMode@,
 --     the @rasterizationSamples@ member of @pMultisampleState@ and the
@@ -3709,53 +3883,67 @@
 --     subpass has them) /must/ be a valid combination returned by
 --     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-00758# If @subpass@ does
---     not use any color and\/or depth\/stencil attachments, then the
---     @rasterizationSamples@ member of @pMultisampleState@ /must/ follow
---     the rules for a
+-- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-00758# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
+--     and @subpass@ does not use any color and\/or depth\/stencil
+--     attachments, then the @rasterizationSamples@ member of
+--     @pMultisampleState@ /must/ follow the rules for a
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-00759# @subpass@ /must/
 --     be a valid subpass within @renderPass@
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-00760# If the
---     @renderPass@ has multiview enabled and @subpass@ has more than one
---     bit set in the view mask and @multiviewTessellationShader@ is not
---     enabled, then @pStages@ /must/ not include tessellation shaders
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-00760# If the pipeline
+--     is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and the @renderPass@ has multiview enabled and @subpass@ has more
+--     than one bit set in the view mask and @multiviewTessellationShader@
+--     is not enabled, then @pStages@ /must/ not include tessellation
+--     shaders
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-00761# If the
---     @renderPass@ has multiview enabled and @subpass@ has more than one
---     bit set in the view mask and @multiviewGeometryShader@ is not
---     enabled, then @pStages@ /must/ not include a geometry shader
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-00761# If the pipeline
+--     is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and the @renderPass@ has multiview enabled and @subpass@ has more
+--     than one bit set in the view mask and @multiviewGeometryShader@ is
+--     not enabled, then @pStages@ /must/ not include a geometry shader
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-00762# If the
---     @renderPass@ has multiview enabled and @subpass@ has more than one
---     bit set in the view mask, shaders in the pipeline /must/ not write
---     to the @Layer@ built-in output
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-00762# If the pipeline
+--     is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and the @renderPass@ has multiview enabled and @subpass@ has more
+--     than one bit set in the view mask, shaders in the pipeline /must/
+--     not write to the @Layer@ built-in output
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-00763# If the
---     @renderPass@ has multiview enabled, then all shaders /must/ not
---     include variables decorated with the @Layer@ built-in decoration in
---     their interfaces
+-- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-00763# If the pipeline
+--     is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and the @renderPass@ has multiview enabled, then all shaders /must/
+--     not include variables decorated with the @Layer@ built-in decoration
+--     in their interfaces
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-flags-00764# @flags@ /must/ not
 --     contain the
 --     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.PIPELINE_CREATE_DISPATCH_BASE'
 --     flag
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-01565# If @pStages@
---     includes a fragment shader stage and an input attachment was
---     referenced by an @aspectMask@ at @renderPass@ creation time, its
---     shader code /must/ only read from the aspects that were specified
---     for that input attachment
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-01565# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
+--     and an input attachment was referenced by an @aspectMask@ at
+--     @renderPass@ creation time, the fragment shader /must/ only read
+--     from the aspects that were specified for that input attachment
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-layout-01688# The number of
 --     resources in @layout@ accessible to each shader stage that is used
 --     by the pipeline /must/ be less than or equal to
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageResources@
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01715# If no
---     element of the @pDynamicStates@ member of @pDynamicState@ is
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01715# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and no element of the @pDynamicStates@ member of @pDynamicState@ is
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV',
 --     and the @viewportWScalingEnable@ member of a
 --     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'
@@ -3769,8 +3957,10 @@
 --     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.ViewportWScalingNV'
 --     structures
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04056# If no
---     element of the @pDynamicStates@ member of @pDynamicState@ is
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04056# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and no element of the @pDynamicStates@ member of @pDynamicState@ is
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV',
 --     and if @pViewportState->pNext@ chain includes a
 --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'
@@ -3779,8 +3969,10 @@
 --     array of @exclusiveScissorCount@
 --     'Vulkan.Core10.FundamentalTypes.Rect2D' structures
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04057# If no
---     element of the @pDynamicStates@ member of @pDynamicState@ is
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04057# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and no element of the @pDynamicStates@ member of @pDynamicState@ is
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV',
 --     and if @pViewportState->pNext@ chain includes a
 --     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'
@@ -3789,8 +3981,10 @@
 --     'Vulkan.Extensions.VK_NV_shading_rate_image.ShadingRatePaletteNV'
 --     structures
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04058# If no
---     element of the @pDynamicStates@ member of @pDynamicState@ is
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04058# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and no element of the @pDynamicStates@ member of @pDynamicState@ is
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT',
 --     and if @pNext@ chain includes a
 --     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
@@ -3799,25 +3993,34 @@
 --     array of @discardRectangleCount@
 --     'Vulkan.Core10.FundamentalTypes.Rect2D' structures
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-02097# If @pStages@
---     includes a vertex shader stage, @pVertexInputState@ /must/ be a
---     valid pointer to a valid 'PipelineVertexInputStateCreateInfo'
---     structure
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-02097# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-vertex-input vertex input state>,
+--     @pVertexInputState@ /must/ be a valid pointer to a valid
+--     'PipelineVertexInputStateCreateInfo' structure
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-02098# If @pStages@
---     includes a vertex shader stage, @pInputAssemblyState@ /must/ be a
---     valid pointer to a valid 'PipelineInputAssemblyStateCreateInfo'
---     structure
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-02098# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-vertex-input vertex input state>,
+--     @pInputAssemblyState@ /must/ be a valid pointer to a valid
+--     'PipelineInputAssemblyStateCreateInfo' structure
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-02317# The @Xfb@
---     execution mode /can/ be specified by only one shader stage in
---     @pStages@
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-02317# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     the @Xfb@ execution mode /can/ be specified by no more than one
+--     shader stage in @pStages@
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-02318# If any shader
---     stage in @pStages@ specifies @Xfb@ execution mode it /must/ be the
---     last vertex processing stage
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-02318# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and any shader stage in @pStages@ specifies @Xfb@ execution mode it
+--     /must/ be the last vertex processing stage
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02319# If a
+-- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02319# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and a
 --     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
 --     value other than zero is specified, all variables in the output
 --     interface of the entry point being compiled decorated with
@@ -3825,7 +4028,10 @@
 --     decorated with identical @Stream@ values that match the
 --     @rasterizationStream@
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02320# If
+-- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02320# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and
 --     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
 --     is zero, or not specified, all variables in the output interface of
 --     the entry point being compiled decorated with @Position@,
@@ -3834,31 +4040,42 @@
 --     decoration
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-geometryStreams-02321# If the
---     last vertex processing stage is a geometry shader, and that geometry
---     shader uses the @GeometryStreams@ capability, then
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and the last vertex processing stage is a geometry shader, and that
+--     geometry shader uses the @GeometryStreams@ capability, then
 --     'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackFeaturesEXT'::@geometryStreams@
 --     feature /must/ be enabled
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-None-02322# If there are any mesh
---     shader stages in the pipeline there /must/ not be any shader stage
---     in the pipeline with a @Xfb@ execution mode
+-- -   #VUID-VkGraphicsPipelineCreateInfo-None-02322# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and there are any mesh shader stages in the pipeline there /must/
+--     not be any shader stage in the pipeline with a @Xfb@ execution mode
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-lineRasterizationMode-02766# If
+--     the pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and at least one of
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
 --     the @lineRasterizationMode@ member of a
 --     'Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT'
 --     structure included in the @pNext@ chain of @pRasterizationState@ is
 --     'Vulkan.Extensions.VK_EXT_line_rasterization.LINE_RASTERIZATION_MODE_BRESENHAM_EXT'
 --     or
---     'Vulkan.Extensions.VK_EXT_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT'
---     and if rasterization is enabled, then the @alphaToCoverageEnable@,
---     @alphaToOneEnable@, and @sampleShadingEnable@ members of
---     @pMultisampleState@ /must/ all be
+--     'Vulkan.Extensions.VK_EXT_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT',
+--     then the @alphaToCoverageEnable@, @alphaToOneEnable@, and
+--     @sampleShadingEnable@ members of @pMultisampleState@ /must/ all be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-stippledLineEnable-02767# If the
---     @stippledLineEnable@ member of
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     the @stippledLineEnable@ member of
 --     'Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT'
---     is 'Vulkan.Core10.FundamentalTypes.TRUE' and no element of the
+--     is 'Vulkan.Core10.FundamentalTypes.TRUE', and no element of the
 --     @pDynamicStates@ member of @pDynamicState@ is
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_EXT',
 --     then the @lineStippleFactor@ member of
@@ -3914,35 +4131,71 @@
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT',
 --     or 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP_EXT'
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03379# If
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03379# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
 --     is included in the @pDynamicStates@ array then @viewportCount@
 --     /must/ be zero
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03380# If
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03380# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
 --     is included in the @pDynamicStates@ array then @scissorCount@ /must/
 --     be zero
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04132# If
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04132# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
 --     is included in the @pDynamicStates@ array then
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' /must/ not
 --     be present
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04133# If
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04133# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
 --     is included in the @pDynamicStates@ array then
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' /must/ not
 --     be present
 --
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04868# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState2 extendedDynamicState2>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT',
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT',
+--     or
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04869# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState2LogicOp extendedDynamicState2LogicOp>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04870# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState2PatchControlPoints extendedDynamicState2PatchControlPoints>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
+--
 -- -   #VUID-VkGraphicsPipelineCreateInfo-flags-02877# If @flags@ includes
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV',
 --     then the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
 --     feature /must/ be enabled
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-flags-02966# If @flags@ includes
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-02966# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and @flags@ includes
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV',
 --     then all stages /must/ not specify @Xfb@ execution mode
 --
@@ -3954,64 +4207,109 @@
 --     or
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT'
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04494# If
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04494# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
+--     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     is not included in @pDynamicState@->@pDynamicStates@,
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::fragmentSize.width
+--     is not included in @pDynamicState->pDynamicStates@,
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.width@
 --     /must/ be greater than or equal to @1@
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04495# If
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04495# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
+--     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     is not included in @pDynamicState@->@pDynamicStates@,
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::fragmentSize.height
+--     is not included in @pDynamicState->pDynamicStates@,
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.height@
 --     /must/ be greater than or equal to @1@
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04496# If
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04496# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
+--     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     is not included in @pDynamicState@->@pDynamicStates@,
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::fragmentSize.width
+--     is not included in @pDynamicState->pDynamicStates@,
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.width@
 --     /must/ be a power-of-two value
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04497# If
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04497# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
+--     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     is not included in @pDynamicState@->@pDynamicStates@,
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::fragmentSize.height
+--     is not included in @pDynamicState->pDynamicStates@,
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.height@
 --     /must/ be a power-of-two value
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04498# If
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04498# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
+--     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     is not included in @pDynamicState@->@pDynamicStates@,
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::fragmentSize.width
+--     is not included in @pDynamicState->pDynamicStates@,
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.width@
 --     /must/ be less than or equal to @4@
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04499# If
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04499# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
+--     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     is not included in @pDynamicState@->@pDynamicStates@,
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::fragmentSize.height
+--     is not included in @pDynamicState->pDynamicStates@,
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.height@
 --     /must/ be less than or equal to @4@
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04500# If
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04500# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
+--     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     is not included in @pDynamicState@->@pDynamicStates@, and the
+--     is not included in @pDynamicState->pDynamicStates@, and the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate feature>
 --     is not enabled,
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::fragmentSize.width
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.width@
 --     and
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::fragmentSize.height
+--     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.height@
 --     /must/ both be equal to @1@
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04501# If
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04501# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
+--     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     is not included in @pDynamicState@->@pDynamicStates@, and the
+--     is not included in @pDynamicState->pDynamicStates@, and the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-primitiveFragmentShadingRate primitiveFragmentShadingRate feature>
 --     is not enabled,
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@combinerOps@[0]
 --     /must/ be
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04502# If
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04502# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
+--     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     is not included in @pDynamicState@->@pDynamicStates@, and the
+--     is not included in @pDynamicState->pDynamicStates@, and the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-attachmentFragmentShadingRate attachmentFragmentShadingRate feature>
 --     is not enabled,
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@combinerOps@[1]
@@ -4019,71 +4317,101 @@
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04503#
---     If the
+--     If the pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
 --     limit is not supported,
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     is not included in @pDynamicState@->@pDynamicStates@, and
+--     is not included in @pDynamicState->pDynamicStates@, and
 --     'PipelineViewportStateCreateInfo'::@viewportCount@ is greater than
 --     @1@, entry points specified in @pStages@ /must/ not write to the
 --     @PrimitiveShadingRateKHR@ built-in
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04504#
---     If the
+--     If the pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
 --     limit is not supported, and entry points specified in @pStages@
 --     write to the @ViewportIndex@ built-in, they /must/ not also write to
 --     the @PrimitiveShadingRateKHR@ built-in
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04505#
---     If the
+--     If the pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
 --     limit is not supported, and entry points specified in @pStages@
 --     write to the @ViewportMaskNV@ built-in, they /must/ not also write
 --     to the @PrimitiveShadingRateKHR@ built-in
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-fragmentShadingRateNonTrivialCombinerOps-04506#
---     If the
+--     If the pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-fragmentShadingRateNonTrivialCombinerOps fragmentShadingRateNonTrivialCombinerOps>
---     limit is not supported and
+--     limit is not supported, and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     is not included in @pDynamicState@->@pDynamicStates@, elements of
+--     is not included in @pDynamicState->pDynamicStates@, elements of
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@combinerOps@
 --     /must/ be
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'
 --     or
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR'
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04569# If
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04569# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     is not included in @pDynamicState@->@pDynamicStates@, and the
+--     is not included in @pDynamicState->pDynamicStates@, and the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentShadingRateEnums fragmentShadingRateEnums feature>
 --     is not enabled,
---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::shadingRateType
+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@shadingRateType@
 --     /must/ be equal to
 --     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV'.
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04570# If
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04570# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     is not included in @pDynamicState@->@pDynamicStates@, and the
+--     is not included in @pDynamicState->pDynamicStates@, and the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate feature>
 --     is not enabled,
---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::shadingRate
+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@shadingRate@
 --     /must/ be equal to
 --     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV'.
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04571# If
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04571# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     is not included in @pDynamicState@->@pDynamicStates@, and the
+--     is not included in @pDynamicState->pDynamicStates@, and the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-primitiveFragmentShadingRate primitiveFragmentShadingRate feature>
 --     is not enabled,
 --     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@combinerOps@[0]
 --     /must/ be
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04572# If
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04572# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     is not included in @pDynamicState@->@pDynamicStates@, and the
+--     is not included in @pDynamicState->pDynamicStates@, and the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-attachmentFragmentShadingRate attachmentFragmentShadingRate feature>
 --     is not enabled,
 --     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@combinerOps@[1]
@@ -4091,21 +4419,30 @@
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-fragmentShadingRateNonTrivialCombinerOps-04573#
---     If the
+--     If the pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     and the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-fragmentShadingRateNonTrivialCombinerOps fragmentShadingRateNonTrivialCombinerOps>
 --     limit is not supported and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
---     is not included in @pDynamicState@->@pDynamicStates@, elements of
+--     is not included in @pDynamicState->pDynamicStates@, elements of
 --     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@combinerOps@
 --     /must/ be
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'
 --     or
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR'
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-None-04574# If the
+-- -   #VUID-VkGraphicsPipelineCreateInfo-None-04574# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     and the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-supersampleFragmentShadingRates supersampleFragmentShadingRates feature>
 --     is not enabled,
---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::shadingRate
+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@shadingRate@
 --     /must/ not be equal to
 --     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV',
 --     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV',
@@ -4113,10 +4450,15 @@
 --     or
 --     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV'.
 --
--- -   #VUID-VkGraphicsPipelineCreateInfo-None-04575# If the
+-- -   #VUID-VkGraphicsPipelineCreateInfo-None-04575# If the pipeline is
+--     being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     and the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-noInvocationFragmentShadingRates noInvocationFragmentShadingRates feature>
 --     is not enabled,
---     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::shadingRate
+--     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@shadingRate@
 --     /must/ not be equal to
 --     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV'.
 --
@@ -4124,6 +4466,51 @@
 --     elements of the @pDynamicStates@ member of @pDynamicState@ /must/
 --     not be
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04807# If the
+--     pipeline is being created with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexInputDynamicState vertexInputDynamicState>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-None-04893# The pipeline /must/
+--     be created with a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-complete complete set of state>
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04800# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is not enabled, there /must/ be no element of the
+--     @pDynamicStates@ member of @pDynamicState@ set to
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizationSamples-04899# If
+--     the pipeline is being created with fragment shader state, and the
+--     VK_QCOM_render_pass_shader_resolve extension is enabled, and if
+--     subpass has any input attachments, and if the subpass description
+--     contains
+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM',
+--     then the sample count of the input attachments /must/ equal
+--     @rasterizationSamples@
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-sampleShadingEnable-04900# If the
+--     pipeline is being created with fragment shader state, and the
+--     VK_QCOM_render_pass_shader_resolve extension is enabled, and if the
+--     subpass description contains
+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM',
+--     then @sampleShadingEnable@ /must/ be false
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-04901# If @flags@ includes
+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM',
+--     then the subpass /must/ be the last subpass in a subpass dependency
+--     chain
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-flags-04902# If @flags@ includes
+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM',
+--     and if @pResolveAttachments@ is not @NULL@, then each resolve
+--     attachment /must/ be 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Core10/PipelineCache.hs b/src/Vulkan/Core10/PipelineCache.hs
--- a/src/Vulkan/Core10/PipelineCache.hs
+++ b/src/Vulkan/Core10/PipelineCache.hs
@@ -283,14 +283,15 @@
 -- Otherwise, @pDataSize@ /must/ point to a variable set by the user to the
 -- size of the buffer, in bytes, pointed to by @pData@, and on return the
 -- variable is overwritten with the amount of data actually written to
--- @pData@.
+-- @pData@. If @pDataSize@ is less than the maximum size that /can/ be
+-- retrieved by the pipeline cache, at most @pDataSize@ bytes will be
+-- written to @pData@, and 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be
+-- returned instead of 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate
+-- that not all of the pipeline cache was returned.
 --
--- If @pDataSize@ is less than the maximum size that /can/ be retrieved by
--- the pipeline cache, at most @pDataSize@ bytes will be written to
--- @pData@, and 'getPipelineCacheData' will return
--- 'Vulkan.Core10.Enums.Result.INCOMPLETE'. Any data written to @pData@ is
--- valid and /can/ be provided as the @pInitialData@ member of the
--- 'PipelineCacheCreateInfo' structure passed to 'createPipelineCache'.
+-- Any data written to @pData@ is valid and /can/ be provided as the
+-- @pInitialData@ member of the 'PipelineCacheCreateInfo' structure passed
+-- to 'createPipelineCache'.
 --
 -- Two calls to 'getPipelineCacheData' with the same parameters /must/
 -- retrieve the same data unless a command that modifies the contents of
diff --git a/src/Vulkan/Core10/PipelineLayout.hs b/src/Vulkan/Core10/PipelineLayout.hs
--- a/src/Vulkan/Core10/PipelineLayout.hs
+++ b/src/Vulkan/Core10/PipelineLayout.hs
@@ -629,8 +629,8 @@
 -- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-03572# The total
 --     number of bindings with a @descriptorType@ of
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
---     to any given shader stage across all elements of @pSetLayouts@
---     /must/ be less than or equal to
+--     accessible to any given shader stage across all elements of
+--     @pSetLayouts@ /must/ be less than or equal to
 --     'Vulkan.Extensions.VK_KHR_acceleration_structure.PhysicalDeviceAccelerationStructurePropertiesKHR'::@maxPerStageDescriptorUpdateAfterBindAccelerationStructures@
 --
 -- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-03573# The total
diff --git a/src/Vulkan/Core10/Query.hs b/src/Vulkan/Core10/Query.hs
--- a/src/Vulkan/Core10/Query.hs
+++ b/src/Vulkan/Core10/Query.hs
@@ -356,10 +356,6 @@
 -- -   #VUID-vkGetQueryPoolResults-firstQuery-00813# @firstQuery@ /must/ be
 --     less than the number of queries in @queryPool@
 --
--- -   #VUID-vkGetQueryPoolResults-flags-02827# If
---     'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT' is not
---     set in @flags@, then @pData@ and @stride@ /must/ be multiples of @4@
---
 -- -   #VUID-vkGetQueryPoolResults-flags-02828# If
 --     'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT' is not
 --     set in @flags@ and the @queryType@ used to create @queryPool@ was
@@ -514,8 +510,9 @@
 --
 -- -   #VUID-VkQueryPoolCreateInfo-queryType-03222# If @queryType@ is
 --     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',
---     the @pNext@ chain /must/ include a structure of type
+--     the @pNext@ chain /must/ include a
 --     'Vulkan.Extensions.VK_KHR_performance_query.QueryPoolPerformanceCreateInfoKHR'
+--     structure
 --
 -- -   #VUID-VkQueryPoolCreateInfo-queryCount-02763# @queryCount@ /must/ be
 --     greater than 0
@@ -528,9 +525,10 @@
 -- -   #VUID-VkQueryPoolCreateInfo-pNext-pNext# Each @pNext@ member of any
 --     structure (including this one) in the @pNext@ chain /must/ be either
 --     @NULL@ or a pointer to a valid instance of
---     'Vulkan.Extensions.VK_KHR_performance_query.QueryPoolPerformanceCreateInfoKHR'
+--     'Vulkan.Extensions.VK_KHR_performance_query.QueryPoolPerformanceCreateInfoKHR',
+--     'Vulkan.Extensions.VK_INTEL_performance_query.QueryPoolPerformanceQueryCreateInfoINTEL',
 --     or
---     'Vulkan.Extensions.VK_INTEL_performance_query.QueryPoolPerformanceQueryCreateInfoINTEL'
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileKHR VkVideoProfileKHR>
 --
 -- -   #VUID-VkQueryPoolCreateInfo-sType-unique# The @sType@ value of each
 --     struct in the @pNext@ chain /must/ be unique
diff --git a/src/Vulkan/Core10/Queue.hs b/src/Vulkan/Core10/Queue.hs
--- a/src/Vulkan/Core10/Queue.hs
+++ b/src/Vulkan/Core10/Queue.hs
@@ -256,10 +256,10 @@
 --     capabilities of @queue@, as specified in the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>
 --
--- -   #VUID-vkQueueSubmit-pSignalSemaphores-00067# Each element of the
---     @pSignalSemaphores@ member of any element of @pSubmits@ /must/ be
---     unsignaled when the semaphore signal operation it defines is
---     executed on the device
+-- -   #VUID-vkQueueSubmit-pSignalSemaphores-00067# Each binary semaphore
+--     element of the @pSignalSemaphores@ member of any element of
+--     @pSubmits@ /must/ be unsignaled when the semaphore signal operation
+--     it defines is executed on the device
 --
 -- -   #VUID-vkQueueSubmit-pWaitSemaphores-00068# When a semaphore wait
 --     operation referring to a binary semaphore defined by any element of
@@ -644,7 +644,7 @@
 --     'Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of
 --     'Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE' the
 --     corresponding element of
---     'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo'::pSignalSemaphoreValues
+--     'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo'::@pSignalSemaphoreValues@
 --     /must/ have a value greater than the current value of the semaphore
 --     when the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
@@ -655,7 +655,7 @@
 --     'Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of
 --     'Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE' the
 --     corresponding element of
---     'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo'::pWaitSemaphoreValues
+--     'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo'::@pWaitSemaphoreValues@
 --     /must/ have a value which does not differ from the current value of
 --     the semaphore or the value of any outstanding semaphore wait or
 --     signal operation on that semaphore by more than
@@ -666,7 +666,7 @@
 --     'Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of
 --     'Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE' the
 --     corresponding element of
---     'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo'::pSignalSemaphoreValues
+--     'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo'::@pSignalSemaphoreValues@
 --     /must/ have a value which does not differ from the current value of
 --     the semaphore or the value of any outstanding semaphore wait or
 --     signal operation on that semaphore by more than
diff --git a/src/Vulkan/Core10/Sampler.hs b/src/Vulkan/Core10/Sampler.hs
--- a/src/Vulkan/Core10/Sampler.hs
+++ b/src/Vulkan/Core10/Sampler.hs
@@ -108,7 +108,8 @@
 -- -   #VUID-vkCreateSampler-maxSamplerAllocationCount-04110# There /must/
 --     be less than
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxSamplerAllocationCount@
---     VkSampler objects currently created on the device.
+--     'Vulkan.Core10.Handles.Sampler' objects currently created on the
+--     device.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Core10/SparseResourceMemoryManagement.hs b/src/Vulkan/Core10/SparseResourceMemoryManagement.hs
--- a/src/Vulkan/Core10/SparseResourceMemoryManagement.hs
+++ b/src/Vulkan/Core10/SparseResourceMemoryManagement.hs
@@ -307,14 +307,15 @@
 getPhysicalDeviceSparseImageFormatProperties :: forall io
                                               . (MonadIO io)
                                              => -- | @physicalDevice@ is the physical device from which to query the sparse
-                                                -- image capabilities.
+                                                -- image format properties.
                                                 PhysicalDevice
                                              -> -- | @format@ is the image format.
                                                 Format
                                              -> -- | @type@ is the dimensionality of image.
                                                 ImageType
-                                             -> -- | @samples@ is the number of samples per texel as defined in
-                                                -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'.
+                                             -> -- | @samples@ is a
+                                                -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
+                                                -- specifying the number of samples per texel.
                                                 ("samples" ::: SampleCountFlagBits)
                                              -> -- | @usage@ is a bitmask describing the intended usage of the image.
                                                 ImageUsageFlags
@@ -393,9 +394,9 @@
 --     semaphore
 --
 -- -   #VUID-vkQueueBindSparse-pWaitSemaphores-01117# All elements of the
---     @pWaitSemaphores@ member of all elements of @pBindInfo@ member
---     referring to a binary semaphore /must/ be semaphores that are
---     signaled, or have
+--     @pWaitSemaphores@ member of all elements of the @pBindInfo@
+--     parameter referring to a binary semaphore /must/ be semaphores that
+--     are signaled, or have
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operations>
 --     previously submitted for execution
 --
@@ -650,8 +651,8 @@
 -- 'SparseImageMemoryBind', 'Vulkan.Core10.Image.getImageSubresourceLayout'
 data ImageSubresource = ImageSubresource
   { -- | @aspectMask@ is a
-    -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags' selecting the
-    -- image /aspect/.
+    -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags' value
+    -- selecting the image /aspect/.
     --
     -- #VUID-VkImageSubresource-aspectMask-parameter# @aspectMask@ /must/ be a
     -- valid combination of
@@ -1040,7 +1041,7 @@
     -- #VUID-VkSparseBufferMemoryBindInfo-buffer-parameter# @buffer@ /must/ be
     -- a valid 'Vulkan.Core10.Handles.Buffer' handle
     buffer :: Buffer
-  , -- | @pBinds@ is a pointer to array of 'SparseMemoryBind' structures.
+  , -- | @pBinds@ is a pointer to an array of 'SparseMemoryBind' structures.
     --
     -- #VUID-VkSparseBufferMemoryBindInfo-pBinds-parameter# @pBinds@ /must/ be
     -- a valid pointer to an array of @bindCount@ valid 'SparseMemoryBind'
@@ -1084,7 +1085,7 @@
 
 
 -- | VkSparseImageOpaqueMemoryBindInfo - Structure specifying sparse image
--- opaque memory bind info
+-- opaque memory bind information
 --
 -- == Valid Usage
 --
@@ -1152,7 +1153,7 @@
 
 
 -- | VkSparseImageMemoryBindInfo - Structure specifying sparse image memory
--- bind info
+-- bind information
 --
 -- == Valid Usage
 --
@@ -1262,7 +1263,7 @@
 --     'Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of
 --     'Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE' the
 --     corresponding element of
---     'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo'::pSignalSemaphoreValues
+--     'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo'::@pSignalSemaphoreValues@
 --     /must/ have a value greater than the current value of the semaphore
 --     when the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
@@ -1273,7 +1274,7 @@
 --     'Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of
 --     'Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE' the
 --     corresponding element of
---     'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo'::pWaitSemaphoreValues
+--     'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo'::@pWaitSemaphoreValues@
 --     /must/ have a value which does not differ from the current value of
 --     the semaphore or from the value of any outstanding semaphore wait or
 --     signal operation on that semaphore by more than
@@ -1284,7 +1285,7 @@
 --     'Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of
 --     'Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE' the
 --     corresponding element of
---     'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo'::pSignalSemaphoreValues
+--     'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo'::@pSignalSemaphoreValues@
 --     /must/ have a value which does not differ from the current value of
 --     the semaphore or from the value of any outstanding semaphore wait or
 --     signal operation on that semaphore by more than
diff --git a/src/Vulkan/Core11.hs b/src/Vulkan/Core11.hs
--- a/src/Vulkan/Core11.hs
+++ b/src/Vulkan/Core11.hs
@@ -57,7 +57,7 @@
 import Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters
 import Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers
 import Data.Word (Word32)
-import Vulkan.Version (pattern MAKE_VERSION)
+import Vulkan.Version (pattern MAKE_API_VERSION)
 pattern API_VERSION_1_1 :: Word32
-pattern API_VERSION_1_1 = MAKE_VERSION 1 1 0
+pattern API_VERSION_1_1 = MAKE_API_VERSION 1 1 0
 
diff --git a/src/Vulkan/Core11/Enums/ExternalMemoryHandleTypeFlagBits.hs b/src/Vulkan/Core11/Enums/ExternalMemoryHandleTypeFlagBits.hs
--- a/src/Vulkan/Core11/Enums/ExternalMemoryHandleTypeFlagBits.hs
+++ b/src/Vulkan/Core11/Enums/ExternalMemoryHandleTypeFlagBits.hs
@@ -128,7 +128,7 @@
 -- share handle that has only limited valid usage outside of Vulkan and
 -- other compatible APIs. It is not compatible with any native APIs. It
 -- does not own a reference to the underlying memory resource represented
--- its Vulkan memory object, and will therefore become invalid when all
+-- by its Vulkan memory object, and will therefore become invalid when all
 -- Vulkan memory objects associated with it are destroyed.
 pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT                = ExternalMemoryHandleTypeFlagBits 0x00000004
 -- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT' specifies an NT handle
diff --git a/src/Vulkan/Core11/Enums/ExternalSemaphoreHandleTypeFlagBits.hs b/src/Vulkan/Core11/Enums/ExternalSemaphoreHandleTypeFlagBits.hs
--- a/src/Vulkan/Core11/Enums/ExternalSemaphoreHandleTypeFlagBits.hs
+++ b/src/Vulkan/Core11/Enums/ExternalSemaphoreHandleTypeFlagBits.hs
@@ -98,15 +98,15 @@
 -- share handle that has only limited valid usage outside of Vulkan and
 -- other compatible APIs. It is not compatible with any native APIs. It
 -- does not own a reference to the underlying synchronization primitive
--- represented its Vulkan semaphore object, and will therefore become
+-- represented by its Vulkan semaphore object, and will therefore become
 -- invalid when all Vulkan semaphore objects associated with it are
 -- destroyed.
 pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT     = ExternalSemaphoreHandleTypeFlagBits 0x00000004
 -- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT' specifies an NT handle
 -- returned by @ID3D12Device@::@CreateSharedHandle@ referring to a Direct3D
--- 12 fence, or @ID3D11Device5@::'Vulkan.Core10.Fence.createFence' by a
--- Direct3D 11 fence. It owns a reference to the underlying synchronization
--- primitive associated with the Direct3D fence.
+-- 12 fence, or @ID3D11Device5@::'Vulkan.Core10.Fence.createFence'
+-- referring to a Direct3D 11 fence. It owns a reference to the underlying
+-- synchronization primitive associated with the Direct3D fence.
 pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT          = ExternalSemaphoreHandleTypeFlagBits 0x00000008
 -- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT' specifies a POSIX file
 -- descriptor handle to a Linux Sync File or Android Fence object. It can
diff --git a/src/Vulkan/Core11/Enums/SubgroupFeatureFlagBits.hs b/src/Vulkan/Core11/Enums/SubgroupFeatureFlagBits.hs
--- a/src/Vulkan/Core11/Enums/SubgroupFeatureFlagBits.hs
+++ b/src/Vulkan/Core11/Enums/SubgroupFeatureFlagBits.hs
@@ -27,7 +27,7 @@
 import Vulkan.Core10.FundamentalTypes (Flags)
 type SubgroupFeatureFlags = SubgroupFeatureFlagBits
 
--- | VkSubgroupFeatureFlagBits - Enum describing what group operations are
+-- | VkSubgroupFeatureFlagBits - Bitmask describing what group operations are
 -- supported with subgroup scope
 --
 -- = See Also
diff --git a/src/Vulkan/Core11/Originally_Based_On_VK_KHR_protected_memory.hs b/src/Vulkan/Core11/Originally_Based_On_VK_KHR_protected_memory.hs
--- a/src/Vulkan/Core11/Originally_Based_On_VK_KHR_protected_memory.hs
+++ b/src/Vulkan/Core11/Originally_Based_On_VK_KHR_protected_memory.hs
@@ -104,7 +104,7 @@
                    -- 'Vulkan.Core10.Handles.Device' handle
                    Device
                 -> -- | @pQueueInfo@ is a pointer to a 'DeviceQueueInfo2' structure, describing
-                   -- the parameters used to create the device queue.
+                   -- parameters of the device queue to be retrieved.
                    --
                    -- #VUID-vkGetDeviceQueue2-pQueueInfo-parameter# @pQueueInfo@ /must/ be a
                    -- valid pointer to a valid 'DeviceQueueInfo2' structure
@@ -190,12 +190,21 @@
 -- | VkPhysicalDeviceProtectedMemoryFeatures - Structure describing protected
 -- memory features that can be supported by an implementation
 --
+-- = Members
+--
+-- This structure describes the following feature:
+--
 -- = Description
 --
 -- If the 'PhysicalDeviceProtectedMemoryFeatures' structure is included in
--- the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with a value indicating whether the feature is supported.
+-- 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. 'PhysicalDeviceProtectedMemoryFeatures' /can/ also be used in
+-- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
@@ -251,10 +260,12 @@
 -- = Description
 --
 -- If the 'PhysicalDeviceProtectedMemoryProperties' structure is included
--- in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with a value indicating the implementation-dependent
--- behavior.
+-- 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)
 --
diff --git a/src/Vulkan/Core11/Originally_Based_On_VK_KHR_subgroup.hs b/src/Vulkan/Core11/Originally_Based_On_VK_KHR_subgroup.hs
--- a/src/Vulkan/Core11/Originally_Based_On_VK_KHR_subgroup.hs
+++ b/src/Vulkan/Core11/Originally_Based_On_VK_KHR_subgroup.hs
@@ -36,17 +36,15 @@
 -- | VkPhysicalDeviceSubgroupProperties - Structure describing subgroup
 -- support for an implementation
 --
--- = Members
---
--- The members of the 'PhysicalDeviceSubgroupProperties' structure describe
--- the following implementation-dependent limits:
---
 -- = Description
 --
 -- If the 'PhysicalDeviceSubgroupProperties' structure is included in the
--- @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- @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.
 --
 -- If @supportedOperations@ includes
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subgroup-quad >,
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_16bit_storage.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_16bit_storage.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_16bit_storage.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_16bit_storage.hs
@@ -29,6 +29,22 @@
 -- | VkPhysicalDevice16BitStorageFeatures - Structure describing features
 -- supported by VK_KHR_16bit_storage
 --
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDevice16BitStorageFeatures' 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. 'PhysicalDevice16BitStorageFeatures' /can/ also be used in
+-- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
+--
 -- == Valid Usage (Implicit)
 --
 -- = See Also
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_bind_memory2.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_bind_memory2.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_bind_memory2.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_bind_memory2.hs
@@ -151,9 +151,9 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkBindImageMemory2-pBindInfos-02858# If any
---     'BindImageMemoryInfo'::image was created with
+--     'BindImageMemoryInfo'::@image@ was created with
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DISJOINT_BIT'
---     then all planes of 'BindImageMemoryInfo'::image /must/ be bound
+--     then all planes of 'BindImageMemoryInfo'::@image@ /must/ be bound
 --     individually in separate @pBindInfos@
 --
 -- -   #VUID-vkBindImageMemory2-pBindInfos-04006# @pBindInfos@ /must/ not
@@ -242,11 +242,11 @@
 --     @memoryOffset@
 --
 -- -   #VUID-VkBindBufferMemoryInfo-buffer-01444# If @buffer@ requires a
---     dedicated allocation(as reported by
+--     dedicated allocation (as reported by
 --     'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2'
 --     in
---     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedRequirements'::requiresDedicatedAllocation
---     for @buffer@), @memory@ /must/ have been created with
+--     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedRequirements'::@requiresDedicatedAllocation@
+--     for @buffer@), @memory@ /must/ have been allocated with
 --     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::@buffer@
 --     equal to @buffer@
 --
@@ -261,25 +261,25 @@
 --     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::@buffer@,
 --     and @memoryOffset@ /must/ be zero
 --
--- -   #VUID-VkBindBufferMemoryInfo-None-01898# If buffer was created with
---     the
+-- -   #VUID-VkBindBufferMemoryInfo-None-01898# If @buffer@ was created
+--     with the
 --     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
 --     bit set, the buffer /must/ be bound to a memory object allocated
 --     with a memory type that reports
 --     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_PROTECTED_BIT'
 --
--- -   #VUID-VkBindBufferMemoryInfo-None-01899# If buffer was created with
---     the
+-- -   #VUID-VkBindBufferMemoryInfo-None-01899# If @buffer@ was created
+--     with the
 --     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'
 --     bit not set, the buffer /must/ not be bound to a memory object
---     created with a memory type that reports
+--     allocated with a memory type that reports
 --     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_PROTECTED_BIT'
 --
 -- -   #VUID-VkBindBufferMemoryInfo-buffer-01038# If @buffer@ was created
 --     with
 --     'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationBufferCreateInfoNV'::@dedicatedAllocation@
 --     equal to 'Vulkan.Core10.FundamentalTypes.TRUE', @memory@ /must/ have
---     been created with
+--     been allocated with
 --     'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV'::@buffer@
 --     equal to a buffer handle created with identical creation parameters
 --     to @buffer@ and @memoryOffset@ /must/ be zero
@@ -291,7 +291,7 @@
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo'::@handleTypes@
 --     when @buffer@ was created
 --
--- -   #VUID-VkBindBufferMemoryInfo-memory-02985# If @memory@ was created
+-- -   #VUID-VkBindBufferMemoryInfo-memory-02985# If @memory@ was allocated
 --     by a memory import operation, that is not
 --     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ImportAndroidHardwareBufferInfoANDROID'
 --     with a non-@NULL@ @buffer@ value, the external handle type of the
@@ -299,7 +299,7 @@
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo'::@handleTypes@
 --     when @buffer@ was created
 --
--- -   #VUID-VkBindBufferMemoryInfo-memory-02986# If @memory@ was created
+-- -   #VUID-VkBindBufferMemoryInfo-memory-02986# If @memory@ was allocated
 --     with the
 --     'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ImportAndroidHardwareBufferInfoANDROID'
 --     memory import operation with a non-@NULL@ @buffer@ value,
@@ -438,7 +438,7 @@
 --     dedicated allocation (as reported by
 --     'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2'
 --     in
---     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedRequirements'::requiresDedicatedAllocation
+--     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedRequirements'::@requiresDedicatedAllocation@
 --     for @image@), @memory@ /must/ have been created with
 --     'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::@image@
 --     equal to @image@
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_dedicated_allocation.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_dedicated_allocation.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_dedicated_allocation.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_dedicated_allocation.hs
@@ -35,93 +35,68 @@
 --
 -- = Description
 --
--- When the implementation sets @requiresDedicatedAllocation@ to
--- 'Vulkan.Core10.FundamentalTypes.TRUE', it /must/ also set
--- @prefersDedicatedAllocation@ to 'Vulkan.Core10.FundamentalTypes.TRUE'.
---
--- If the 'MemoryDedicatedRequirements' structure is included in the
--- @pNext@ chain of the
+-- To determine the dedicated allocation requirements of a buffer or image
+-- resource, add a 'MemoryDedicatedRequirements' structure to the @pNext@
+-- chain of the
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'
--- structure passed as the @pMemoryRequirements@ parameter of a
+-- structure passed as the @pMemoryRequirements@ parameter of
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2'
--- call, @requiresDedicatedAllocation@ /may/ be
--- 'Vulkan.Core10.FundamentalTypes.TRUE' under one of the following
--- conditions:
+-- or
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2',
+-- respectively.
 --
--- -   The @pNext@ chain of 'Vulkan.Core10.Buffer.BufferCreateInfo' for the
---     call to 'Vulkan.Core10.Buffer.createBuffer' used to create the
---     buffer being queried included a
+-- Constraints on the values returned for buffer resources are:
+--
+-- -   @requiresDedicatedAllocation@ /may/ be
+--     'Vulkan.Core10.FundamentalTypes.TRUE' if the @pNext@ chain of
+--     'Vulkan.Core10.Buffer.BufferCreateInfo' for the call to
+--     'Vulkan.Core10.Buffer.createBuffer' used to create the buffer being
+--     queried included a
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo'
 --     structure, and any of the handle types specified in
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo'::@handleTypes@
 --     requires dedicated allocation, as reported by
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.getPhysicalDeviceExternalBufferProperties'
 --     in
---     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalBufferProperties'::@externalMemoryProperties.externalMemoryFeatures@,
---     the @requiresDedicatedAllocation@ field will be set to
---     'Vulkan.Core10.FundamentalTypes.TRUE'.
+--     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalBufferProperties'::@externalMemoryProperties.externalMemoryFeatures@.
+--     Otherwise, @requiresDedicatedAllocation@ will be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'.
 --
--- In all other cases, @requiresDedicatedAllocation@ /must/ be set to
--- 'Vulkan.Core10.FundamentalTypes.FALSE' by the implementation whenever a
--- 'MemoryDedicatedRequirements' structure is included in the @pNext@ chain
--- of the
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'
--- structure passed to a call to
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2'.
+-- -   When the implementation sets @requiresDedicatedAllocation@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE', it /must/ also set
+--     @prefersDedicatedAllocation@ to
+--     'Vulkan.Core10.FundamentalTypes.TRUE'.
 --
--- If the 'MemoryDedicatedRequirements' structure is included in the
--- @pNext@ chain of the
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'
--- structure passed as the @pMemoryRequirements@ parameter of a
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2'
--- call and
--- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_BINDING_BIT'
--- was set in 'Vulkan.Core10.Buffer.BufferCreateInfo'::@flags@ when
--- @buffer@ was created then the implementation /must/ set both
--- @prefersDedicatedAllocation@ and @requiresDedicatedAllocation@ to
--- 'Vulkan.Core10.FundamentalTypes.FALSE'.
+-- -   If
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_BINDING_BIT'
+--     was set in 'Vulkan.Core10.Buffer.BufferCreateInfo'::@flags@ when
+--     @buffer@ was created, then both @prefersDedicatedAllocation@ and
+--     @requiresDedicatedAllocation@ will be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'.
 --
--- If the 'MemoryDedicatedRequirements' structure is included in the
--- @pNext@ chain of the
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'
--- structure passed as the @pMemoryRequirements@ parameter of a
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2'
--- call, @requiresDedicatedAllocation@ /may/ be
--- 'Vulkan.Core10.FundamentalTypes.TRUE' under one of the following
--- conditions:
+-- Constraints on the values returned for image resources are:
 --
--- -   The @pNext@ chain of 'Vulkan.Core10.Image.ImageCreateInfo' for the
---     call to 'Vulkan.Core10.Image.createImage' used to create the image
---     being queried included a
+-- -   @requiresDedicatedAllocation@ /may/ be
+--     'Vulkan.Core10.FundamentalTypes.TRUE' if the @pNext@ chain of
+--     'Vulkan.Core10.Image.ImageCreateInfo' for the call to
+--     'Vulkan.Core10.Image.createImage' used to create the image being
+--     queried included a
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'
 --     structure, and any of the handle types specified in
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'::@handleTypes@
 --     requires dedicated allocation, as reported by
 --     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
 --     in
---     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalImageFormatProperties'::@externalMemoryProperties.externalMemoryFeatures@,
---     the @requiresDedicatedAllocation@ field will be set to
---     'Vulkan.Core10.FundamentalTypes.TRUE'.
---
--- In all other cases, @requiresDedicatedAllocation@ /must/ be set to
--- 'Vulkan.Core10.FundamentalTypes.FALSE' by the implementation whenever a
--- 'MemoryDedicatedRequirements' structure is included in the @pNext@ chain
--- of the
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'
--- structure passed to a call to
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2'.
+--     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalImageFormatProperties'::@externalMemoryProperties.externalMemoryFeatures@.
+--     Otherwise, @requiresDedicatedAllocation@ will be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'.
 --
--- If the 'MemoryDedicatedRequirements' structure is included in the
--- @pNext@ chain of the
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'
--- structure passed as the @pMemoryRequirements@ parameter of a
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2'
--- call and
--- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT'
--- was set in 'Vulkan.Core10.Image.ImageCreateInfo'::@flags@ when @image@
--- was created then the implementation /must/ set both
--- @prefersDedicatedAllocation@ and @requiresDedicatedAllocation@ to
--- 'Vulkan.Core10.FundamentalTypes.FALSE'.
+-- -   If
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT'
+--     was set in 'Vulkan.Core10.Image.ImageCreateInfo'::@flags@ when
+--     @image@ was created, then both @prefersDedicatedAllocation@ and
+--     @requiresDedicatedAllocation@ will be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_descriptor_update_template.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_descriptor_update_template.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_descriptor_update_template.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_descriptor_update_template.hs
@@ -189,13 +189,13 @@
 --
 -- -   #VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00356#
 --     If 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
---     provided when @descriptorSetLayout@ was created, a compatible set of
---     callbacks /must/ be provided here
+--     provided when @descriptorUpdateTemplate@ was created, a compatible
+--     set of callbacks /must/ be provided here
 --
 -- -   #VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00357#
 --     If no 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
---     provided when @descriptorSetLayout@ was created, @pAllocator@ /must/
---     be @NULL@
+--     provided when @descriptorUpdateTemplate@ was created, @pAllocator@
+--     /must/ be @NULL@
 --
 -- == Valid Usage (Implicit)
 --
@@ -362,9 +362,7 @@
 -- >     &createInfo,
 -- >     NULL,
 -- >     &myDescriptorUpdateTemplate);
--- > }
 -- >
--- >
 -- > AppDataStructure appData;
 -- >
 -- > // fill appData here or cache it in your engine
@@ -377,7 +375,7 @@
 -- 'Vulkan.Core10.Handles.Device'
 updateDescriptorSetWithTemplate :: forall io
                                  . (MonadIO io)
-                                => -- | @device@ is the logical device that updates the descriptor sets.
+                                => -- | @device@ is the logical device that updates the descriptor set.
                                    Device
                                 -> -- | @descriptorSet@ is the descriptor set to update
                                    DescriptorSet
@@ -631,15 +629,12 @@
     -- it /can/ only be used to push descriptor sets using the provided
     -- @pipelineBindPoint@, @pipelineLayout@, and @set@ number.
     templateType :: DescriptorUpdateTemplateType
-  , -- | @descriptorSetLayout@ is the descriptor set layout the parameter update
-    -- template will be used with. All descriptor sets which are going to be
+  , -- | @descriptorSetLayout@ is the descriptor set layout used to build the
+    -- descriptor update template. All descriptor sets which are going to be
     -- updated through the newly created descriptor update template /must/ be
-    -- created with this layout. @descriptorSetLayout@ is the descriptor set
-    -- layout used to build the descriptor update template. All descriptor sets
-    -- which are going to be updated through the newly created descriptor
-    -- update template /must/ be created with a layout that matches (is the
-    -- same as, or defined identically to) this layout. This parameter is
-    -- ignored if @templateType@ is not
+    -- created with a layout that matches (is the same as, or defined
+    -- identically to) this layout. This parameter is ignored if @templateType@
+    -- is not
     -- 'Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET'.
     descriptorSetLayout :: DescriptorSetLayout
   , -- | @pipelineBindPoint@ is a
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
@@ -242,7 +242,8 @@
   "dynamic" mkVkCmdDispatchBase
   :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> Word32 -> Word32 -> Word32 -> IO ()
 
--- | vkCmdDispatchBase - Dispatch compute work items
+-- | vkCmdDispatchBase - Dispatch compute work items with non-zero base
+-- values for the workgroup IDs
 --
 -- = Description
 --
@@ -354,9 +355,9 @@
 -- -   #VUID-vkCmdDispatchBase-commandBuffer-02701# If the
 --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
 --     point used by this command requires any dynamic state, that state
---     /must/ have been set for @commandBuffer@, and done so after any
---     previously bound pipeline with the corresponding state not specified
---     as dynamic
+--     /must/ have been set or inherited for @commandBuffer@, and done so
+--     after any previously bound pipeline with the corresponding state not
+--     specified as dynamic
 --
 -- -   #VUID-vkCmdDispatchBase-None-02859# There /must/ not have been any
 --     calls to dynamic state setting commands for any state not specified
@@ -473,11 +474,29 @@
 --     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this
 --     command.
 --
+-- -   #VUID-vkCmdDispatchBase-commandBuffer-02712# If @commandBuffer@ is a
+--     protected command buffer, any resource written to by the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command /must/ not be an unprotected resource
+--
+-- -   #VUID-vkCmdDispatchBase-commandBuffer-02713# If @commandBuffer@ is a
+--     protected command buffer, pipeline stages other than the
+--     framebuffer-space and compute stages in the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command /must/ not write to any resource
+--
+-- -   #VUID-vkCmdDispatchBase-commandBuffer-04617# If any of the shader
+--     stages of the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
+--     bind point used by this command uses the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR>
+--     capability, then @commandBuffer@ /must/ not be a protected command
+--     buffer
+--
 -- -   #VUID-vkCmdDispatchBase-baseGroupX-00421# @baseGroupX@ /must/ be
 --     less than
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[0]
 --
--- -   #VUID-vkCmdDispatchBase-baseGroupX-00422# @baseGroupX@ /must/ be
+-- -   #VUID-vkCmdDispatchBase-baseGroupX-00422# @baseGroupY@ /must/ be
 --     less than
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[1]
 --
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.hs
@@ -40,30 +40,17 @@
 -- | VkBindBufferMemoryDeviceGroupInfo - Structure specifying device within a
 -- group to bind to
 --
--- = Members
+-- = Description
 --
--- If the @pNext@ list of
+-- If the @pNext@ chain of
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo'
 -- includes a 'BindBufferMemoryDeviceGroupInfo' structure, then that
 -- structure determines how memory is bound to buffers across multiple
 -- devices in a device group.
 --
--- = Description
---
--- The 'BindBufferMemoryDeviceGroupInfo' structure is defined as:
---
--- -   @sType@ is the type of this structure.
---
--- -   @pNext@ is @NULL@ or a pointer to a structure extending this
---     structure.
---
--- -   @deviceIndexCount@ is the number of elements in @pDeviceIndices@.
---
--- -   @pDeviceIndices@ is a pointer to an array of device indices.
---
 -- If @deviceIndexCount@ is greater than zero, then on device index i the
 -- buffer is attached to the instance of @memory@ on the physical device
--- with device index pDeviceIndices[i].
+-- with device index @pDeviceIndices@[i].
 --
 -- If @deviceIndexCount@ is zero and @memory@ comes from a memory heap with
 -- the
@@ -103,7 +90,7 @@
 --
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data BindBufferMemoryDeviceGroupInfo = BindBufferMemoryDeviceGroupInfo
-  { -- No documentation found for Nested "VkBindBufferMemoryDeviceGroupInfo" "pDeviceIndices"
+  { -- | @pDeviceIndices@ is a pointer to an array of device indices.
     deviceIndices :: Vector Word32 }
   deriving (Typeable)
 #if defined(GENERIC_INSTANCES)
@@ -144,45 +131,25 @@
 -- | VkBindImageMemoryDeviceGroupInfo - Structure specifying device within a
 -- group to bind to
 --
--- = Members
+-- = Description
 --
--- If the @pNext@ list of
+-- If the @pNext@ chain of
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo'
 -- includes a 'BindImageMemoryDeviceGroupInfo' structure, then that
 -- structure determines how memory is bound to images across multiple
 -- devices in a device group.
 --
--- = Description
---
--- The 'BindImageMemoryDeviceGroupInfo' structure is defined as:
---
--- -   @sType@ is the type of this structure.
---
--- -   @pNext@ is @NULL@ or a pointer to a structure extending this
---     structure.
---
--- -   @deviceIndexCount@ is the number of elements in @pDeviceIndices@.
---
--- -   @pDeviceIndices@ is a pointer to an array of device indices.
---
--- -   @splitInstanceBindRegionCount@ is the number of elements in
---     @pSplitInstanceBindRegions@.
---
--- -   @pSplitInstanceBindRegions@ is a pointer to an array of
---     'Vulkan.Core10.FundamentalTypes.Rect2D' structures describing which
---     regions of the image are attached to each instance of memory.
---
 -- If @deviceIndexCount@ is greater than zero, then on device index i
 -- @image@ is attached to the instance of the memory on the physical device
 -- with device index pDeviceIndices[i].
 --
 -- Let N be the number of physical devices in the logical device. If
 -- @splitInstanceBindRegionCount@ is greater than zero, then
--- @pSplitInstanceBindRegions@ is an array of N2 rectangles, where the
--- image region specified by the rectangle at element i*N+j in resource
--- instance i is bound to the memory instance j. The blocks of the memory
--- that are bound to each sparse image block region use an offset in
--- memory, relative to @memoryOffset@, computed as if the whole image were
+-- @pSplitInstanceBindRegions@ is a pointer to an array of N2 rectangles,
+-- where the image region specified by the rectangle at element i*N+j in
+-- resource instance i is bound to the memory instance j. The blocks of the
+-- memory that are bound to each sparse image block region use an offset in
+-- memory, relative to @memoryOffset@, computed as if the whole image was
 -- being bound to a contiguous range of memory. In other words,
 -- horizontally adjacent image blocks use consecutive blocks of memory,
 -- vertically adjacent image blocks are separated by the number of bytes
@@ -247,7 +214,7 @@
 --     @extent.height@ member of any element of @pSplitInstanceBindRegions@
 --     /must/ either be a multiple of the sparse image block height of all
 --     non-metadata aspects of the image, or else @extent.height@ +
---     @offset.y@ /must/ equal the width of the image subresource
+--     @offset.y@ /must/ equal the height of the image subresource
 --
 -- == Valid Usage (Implicit)
 --
@@ -270,9 +237,11 @@
 -- 'Vulkan.Core10.FundamentalTypes.Rect2D',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data BindImageMemoryDeviceGroupInfo = BindImageMemoryDeviceGroupInfo
-  { -- No documentation found for Nested "VkBindImageMemoryDeviceGroupInfo" "pDeviceIndices"
+  { -- | @pDeviceIndices@ is a pointer to an array of device indices.
     deviceIndices :: Vector Word32
-  , -- No documentation found for Nested "VkBindImageMemoryDeviceGroupInfo" "pSplitInstanceBindRegions"
+  , -- | @pSplitInstanceBindRegions@ is a pointer to an array of
+    -- 'Vulkan.Core10.FundamentalTypes.Rect2D' structures describing which
+    -- regions of the image are attached to each instance of memory.
     splitInstanceBindRegions :: Vector Rect2D
   }
   deriving (Typeable)
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_device_group_creation.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_device_group_creation.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_device_group_creation.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_device_group_creation.hs
@@ -93,10 +93,9 @@
 -- actually written to @pPhysicalDeviceGroupProperties@. If
 -- @pPhysicalDeviceGroupCount@ is less than the number of device groups
 -- available, at most @pPhysicalDeviceGroupCount@ structures will be
--- written. If @pPhysicalDeviceGroupCount@ is smaller than the number of
--- device groups available, 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be
--- returned instead of 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate
--- that not all the available device groups were returned.
+-- written, and 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned
+-- instead of 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate that not
+-- all the available device groups were returned.
 --
 -- Every physical device /must/ be in exactly one device group.
 --
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_external_fence_capabilities.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_external_fence_capabilities.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_external_fence_capabilities.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_external_fence_capabilities.hs
@@ -126,7 +126,7 @@
 data PhysicalDeviceExternalFenceInfo = PhysicalDeviceExternalFenceInfo
   { -- | @handleType@ is a
     -- 'Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.ExternalFenceHandleTypeFlagBits'
-    -- value indicating an external fence handle type for which capabilities
+    -- value specifying an external fence handle type for which capabilities
     -- will be returned.
     --
     -- #VUID-VkPhysicalDeviceExternalFenceInfo-handleType-parameter#
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_external_memory.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_external_memory.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_external_memory.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_external_memory.hs
@@ -41,9 +41,9 @@
 --
 -- Note
 --
--- A 'ExternalMemoryImageCreateInfo' structure with a non-zero @handleType@
--- field must be included in the creation parameters for an image that will
--- be bound to memory that is either exported or imported.
+-- A 'ExternalMemoryImageCreateInfo' structure with a non-zero
+-- @handleTypes@ field must be included in the creation parameters for an
+-- image that will be bound to memory that is either exported or imported.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_external_memory_capabilities.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_external_memory_capabilities.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_external_memory_capabilities.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_external_memory_capabilities.hs
@@ -497,6 +497,14 @@
 --     valid LUID and @deviceNodeMask@ contains a valid node mask, and
 --     'Vulkan.Core10.FundamentalTypes.FALSE' if they do not.
 --
+-- If the 'PhysicalDeviceIDProperties' 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.
+--
 -- @deviceUUID@ /must/ be immutable for a given device across instances,
 -- processes, driver APIs, driver versions, and system reboots.
 --
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_get_memory_requirements2.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_get_memory_requirements2.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_get_memory_requirements2.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_get_memory_requirements2.hs
@@ -465,6 +465,7 @@
 --
 -- 'Vulkan.Core10.MemoryManagement.MemoryRequirements',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoGetMemoryPropertiesKHR VkVideoGetMemoryPropertiesKHR>,
 -- 'getBufferMemoryRequirements2',
 -- 'Vulkan.Extensions.VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2KHR',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.getGeneratedCommandsMemoryRequirementsNV',
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
@@ -100,6 +100,7 @@
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_device_coherent_memory (PhysicalDeviceCoherentMemoryFeaturesAMD)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_color_write_enable (PhysicalDeviceColorWriteEnableFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_compute_shader_derivatives (PhysicalDeviceComputeShaderDerivativesFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conditional_rendering (PhysicalDeviceConditionalRenderingFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conservative_rasterization (PhysicalDeviceConservativeRasterizationPropertiesEXT)
@@ -121,6 +122,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_discard_rectangles (PhysicalDeviceDiscardRectanglePropertiesEXT)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_driver_properties (PhysicalDeviceDriverProperties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_scissor_exclusive (PhysicalDeviceExclusiveScissorFeaturesNV)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state2 (PhysicalDeviceExtendedDynamicState2FeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state (PhysicalDeviceExtendedDynamicStateFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (PhysicalDeviceExternalImageFormatInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_external_memory_host (PhysicalDeviceExternalMemoryHostPropertiesEXT)
@@ -143,6 +145,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_filter_cubic (PhysicalDeviceImageViewImageFormatInfoEXT)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer (PhysicalDeviceImagelessFramebufferFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_index_type_uint8 (PhysicalDeviceIndexTypeUint8FeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_inherited_viewport_scissor (PhysicalDeviceInheritedViewportScissorFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_inline_uniform_block (PhysicalDeviceInlineUniformBlockFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_inline_uniform_block (PhysicalDeviceInlineUniformBlockPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_line_rasterization (PhysicalDeviceLineRasterizationFeaturesEXT)
@@ -169,6 +172,8 @@
 import Vulkan.Core10.DeviceInitialization (PhysicalDeviceProperties)
 import {-# SOURCE #-} Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (PhysicalDeviceProtectedMemoryFeatures)
 import {-# SOURCE #-} Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (PhysicalDeviceProtectedMemoryProperties)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_provoking_vertex (PhysicalDeviceProvokingVertexFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_provoking_vertex (PhysicalDeviceProvokingVertexPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_push_descriptor (PhysicalDevicePushDescriptorPropertiesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_query (PhysicalDeviceRayQueryFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (PhysicalDeviceRayTracingPipelineFeaturesKHR)
@@ -214,12 +219,14 @@
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers (PhysicalDeviceVariablePointersFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_attribute_divisor (PhysicalDeviceVertexAttributeDivisorFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_attribute_divisor (PhysicalDeviceVertexAttributeDivisorPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state (PhysicalDeviceVertexInputDynamicStateFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Core12 (PhysicalDeviceVulkan11Features)
 import {-# SOURCE #-} Vulkan.Core12 (PhysicalDeviceVulkan11Properties)
 import {-# SOURCE #-} Vulkan.Core12 (PhysicalDeviceVulkan12Features)
 import {-# SOURCE #-} Vulkan.Core12 (PhysicalDeviceVulkan12Properties)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model (PhysicalDeviceVulkanMemoryModelFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_workgroup_memory_explicit_layout (PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_ycbcr_2plane_444_formats (PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_ycbcr_image_arrays (PhysicalDeviceYcbcrImageArraysFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_zero_initialize_workgroup_memory (PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR)
 import Vulkan.Core10.Handles (PhysicalDevice_T)
@@ -301,10 +308,10 @@
 --
 -- = Description
 --
--- Each structure in @pProperties@ and its @pNext@ chain contain members
--- corresponding to properties or implementation-dependent limits.
--- 'getPhysicalDeviceProperties2' writes each member to a value indicating
--- the value of that property or limit.
+-- Each structure in @pProperties@ and its @pNext@ chain contains members
+-- corresponding to implementation-dependent properties, behaviors, or
+-- limits. 'getPhysicalDeviceProperties2' fills in each member to specify
+-- the corresponding value for the implementation.
 --
 -- == Valid Usage (Implicit)
 --
@@ -608,7 +615,7 @@
 getPhysicalDeviceSparseImageFormatProperties2 :: forall io
                                                . (MonadIO io)
                                               => -- | @physicalDevice@ is the physical device from which to query the sparse
-                                                 -- image capabilities.
+                                                 -- image format properties.
                                                  PhysicalDevice
                                               -> -- | @pFormatInfo@ is a pointer to a 'PhysicalDeviceSparseImageFormatInfo2'
                                                  -- structure containing input parameters to the command.
@@ -635,10 +642,6 @@
 -- | VkPhysicalDeviceFeatures2 - Structure describing the fine-grained
 -- features that can be supported by an implementation
 --
--- = Members
---
--- The 'PhysicalDeviceFeatures2' structure is defined as:
---
 -- = Description
 --
 -- The @pNext@ chain of this structure is used to extend the structure with
@@ -676,7 +679,12 @@
   getNext PhysicalDeviceFeatures2{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends PhysicalDeviceFeatures2 e => b) -> Maybe b
   extends _ f
+    | Just Refl <- eqT @e @PhysicalDeviceProvokingVertexFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceInheritedViewportScissorFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceSynchronization2FeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceColorWriteEnableFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceVertexInputDynamicStateFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceMutableDescriptorTypeFeaturesVALVE = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFragmentShadingRateEnumsFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderTerminateInvocationFeaturesKHR = Just f
@@ -689,6 +697,7 @@
     | Just Refl <- eqT @e @PhysicalDeviceRobustness2FeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDiagnosticsConfigFeaturesNV = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceExtendedDynamicState2FeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceExtendedDynamicStateFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCustomBorderColorFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCoherentMemoryFeaturesAMD = Just f
@@ -833,6 +842,7 @@
 --     'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PhysicalDevicePointClippingProperties',
 --     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetPropertiesKHR',
 --     '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_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelinePropertiesKHR',
 --     'Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV',
@@ -883,6 +893,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 @PhysicalDeviceProvokingVertexPropertiesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFragmentShadingRateEnumsPropertiesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFragmentShadingRatePropertiesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDevicePortabilitySubsetPropertiesKHR = Just f
@@ -969,9 +980,13 @@
 -- -   #VUID-VkFormatProperties2-sType-sType# @sType@ /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_FORMAT_PROPERTIES_2'
 --
--- -   #VUID-VkFormatProperties2-pNext-pNext# @pNext@ /must/ be @NULL@ or a
---     pointer to a valid instance of
---     'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.DrmFormatModifierPropertiesListEXT'
+-- -   #VUID-VkFormatProperties2-pNext-pNext# Each @pNext@ member of any
+--     structure (including this one) in the @pNext@ chain /must/ be either
+--     @NULL@ or a pointer to a valid instance of
+--     'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.DrmFormatModifierPropertiesListEXT',
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileKHR VkVideoProfileKHR>,
+--     or
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfilesKHR VkVideoProfilesKHR>
 --
 -- -   #VUID-VkFormatProperties2-sType-unique# The @sType@ value of each
 --     struct in the @pNext@ chain /must/ be unique
@@ -1321,9 +1336,10 @@
 -- -   #VUID-VkQueueFamilyProperties2-pNext-pNext# Each @pNext@ member of
 --     any structure (including this one) in the @pNext@ chain /must/ be
 --     either @NULL@ or a pointer to a valid instance of
---     'Vulkan.Extensions.VK_KHR_synchronization2.QueueFamilyCheckpointProperties2NV'
+--     'Vulkan.Extensions.VK_KHR_synchronization2.QueueFamilyCheckpointProperties2NV',
+--     'Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.QueueFamilyCheckpointPropertiesNV',
 --     or
---     'Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.QueueFamilyCheckpointPropertiesNV'
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoQueueFamilyProperties2KHR VkVideoQueueFamilyProperties2KHR>
 --
 -- -   #VUID-VkQueueFamilyProperties2-sType-unique# The @sType@ value of
 --     each struct in the @pNext@ chain /must/ be unique
@@ -1548,8 +1564,9 @@
     -- #VUID-VkPhysicalDeviceSparseImageFormatInfo2-type-parameter# @type@
     -- /must/ be a valid 'Vulkan.Core10.Enums.ImageType.ImageType' value
     type' :: ImageType
-  , -- | @samples@ is the number of samples per texel as defined in
-    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'.
+  , -- | @samples@ is a
+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
+    -- specifying the number of samples per texel.
     --
     -- #VUID-VkPhysicalDeviceSparseImageFormatInfo2-samples-01095# @samples@
     -- /must/ be a bit value that is set in
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_maintenance2.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_maintenance2.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_maintenance2.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_maintenance2.hs
@@ -56,6 +56,15 @@
 -- | VkInputAttachmentAspectReference - Structure specifying a subpass\/input
 -- attachment pair and an aspect mask that /can/ be read.
 --
+-- = Description
+--
+-- This structure specifies an aspect mask for a specific input attachment
+-- of a specific subpass in the render pass.
+--
+-- @subpass@ and @inputAttachmentIndex@ index into the render pass as:
+--
+-- > pname:pCreateInfo->pSubpasses[subpass].pInputAttachments[inputAttachmentIndex]
+--
 -- == Valid Usage (Implicit)
 --
 -- = See Also
@@ -135,6 +144,10 @@
 --
 -- = Description
 --
+-- To specify which aspects of an input attachment /can/ be read, add a
+-- 'RenderPassInputAttachmentAspectCreateInfo' structure to the @pNext@
+-- chain of the 'Vulkan.Core10.Pass.RenderPassCreateInfo' structure:
+--
 -- An application /can/ access any aspect of an input attachment that does
 -- not have a specified aspect mask in the @pAspectReferences@ array.
 -- Otherwise, an application /must/ not access aspect(s) of an input
@@ -195,17 +208,15 @@
 -- | VkPhysicalDevicePointClippingProperties - Structure describing the point
 -- clipping behavior supported by an implementation
 --
--- = Members
---
--- The members of the 'PhysicalDevicePointClippingProperties' structure
--- describe the following implementation-dependent limit:
---
 -- = Description
 --
 -- If the 'PhysicalDevicePointClippingProperties' structure is included in
--- the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- 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)
 --
@@ -273,9 +284,9 @@
 -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlags',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data ImageViewUsageCreateInfo = ImageViewUsageCreateInfo
-  { -- | @usage@ is a bitmask describing the allowed usages of the image view.
-    -- See 'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits' for a
-    -- description of the supported bits.
+  { -- | @usage@ is a bitmask of
+    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits' specifying
+    -- allowed usages of the image view.
     --
     -- #VUID-VkImageViewUsageCreateInfo-usage-parameter# @usage@ /must/ be a
     -- valid combination of
@@ -331,7 +342,7 @@
 -- included in the @pNext@ chain of
 -- 'Vulkan.Core10.Pipeline.PipelineTessellationStateCreateInfo', it
 -- controls the origin of the tessellation domain. If this structure is not
--- present, it is as if @domainOrigin@ were
+-- present, it is as if @domainOrigin@ was
 -- 'Vulkan.Core11.Enums.TessellationDomainOrigin.TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT'.
 --
 -- == Valid Usage (Implicit)
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_maintenance3.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_maintenance3.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_maintenance3.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_maintenance3.hs
@@ -140,17 +140,15 @@
 -- | VkPhysicalDeviceMaintenance3Properties - Structure describing descriptor
 -- set properties
 --
--- = Members
---
--- The members of the 'PhysicalDeviceMaintenance3Properties' structure
--- describe the following implementation-dependent limits:
---
 -- = Description
 --
 -- If the 'PhysicalDeviceMaintenance3Properties' structure is included in
--- the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- 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)
 --
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_multiview.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_multiview.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_multiview.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_multiview.hs
@@ -49,11 +49,15 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceMultiviewFeatures' structure describe
--- the following features:
+-- This structure describes the following features:
 --
 -- = Description
 --
+-- -   @sType@ is the type of this structure.
+--
+-- -   @pNext@ is @NULL@ or a pointer to a structure extending this
+--     structure.
+--
 -- -   #extension-features-multiview# @multiview@ specifies whether the
 --     implementation supports multiview rendering within a render pass. If
 --     this feature is not enabled, the view mask of each subpass /must/
@@ -76,11 +80,14 @@
 --     tessellation shaders.
 --
 -- If the 'PhysicalDeviceMultiviewFeatures' structure is included in the
--- @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether each feature is supported.
--- 'PhysicalDeviceMultiviewFeatures' /can/ also be included in the @pNext@
--- chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable the features.
+-- @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. 'PhysicalDeviceMultiviewFeatures' /can/ also be used in the
+-- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively
+-- enable these features.
 --
 -- == Valid Usage
 --
@@ -159,17 +166,15 @@
 -- | VkPhysicalDeviceMultiviewProperties - Structure describing multiview
 -- limits that can be supported by an implementation
 --
--- = Members
---
--- The members of the 'PhysicalDeviceMultiviewProperties' structure
--- describe the following implementation-dependent limits:
---
 -- = Description
 --
 -- If the 'PhysicalDeviceMultiviewProperties' structure is included in the
--- @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- @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)
 --
@@ -228,8 +233,8 @@
            zero
 
 
--- | VkRenderPassMultiviewCreateInfo - Structure containing multiview info
--- for all subpasses
+-- | VkRenderPassMultiviewCreateInfo - Structure containing multiview
+-- information for all subpasses
 --
 -- = Description
 --
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_sampler_ycbcr_conversion.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_sampler_ycbcr_conversion.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_sampler_ycbcr_conversion.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_sampler_ycbcr_conversion.hs
@@ -670,7 +670,9 @@
 -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data BindImagePlaneMemoryInfo = BindImagePlaneMemoryInfo
-  { -- | @planeAspect@ is the aspect of the disjoint image plane to bind.
+  { -- | @planeAspect@ is a
+    -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits' value
+    -- specifying the aspect of the disjoint image plane to bind.
     planeAspect :: ImageAspectFlagBits }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
@@ -755,7 +757,9 @@
 -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data ImagePlaneMemoryRequirementsInfo = ImagePlaneMemoryRequirementsInfo
-  { -- | @planeAspect@ is the aspect corresponding to the image plane to query.
+  { -- | @planeAspect@ is a
+    -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits' value
+    -- specifying the aspect corresponding to the image plane to query.
     planeAspect :: ImageAspectFlagBits }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
@@ -796,12 +800,23 @@
 
 
 -- | VkPhysicalDeviceSamplerYcbcrConversionFeatures - Structure describing
--- Y’CbCr conversion features that can be supported by an implementation
+-- Y′CBCR conversion features that can be supported by an implementation
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceSamplerYcbcrConversionFeatures'
--- structure describe the following feature:
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceSamplerYcbcrConversionFeatures' 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. 'PhysicalDeviceSamplerYcbcrConversionFeatures' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_shader_draw_parameters.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_shader_draw_parameters.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_shader_draw_parameters.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_shader_draw_parameters.hs
@@ -36,12 +36,21 @@
 -- shader draw parameter features that can be supported by an
 -- implementation
 --
+-- = Members
+--
+-- This structure describes the following feature:
+--
 -- = Description
 --
 -- If the 'PhysicalDeviceShaderDrawParametersFeatures' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with a value indicating whether the feature is supported.
+-- 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. 'PhysicalDeviceShaderDrawParametersFeatures' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_variable_pointers.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_variable_pointers.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_variable_pointers.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_variable_pointers.hs
@@ -37,11 +37,15 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceVariablePointersFeatures' structure
--- describe the following features:
+-- This structure describes the following features:
 --
 -- = Description
 --
+-- -   @sType@ is the type of this structure.
+--
+-- -   @pNext@ is @NULL@ or a pointer to a structure extending this
+--     structure.
+--
 -- -   #extension-features-variablePointersStorageBuffer#
 --     @variablePointersStorageBuffer@ specifies whether the implementation
 --     supports the SPIR-V @VariablePointersStorageBuffer@ capability. When
@@ -55,12 +59,14 @@
 --     not declare the @VariablePointers@ capability.
 --
 -- If the 'PhysicalDeviceVariablePointersFeatures' structure is included in
--- the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether each feature is supported.
--- 'PhysicalDeviceVariablePointersFeatures' /can/ also be included in the
--- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable the
--- features.
+-- 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. 'PhysicalDeviceVariablePointersFeatures' /can/ also be used
+-- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage
 --
diff --git a/src/Vulkan/Core12.hs b/src/Vulkan/Core12.hs
--- a/src/Vulkan/Core12.hs
+++ b/src/Vulkan/Core12.hs
@@ -95,14 +95,14 @@
 import Vulkan.Core10.Enums.StructureType (StructureType)
 import Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlags)
 import Vulkan.Core10.APIConstants (UUID_SIZE)
-import Vulkan.Version (pattern MAKE_VERSION)
+import Vulkan.Version (pattern MAKE_API_VERSION)
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES))
 import Vulkan.Core10.Enums.StructureType (StructureType(..))
 pattern API_VERSION_1_2 :: Word32
-pattern API_VERSION_1_2 = MAKE_VERSION 1 2 0
+pattern API_VERSION_1_2 = MAKE_API_VERSION 1 2 0
 
 
 -- | VkPhysicalDeviceVulkan11Features - Structure describing the Vulkan 1.1
@@ -110,17 +110,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceVulkan11Features' structure describe
--- the following features:
+-- This structure describes the following features:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceVulkan11Features' structure is included in the
--- @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether each feature is supported.
--- 'PhysicalDeviceVulkan11Features' /can/ also be used in the @pNext@ chain
--- of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable the features.
+-- @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. 'PhysicalDeviceVulkan11Features' /can/ also be used in the
+-- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively
+-- enable these features.
 --
 -- == Valid Usage (Implicit)
 --
@@ -290,8 +292,18 @@
 --
 -- = Description
 --
--- The members of 'PhysicalDeviceVulkan11Properties' /must/ have the same
--- values as the corresponding members of
+-- If the 'PhysicalDeviceVulkan11Properties' 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.
+--
+-- These properties correspond to Vulkan 1.1 functionality.
+--
+-- The members of 'PhysicalDeviceVulkan11Properties' have the same values
+-- as the corresponding members of
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties',
 -- 'Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup.PhysicalDeviceSubgroupProperties',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PhysicalDevicePointClippingProperties',
@@ -497,11 +509,15 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceVulkan12Features' structure describe
--- the following features:
+-- This structure describes the following features:
 --
 -- = Description
 --
+-- -   @sType@ is the type of this structure.
+--
+-- -   @pNext@ is @NULL@ or a pointer to a structure extending this
+--     structure.
+--
 -- -   #features-samplerMirrorClampToEdge# @samplerMirrorClampToEdge@
 --     indicates whether the implementation supports the
 --     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE'
@@ -806,8 +822,8 @@
 --     vectors of these types in
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operations group operations>
 --     with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-subgroup subgroup scope>if
---     the implementation supports the types.
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-subgroup subgroup scope>,
+--     if the implementation supports the types.
 --
 -- -   #features-separateDepthStencilLayouts# @separateDepthStencilLayouts@
 --     indicates whether the implementation supports a
@@ -895,11 +911,14 @@
 --     constants.
 --
 -- If the 'PhysicalDeviceVulkan12Features' structure is included in the
--- @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether each feature is supported.
--- 'PhysicalDeviceVulkan12Features' /can/ also be used in the @pNext@ chain
--- of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable the features.
+-- @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. 'PhysicalDeviceVulkan12Features' /can/ also be used in the
+-- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively
+-- enable these features.
 --
 -- == Valid Usage (Implicit)
 --
@@ -1233,6 +1252,16 @@
 -- device properties for functionality promoted to Vulkan 1.2
 --
 -- = Description
+--
+-- If the 'PhysicalDeviceVulkan12Properties' 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.
+--
+-- These properties correspond to Vulkan 1.2 functionality.
 --
 -- The members of 'PhysicalDeviceVulkan12Properties' /must/ have the same
 -- values as the corresponding members of
diff --git a/src/Vulkan/Core12/Enums/DescriptorBindingFlagBits.hs b/src/Vulkan/Core12/Enums/DescriptorBindingFlagBits.hs
--- a/src/Vulkan/Core12/Enums/DescriptorBindingFlagBits.hs
+++ b/src/Vulkan/Core12/Enums/DescriptorBindingFlagBits.hs
@@ -82,13 +82,13 @@
 -- binding. This /must/ only be used for the last binding in the descriptor
 -- set layout (i.e. the binding with the largest value of @binding@). For
 -- the purposes of counting against limits such as @maxDescriptorSet@* and
--- @maxPerStageDescriptor@*, the full value of @descriptorCount@ is counted
--- , except for descriptor bindings with a descriptor type of
+-- @maxPerStageDescriptor@*, the full value of @descriptorCount@ is
+-- counted, except for descriptor bindings with a descriptor type of
 -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
 -- where @descriptorCount@ specifies the upper bound on the byte size of
 -- the binding, thus it counts against the
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxInlineUniformBlockSize maxInlineUniformBlockSize>
--- limit instead. .
+-- limit instead.
 pattern DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT   = DescriptorBindingFlagBits 0x00000008
 
 conNameDescriptorBindingFlagBits :: String
diff --git a/src/Vulkan/Core12/Enums/DriverId.hs b/src/Vulkan/Core12/Enums/DriverId.hs
--- a/src/Vulkan/Core12/Enums/DriverId.hs
+++ b/src/Vulkan/Core12/Enums/DriverId.hs
@@ -14,6 +14,8 @@
                                               , DRIVER_ID_BROADCOM_PROPRIETARY
                                               , DRIVER_ID_MESA_LLVMPIPE
                                               , DRIVER_ID_MOLTENVK
+                                              , DRIVER_ID_COREAVI_PROPRIETARY
+                                              , DRIVER_ID_JUICE_PROPRIETARY
                                               , ..
                                               )) where
 
@@ -79,6 +81,10 @@
 pattern DRIVER_ID_MESA_LLVMPIPE             = DriverId 13
 -- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_MOLTENVK"
 pattern DRIVER_ID_MOLTENVK                  = DriverId 14
+-- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_COREAVI_PROPRIETARY"
+pattern DRIVER_ID_COREAVI_PROPRIETARY       = DriverId 15
+-- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_JUICE_PROPRIETARY"
+pattern DRIVER_ID_JUICE_PROPRIETARY         = DriverId 16
 {-# complete DRIVER_ID_AMD_PROPRIETARY,
              DRIVER_ID_AMD_OPEN_SOURCE,
              DRIVER_ID_MESA_RADV,
@@ -92,7 +98,9 @@
              DRIVER_ID_GGP_PROPRIETARY,
              DRIVER_ID_BROADCOM_PROPRIETARY,
              DRIVER_ID_MESA_LLVMPIPE,
-             DRIVER_ID_MOLTENVK :: DriverId #-}
+             DRIVER_ID_MOLTENVK,
+             DRIVER_ID_COREAVI_PROPRIETARY,
+             DRIVER_ID_JUICE_PROPRIETARY :: DriverId #-}
 
 conNameDriverId :: String
 conNameDriverId = "DriverId"
@@ -116,6 +124,8 @@
   , (DRIVER_ID_BROADCOM_PROPRIETARY     , "BROADCOM_PROPRIETARY")
   , (DRIVER_ID_MESA_LLVMPIPE            , "MESA_LLVMPIPE")
   , (DRIVER_ID_MOLTENVK                 , "MOLTENVK")
+  , (DRIVER_ID_COREAVI_PROPRIETARY      , "COREAVI_PROPRIETARY")
+  , (DRIVER_ID_JUICE_PROPRIETARY        , "JUICE_PROPRIETARY")
   ]
 
 instance Show DriverId where
diff --git a/src/Vulkan/Core12/Enums/ShaderFloatControlsIndependence.hs b/src/Vulkan/Core12/Enums/ShaderFloatControlsIndependence.hs
--- a/src/Vulkan/Core12/Enums/ShaderFloatControlsIndependence.hs
+++ b/src/Vulkan/Core12/Enums/ShaderFloatControlsIndependence.hs
@@ -15,7 +15,7 @@
 import GHC.Read (Read(readPrec))
 import GHC.Show (Show(showsPrec))
 
--- | VkShaderFloatControlsIndependence - Enum specifying whether, and how,
+-- | VkShaderFloatControlsIndependence - Bitmask specifying whether, and how,
 -- shader float controls can be set separately
 --
 -- = See Also
diff --git a/src/Vulkan/Core12/Promoted_From_VK_EXT_descriptor_indexing.hs b/src/Vulkan/Core12/Promoted_From_VK_EXT_descriptor_indexing.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_EXT_descriptor_indexing.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_EXT_descriptor_indexing.hs
@@ -63,18 +63,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceDescriptorIndexingFeatures' structure
--- describe the following features:
+-- This structure describes the following features:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceDescriptorIndexingFeatures' structure is included
--- in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether each feature is supported.
--- 'PhysicalDeviceDescriptorIndexingFeatures' /can/ also be included in the
--- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable
--- features.
+-- 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. 'PhysicalDeviceDescriptorIndexingFeatures' /can/ also be used
+-- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
@@ -384,17 +385,15 @@
 -- descriptor indexing properties that can be supported by an
 -- implementation
 --
--- = Members
---
--- The members of the 'PhysicalDeviceDescriptorIndexingProperties'
--- structure describe the following implementation-dependent limits:
---
 -- = Description
 --
 -- If the 'PhysicalDeviceDescriptorIndexingProperties' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- 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)
 --
@@ -1004,12 +1003,16 @@
 --
 -- = Description
 --
--- If the create info includes a variable-sized descriptor, then
--- @supported@ is determined assuming the requested size of the
--- variable-sized descriptor, and @maxVariableDescriptorCount@ is set to
--- the maximum size of that descriptor that /can/ be successfully created
--- (which is greater than or equal to the requested size passed in). If the
--- create info does not include a variable-sized descriptor or if the
+-- If the 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutCreateInfo'
+-- structure specified in
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.getDescriptorSetLayoutSupport'::@pCreateInfo@
+-- includes a variable-sized descriptor, then @supported@ is determined
+-- assuming the requested size of the variable-sized descriptor, and
+-- @maxVariableDescriptorCount@ is set to the maximum size of that
+-- descriptor that /can/ be successfully created (which is greater than or
+-- equal to the requested size passed in). If the
+-- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutCreateInfo' structure
+-- does not include a variable-sized descriptor, or if the
 -- 'PhysicalDeviceDescriptorIndexingFeatures'::@descriptorBindingVariableDescriptorCount@
 -- feature is not enabled, then @maxVariableDescriptorCount@ is set to
 -- zero. For the purposes of this command, a variable-sized descriptor
diff --git a/src/Vulkan/Core12/Promoted_From_VK_EXT_host_query_reset.hs b/src/Vulkan/Core12/Promoted_From_VK_EXT_host_query_reset.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_EXT_host_query_reset.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_EXT_host_query_reset.hs
@@ -125,18 +125,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceHostQueryResetFeatures' structure
--- describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceHostQueryResetFeatures' structure is included in
--- the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceHostQueryResetFeatures' /can/ also be included in the
--- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable
--- features.
+-- 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. 'PhysicalDeviceHostQueryResetFeatures' /can/ also be used in
+-- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Core12/Promoted_From_VK_EXT_sampler_filter_minmax.hs b/src/Vulkan/Core12/Promoted_From_VK_EXT_sampler_filter_minmax.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_EXT_sampler_filter_minmax.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_EXT_sampler_filter_minmax.hs
@@ -38,17 +38,15 @@
 -- | VkPhysicalDeviceSamplerFilterMinmaxProperties - Structure describing
 -- sampler filter minmax limits that can be supported by an implementation
 --
--- = Members
---
--- The members of the 'PhysicalDeviceSamplerFilterMinmaxProperties'
--- structure describe the following implementation-dependent limits:
---
 -- = Description
 --
 -- If the 'PhysicalDeviceSamplerFilterMinmaxProperties' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- 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.
 --
 -- If @filterMinmaxSingleComponentFormats@ is
 -- 'Vulkan.Core10.FundamentalTypes.TRUE', the following formats /must/
@@ -56,7 +54,7 @@
 -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT'
 -- feature with 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', if
 -- they support
--- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_BIT'.
+-- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_BIT':
 --
 -- If the format is a depth\/stencil format, this bit only specifies that
 -- the depth aspect (not the stencil aspect) of an image of this format
diff --git a/src/Vulkan/Core12/Promoted_From_VK_EXT_scalar_block_layout.hs b/src/Vulkan/Core12/Promoted_From_VK_EXT_scalar_block_layout.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_EXT_scalar_block_layout.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_EXT_scalar_block_layout.hs
@@ -31,18 +31,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceScalarBlockLayoutFeatures' structure
--- describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceScalarBlockLayoutFeatures' structure is included
--- in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceScalarBlockLayoutFeatures' /can/ also be included in the
--- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable this
--- feature.
+-- 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. 'PhysicalDeviceScalarBlockLayoutFeatures' /can/ also be used
+-- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Core12/Promoted_From_VK_EXT_separate_stencil_usage.hs b/src/Vulkan/Core12/Promoted_From_VK_EXT_separate_stencil_usage.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_EXT_separate_stencil_usage.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_EXT_separate_stencil_usage.hs
@@ -40,7 +40,7 @@
 -- stencil aspect of the image /must/ only be used as specified by
 -- @stencilUsage@. When this structure is not included in the @pNext@ chain
 -- of 'Vulkan.Core10.Image.ImageCreateInfo', the stencil aspect of an image
--- /must/ only be used as specified
+-- /must/ only be used as specified by
 -- 'Vulkan.Core10.Image.ImageCreateInfo'::@usage@. Use of other aspects of
 -- an image are unaffected by this structure.
 --
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_8bit_storage.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_8bit_storage.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_8bit_storage.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_8bit_storage.hs
@@ -29,6 +29,22 @@
 -- | VkPhysicalDevice8BitStorageFeatures - Structure describing features
 -- supported by VK_KHR_8bit_storage
 --
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDevice8BitStorageFeatures' 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. 'PhysicalDevice8BitStorageFeatures' /can/ also be used in the
+-- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively
+-- enable these features.
+--
 -- == Valid Usage (Implicit)
 --
 -- = See Also
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_buffer_device_address.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_buffer_device_address.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_buffer_device_address.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_buffer_device_address.hs
@@ -278,8 +278,7 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceBufferDeviceAddressFeatures' structure
--- describe the following features:
+-- This structure describes the following features:
 --
 -- = Description
 --
@@ -292,12 +291,14 @@
 -- See 'getBufferDeviceAddress' for more information.
 --
 -- If the 'PhysicalDeviceBufferDeviceAddressFeatures' structure is included
--- in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceBufferDeviceAddressFeatures' /can/ also be included in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable
--- features.
+-- 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. 'PhysicalDeviceBufferDeviceAddressFeatures' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
@@ -547,7 +548,7 @@
 --
 -- In most cases, it is expected that a non-zero @opaqueAddress@ is an
 -- address retrieved from 'getDeviceMemoryOpaqueCaptureAddress' on an
--- identically created memory allocation. If this is not the case, it
+-- identically created memory allocation. If this is not the case, it is
 -- likely that
 -- 'Vulkan.Core10.Enums.Result.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS' errors
 -- will occur.
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_create_renderpass2.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_create_renderpass2.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_create_renderpass2.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_create_renderpass2.hs
@@ -316,8 +316,8 @@
 --     have been created with a @usage@ value including
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
 --
--- -   #VUID-vkCmdBeginRenderPass2-initialLayout-03100# If any of the
---     @initialLayout@ members of the
+-- -   #VUID-vkCmdBeginRenderPass2-initialLayout-03100# If the
+--     @initialLayout@ member of any of the
 --     'Vulkan.Core10.Pass.AttachmentDescription' structures specified when
 --     creating the render pass specified in the @renderPass@ member of
 --     @pRenderPassBegin@ is not
@@ -620,21 +620,25 @@
 -- @initialLayout@ and @finalLayout@ /can/ be set to a layout that only
 -- specifies the layout of the depth aspect.
 --
--- If @format@ is a depth\/stencil format, and @initialLayout@ only
--- specifies the initial layout of the depth aspect of the attachment, the
--- initial layout of the stencil aspect is specified by the
--- @stencilInitialLayout@ member of a
+-- If the @pNext@ chain includes a
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentDescriptionStencilLayout'
--- structure included in the @pNext@ chain. Otherwise, @initialLayout@
--- describes the initial layout for all relevant image aspects.
+-- structure, then the @stencilInitialLayout@ and @stencilFinalLayout@
+-- members specify the initial and final layouts of the stencil aspect of a
+-- depth\/stencil format, and @initialLayout@ and @finalLayout@ only apply
+-- to the depth aspect. For depth-only formats, the
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentDescriptionStencilLayout'
+-- structure is ignored. For stencil-only formats, the initial and final
+-- layouts of the stencil aspect are taken from the
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentDescriptionStencilLayout'
+-- structure if present, or @initialLayout@ and @finalLayout@ if not
+-- present.
 --
--- If @format@ is a depth\/stencil format, and @finalLayout@ only specifies
--- the final layout of the depth aspect of the attachment, the final layout
--- of the stencil aspect is specified by the @stencilFinalLayout@ member of
--- a
+-- If @format@ is a depth\/stencil format, and either @initialLayout@ or
+-- @finalLayout@ does not specify a layout for the stencil aspect, then the
+-- application /must/ specify the initial and final layouts of the stencil
+-- aspect by including a
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentDescriptionStencilLayout'
--- structure included in the @pNext@ chain. Otherwise, @finalLayout@
--- describes the final layout for all relevant image aspects.
+-- structure in the @pNext@ chain.
 --
 -- == Valid Usage
 --
@@ -818,8 +822,9 @@
   , -- | @format@ is a 'Vulkan.Core10.Enums.Format.Format' value specifying the
     -- format of the image that will be used for the attachment.
     format :: Format
-  , -- | @samples@ is the number of samples of the image as defined in
-    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'.
+  , -- | @samples@ is a
+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
+    -- specifying the number of samples of the image.
     samples :: SampleCountFlagBits
   , -- | @loadOp@ is a 'Vulkan.Core10.Enums.AttachmentLoadOp.AttachmentLoadOp'
     -- value specifying how the contents of color and depth components of the
@@ -1032,8 +1037,7 @@
   { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
     next :: Chain es
   , -- | @attachment@ is either an integer value identifying an attachment at the
-    -- corresponding index in
-    -- 'Vulkan.Core10.Pass.RenderPassCreateInfo'::@pAttachments@, or
+    -- corresponding index in 'RenderPassCreateInfo2'::@pAttachments@, or
     -- 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' to signify that this
     -- attachment is not used.
     attachment :: Word32
@@ -1213,8 +1217,8 @@
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', they /must/ have the
 --     same sample count
 --
--- -   #VUID-VkSubpassDescription2-attachment-03073# The @attachment@
---     member of any element of @pPreserveAttachments@ /must/ not be
+-- -   #VUID-VkSubpassDescription2-attachment-03073# Each element of
+--     @pPreserveAttachments@ /must/ not be
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'
 --
 -- -   #VUID-VkSubpassDescription2-pPreserveAttachments-03074# Any given
@@ -1222,8 +1226,8 @@
 --     any other member of the subpass description
 --
 -- -   #VUID-VkSubpassDescription2-layout-02528# If any attachment is used
---     by more than one 'Vulkan.Core10.Pass.AttachmentReference' member,
---     then each use /must/ use the same @layout@
+--     by more than one 'AttachmentReference2' member, then each use /must/
+--     use the same @layout@
 --
 -- -   #VUID-VkSubpassDescription2-None-04439# Attachments /must/ follow
 --     the
@@ -1336,13 +1340,13 @@
     -- structures defining the input attachments for this subpass and their
     -- layouts.
     inputAttachments :: Vector (SomeStruct AttachmentReference2)
-  , -- | @pColorAttachments@ is a pointer to an array of 'AttachmentReference2'
-    -- structures defining the color attachments for this subpass and their
-    -- layouts.
-    colorAttachments :: Vector (SomeStruct AttachmentReference2)
-  , -- | @pResolveAttachments@ is an optional array of @colorAttachmentCount@
-    -- 'AttachmentReference2' structures defining the resolve attachments for
+  , -- | @pColorAttachments@ is a pointer to an array of @colorAttachmentCount@
+    -- 'AttachmentReference2' structures defining the color attachments for
     -- this subpass and their layouts.
+    colorAttachments :: Vector (SomeStruct AttachmentReference2)
+  , -- | @pResolveAttachments@ is @NULL@ or a pointer to an array of
+    -- @colorAttachmentCount@ 'AttachmentReference2' structures defining the
+    -- resolve attachments for this subpass and their layouts.
     resolveAttachments :: Vector (SomeStruct AttachmentReference2)
   , -- | @pDepthStencilAttachment@ is a pointer to a 'AttachmentReference2'
     -- structure specifying the depth\/stencil attachment for this subpass and
@@ -1867,6 +1871,38 @@
 --     contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
 --
+-- -   #VUID-VkRenderPassCreateInfo2-rasterizationSamples-04905# If the
+--     pipeline is being created with fragment shader state, and the
+--     VK_QCOM_render_pass_shader_resolve extension is enabled, and if
+--     subpass has any input attachments, and if the subpass description
+--     contains
+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM',
+--     then the sample count of the input attachments /must/ equal
+--     @rasterizationSamples@
+--
+-- -   #VUID-VkRenderPassCreateInfo2-sampleShadingEnable-04906# If the
+--     pipeline is being created with fragment shader state, and the
+--     VK_QCOM_render_pass_shader_resolve extension is enabled, and if the
+--     subpass description contains
+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM',
+--     then @sampleShadingEnable@ /must/ be false
+--
+-- -   #VUID-VkRenderPassCreateInfo2-flags-04907# If @flags@ includes
+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM',
+--     and if @pResolveAttachments@ is not @NULL@, then each resolve
+--     attachment /must/ be 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'
+--
+-- -   #VUID-VkRenderPassCreateInfo2-flags-04908# If @flags@ includes
+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM',
+--     and if @pDepthStencilResolveAttachmentKHR@ is not @NULL@, then the
+--     depth\/stencil resolve attachment /must/ be
+--     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'
+--
+-- -   #VUID-VkRenderPassCreateInfo2-flags-04909# If @flags@ includes
+--     'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM',
+--     then the subpass /must/ be the last subpass in a subpass dependency
+--     chain
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkRenderPassCreateInfo2-sType-sType# @sType@ /must/ be
@@ -2010,7 +2046,7 @@
            mempty
 
 
--- | VkSubpassBeginInfo - Structure specifying subpass begin info
+-- | VkSubpassBeginInfo - Structure specifying subpass begin information
 --
 -- == Valid Usage (Implicit)
 --
@@ -2067,7 +2103,7 @@
            zero
 
 
--- | VkSubpassEndInfo - Structure specifying subpass end info
+-- | VkSubpassEndInfo - Structure specifying subpass end information
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_depth_stencil_resolve.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_depth_stencil_resolve.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_depth_stencil_resolve.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_depth_stencil_resolve.hs
@@ -48,10 +48,15 @@
 -- depth\/stencil resolve properties that can be supported by an
 -- implementation
 --
--- = Members
+-- = Description
 --
--- The members of the 'PhysicalDeviceDepthStencilResolveProperties'
--- structure describe the following implementation-dependent limits:
+-- If the 'PhysicalDeviceDepthStencilResolveProperties' 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)
 --
@@ -256,17 +261,18 @@
 -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data SubpassDescriptionDepthStencilResolve = SubpassDescriptionDepthStencilResolve
-  { -- | @depthResolveMode@ is a bitmask of
-    -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits' describing
-    -- the depth resolve mode.
+  { -- | @depthResolveMode@ is a
+    -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits' value
+    -- describing the depth resolve mode.
     depthResolveMode :: ResolveModeFlagBits
-  , -- | @stencilResolveMode@ is a bitmask of
-    -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits' describing
-    -- the stencil resolve mode.
+  , -- | @stencilResolveMode@ is a
+    -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits' value
+    -- describing the stencil resolve mode.
     stencilResolveMode :: ResolveModeFlagBits
-  , -- | @pDepthStencilResolveAttachment@ is an optional
-    -- 'Vulkan.Core10.Pass.AttachmentReference' structure defining the
-    -- depth\/stencil resolve attachment for this subpass and its layout.
+  , -- | @pDepthStencilResolveAttachment@ is @NULL@ or a pointer to a
+    -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentReference2'
+    -- structure defining the depth\/stencil resolve attachment for this
+    -- subpass and its layout.
     depthStencilResolveAttachment :: Maybe (SomeStruct AttachmentReference2)
   }
   deriving (Typeable)
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
@@ -31,8 +31,8 @@
   "dynamic" mkVkCmdDrawIndirectCount
   :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()
 
--- | vkCmdDrawIndirectCount - Perform an indirect draw with the draw count
--- sourced from a buffer
+-- | vkCmdDrawIndirectCount - Draw primitives with indirect parameters and
+-- draw count
 --
 -- = Description
 --
@@ -143,9 +143,9 @@
 -- -   #VUID-vkCmdDrawIndirectCount-commandBuffer-02701# If the
 --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
 --     point used by this command requires any dynamic state, that state
---     /must/ have been set for @commandBuffer@, and done so after any
---     previously bound pipeline with the corresponding state not specified
---     as dynamic
+--     /must/ have been set or inherited for @commandBuffer@, and done so
+--     after any previously bound pipeline with the corresponding state not
+--     specified as dynamic
 --
 -- -   #VUID-vkCmdDrawIndirectCount-None-02859# There /must/ not have been
 --     any calls to dynamic state setting commands for any state not
@@ -312,7 +312,7 @@
 --     dynamic state enabled, then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
@@ -326,7 +326,7 @@
 --     dynamic state enabled, then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @scissorCount@ parameter of
+--     drawing command, and the @scissorCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
@@ -342,7 +342,7 @@
 --     and
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ match the @scissorCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
@@ -425,7 +425,7 @@
 --     dynamic state enabled then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @primitiveTopology@ parameter of
+--     drawing command, and the @primitiveTopology@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
 --     /must/ be of the same
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
@@ -433,6 +433,47 @@
 --     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
 --     state
 --
+-- -   #VUID-vkCmdDrawIndirectCount-None-04875# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-04876# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-04877# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectCount-logicOp-04878# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command and the @logicOp@ /must/ be a valid
+--     'Vulkan.Core10.Enums.LogicOp.LogicOp' value
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-04879# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
 -- -   #VUID-vkCmdDrawIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-04552#
 --     If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
@@ -444,7 +485,7 @@
 --     then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ be @1@
 --
@@ -465,6 +506,16 @@
 --     /must/ be the same as the current subpass color and\/or
 --     depth\/stencil attachments
 --
+-- -   #VUID-vkCmdDrawIndirectCount-pStrides-04884# If the bound graphics
+--     pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @pStrides@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
+--     /must/ not be @NULL@
+--
 -- -   #VUID-vkCmdDrawIndirectCount-None-04007# All vertex input bindings
 --     accessed via vertex input variables declared in the vertex shader
 --     entry point’s interface /must/ have either valid or
@@ -625,8 +676,8 @@
   "dynamic" mkVkCmdDrawIndexedIndirectCount
   :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()
 
--- | vkCmdDrawIndexedIndirectCount - Perform an indexed indirect draw with
--- the draw count sourced from a buffer
+-- | vkCmdDrawIndexedIndirectCount - Draw parameters with indirect
+-- parameters, indexed vertices, and draw count
 --
 -- = Description
 --
@@ -738,9 +789,9 @@
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02701# If the
 --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
 --     point used by this command requires any dynamic state, that state
---     /must/ have been set for @commandBuffer@, and done so after any
---     previously bound pipeline with the corresponding state not specified
---     as dynamic
+--     /must/ have been set or inherited for @commandBuffer@, and done so
+--     after any previously bound pipeline with the corresponding state not
+--     specified as dynamic
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-None-02859# There /must/ not
 --     have been any calls to dynamic state setting commands for any state
@@ -910,7 +961,7 @@
 --     dynamic state enabled, then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
@@ -924,7 +975,7 @@
 --     dynamic state enabled, then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @scissorCount@ parameter of
+--     drawing command, and the @scissorCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
@@ -940,7 +991,7 @@
 --     and
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ match the @scissorCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
@@ -1023,7 +1074,7 @@
 --     dynamic state enabled then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @primitiveTopology@ parameter of
+--     drawing command, and the @primitiveTopology@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
 --     /must/ be of the same
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
@@ -1031,6 +1082,47 @@
 --     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
 --     state
 --
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-04875# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-04876# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-04877# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-logicOp-04878# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command and the @logicOp@ /must/ be a valid
+--     'Vulkan.Core10.Enums.LogicOp.LogicOp' value
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-04879# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-04552#
 --     If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
@@ -1042,7 +1134,7 @@
 --     then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ be @1@
 --
@@ -1063,6 +1155,16 @@
 --     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
 --     /must/ be the same as the current subpass color and\/or
 --     depth\/stencil attachments
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-pStrides-04884# If the bound
+--     graphics pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @pStrides@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
+--     /must/ not be @NULL@
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-None-04007# All vertex input
 --     bindings accessed via vertex input variables declared in the vertex
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_driver_properties.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_driver_properties.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_driver_properties.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_driver_properties.hs
@@ -112,6 +112,16 @@
 --
 -- = Description
 --
+-- If the 'PhysicalDeviceDriverProperties' 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.
+--
+-- These are properties of the driver corresponding to a physical device.
+--
 -- @driverID@ /must/ be immutable for a given driver across instances,
 -- processes, driver versions, and system reboots.
 --
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_image_format_list.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_image_format_list.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_image_format_list.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_image_format_list.hs
@@ -38,7 +38,7 @@
 --
 -- If @viewFormatCount@ is zero, @pViewFormats@ is ignored and the image is
 -- created as if the 'ImageFormatListCreateInfo' structure were not
--- included in the @pNext@ list of 'Vulkan.Core10.Image.ImageCreateInfo'.
+-- included in the @pNext@ chain of 'Vulkan.Core10.Image.ImageCreateInfo'.
 --
 -- == Valid Usage (Implicit)
 --
@@ -55,8 +55,9 @@
 -- 'Vulkan.Core10.Enums.Format.Format',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data ImageFormatListCreateInfo = ImageFormatListCreateInfo
-  { -- | @pViewFormats@ is an array which lists of all formats which /can/ be
-    -- used when creating views of this image.
+  { -- | @pViewFormats@ is a pointer to an array of
+    -- 'Vulkan.Core10.Enums.Format.Format' values specifying all formats which
+    -- /can/ be used when creating views of this image.
     viewFormats :: Vector Format }
   deriving (Typeable)
 #if defined(GENERIC_INSTANCES)
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_imageless_framebuffer.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_imageless_framebuffer.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_imageless_framebuffer.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_imageless_framebuffer.hs
@@ -54,18 +54,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceImagelessFramebufferFeatures'
--- structure describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceImagelessFramebufferFeatures' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceImagelessFramebufferFeatures' /can/ also be included in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable
--- this feature.
+-- 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. 'PhysicalDeviceImagelessFramebufferFeatures' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
@@ -234,9 +235,11 @@
     height :: Word32
   , -- No documentation found for Nested "VkFramebufferAttachmentImageInfo" "layerCount"
     layerCount :: Word32
-  , -- | @pViewFormats@ is an array which lists of all formats which /can/ be
-    -- used when creating views of the image, matching the value of
-    -- 'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::pViewFormats
+  , -- | @pViewFormats@ is a pointer to an array of
+    -- 'Vulkan.Core10.Enums.Format.Format' values specifying all of the formats
+    -- which /can/ be used when creating views of the image, matching the value
+    -- of
+    -- 'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@pViewFormats@
     -- used to create an image used with this framebuffer.
     viewFormats :: Vector Format
   }
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_separate_depth_stencil_layouts.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_separate_depth_stencil_layouts.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_separate_depth_stencil_layouts.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_separate_depth_stencil_layouts.hs
@@ -39,18 +39,20 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceSeparateDepthStencilLayoutsFeatures'
--- structure describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceSeparateDepthStencilLayoutsFeatures' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceSeparateDepthStencilLayoutsFeatures' /can/ also be
--- included in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to enable the feature.
+-- 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. 'PhysicalDeviceSeparateDepthStencilLayoutsFeatures' /can/
+-- also be used in the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
+-- features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_atomic_int64.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_atomic_int64.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_atomic_int64.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_atomic_int64.hs
@@ -29,6 +29,22 @@
 -- | VkPhysicalDeviceShaderAtomicInt64Features - Structure describing
 -- features supported by VK_KHR_shader_atomic_int64
 --
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShaderAtomicInt64Features' 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. 'PhysicalDeviceShaderAtomicInt64Features' /can/ also be used
+-- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
+--
 -- == Valid Usage (Implicit)
 --
 -- = See Also
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_float16_int8.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_float16_int8.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_float16_int8.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_float16_int8.hs
@@ -29,6 +29,22 @@
 -- | VkPhysicalDeviceShaderFloat16Int8Features - Structure describing
 -- features supported by VK_KHR_shader_float16_int8
 --
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShaderFloat16Int8Features' 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. 'PhysicalDeviceShaderFloat16Int8Features' /can/ also be used
+-- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
+--
 -- == Valid Usage (Implicit)
 --
 -- = See Also
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_float_controls.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_float_controls.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_float_controls.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_float_controls.hs
@@ -32,17 +32,15 @@
 -- | VkPhysicalDeviceFloatControlsProperties - Structure describing
 -- properties supported by VK_KHR_shader_float_controls
 --
--- = Members
---
--- The members of the 'PhysicalDeviceFloatControlsProperties' structure
--- describe the following implementation-dependent limits:
---
 -- = Description
 --
 -- If the 'PhysicalDeviceFloatControlsProperties' structure is included in
--- the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- 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)
 --
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_subgroup_extended_types.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_subgroup_extended_types.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_subgroup_extended_types.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_subgroup_extended_types.hs
@@ -32,18 +32,20 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceShaderSubgroupExtendedTypesFeatures'
--- structure describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceShaderSubgroupExtendedTypesFeatures' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether each feature is supported.
--- 'PhysicalDeviceShaderSubgroupExtendedTypesFeatures' /can/ also be
--- included in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to enable features.
+-- 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. 'PhysicalDeviceShaderSubgroupExtendedTypesFeatures' /can/
+-- also be used in the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
+-- features.
 --
 -- == Valid Usage (Implicit)
 --
@@ -58,8 +60,8 @@
     -- integer, 16-bit floating-point, and vectors of these types in
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operations group operations>
     -- with
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-subgroup subgroup scope>if
-    -- the implementation supports the types.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-subgroup subgroup scope>,
+    -- if the implementation supports the types.
     shaderSubgroupExtendedTypes :: Bool }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_timeline_semaphore.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_timeline_semaphore.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_timeline_semaphore.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_timeline_semaphore.hs
@@ -169,7 +169,7 @@
 waitSemaphoresSafeOrUnsafe :: forall io
                             . (MonadIO io)
                            => (FunPtr (Ptr Device_T -> Ptr SemaphoreWaitInfo -> Word64 -> IO Result) -> Ptr Device_T -> Ptr SemaphoreWaitInfo -> Word64 -> IO Result)
-                           -> -- | @device@ is the logical device that owns the semaphore.
+                           -> -- | @device@ is the logical device that owns the semaphores.
                               --
                               -- #VUID-vkWaitSemaphores-device-parameter# @device@ /must/ be a valid
                               -- 'Vulkan.Core10.Handles.Device' handle
@@ -207,7 +207,7 @@
 -- whichever is sooner.
 --
 -- If @timeout@ is zero, then 'waitSemaphores' does not wait, but simply
--- returns information about the current state of the semaphore.
+-- returns information about the current state of the semaphores.
 -- 'Vulkan.Core10.Enums.Result.TIMEOUT' will be returned in this case if
 -- the condition is not satisfied, even though no actual wait was
 -- performed.
@@ -244,7 +244,7 @@
 -- 'Vulkan.Core10.Handles.Device', 'SemaphoreWaitInfo'
 waitSemaphores :: forall io
                 . (MonadIO io)
-               => -- | @device@ is the logical device that owns the semaphore.
+               => -- | @device@ is the logical device that owns the semaphores.
                   --
                   -- #VUID-vkWaitSemaphores-device-parameter# @device@ /must/ be a valid
                   -- 'Vulkan.Core10.Handles.Device' handle
@@ -266,7 +266,7 @@
 -- | A variant of 'waitSemaphores' which makes a *safe* FFI call
 waitSemaphoresSafe :: forall io
                     . (MonadIO io)
-                   => -- | @device@ is the logical device that owns the semaphore.
+                   => -- | @device@ is the logical device that owns the semaphores.
                       --
                       -- #VUID-vkWaitSemaphores-device-parameter# @device@ /must/ be a valid
                       -- 'Vulkan.Core10.Handles.Device' handle
@@ -352,18 +352,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceTimelineSemaphoreFeatures' structure
--- describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceTimelineSemaphoreFeatures' structure is included
--- in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether each feature is supported.
--- 'PhysicalDeviceTimelineSemaphoreFeatures' /can/ also be included in the
--- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable
--- features.
+-- 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. 'PhysicalDeviceTimelineSemaphoreFeatures' /can/ also be used
+-- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
@@ -419,10 +420,15 @@
 -- | VkPhysicalDeviceTimelineSemaphoreProperties - Structure describing
 -- timeline semaphore properties that can be supported by an implementation
 --
--- = Members
+-- = Description
 --
--- The members of the 'PhysicalDeviceTimelineSemaphoreProperties' structure
--- describe the following implementation-dependent limits:
+-- If the 'PhysicalDeviceTimelineSemaphoreProperties' 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)
 --
@@ -476,14 +482,17 @@
 -- | VkSemaphoreTypeCreateInfo - Structure specifying the type of a newly
 -- created semaphore
 --
--- == Valid Usage (Implicit)
+-- = Description
 --
--- -   #VUID-VkSemaphoreTypeCreateInfo-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO'
+-- To create a semaphore of a specific type, add a
+-- 'SemaphoreTypeCreateInfo' structure to the
+-- 'Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo'::@pNext@ chain.
 --
--- -   #VUID-VkSemaphoreTypeCreateInfo-semaphoreType-parameter#
---     @semaphoreType@ /must/ be a valid
---     'Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' value
+-- If no 'SemaphoreTypeCreateInfo' structure is included in the @pNext@
+-- chain of 'Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo', then the
+-- created semaphore will have a default
+-- 'Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of
+-- 'Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_BINARY'.
 --
 -- == Valid Usage
 --
@@ -497,12 +506,15 @@
 --     'Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_BINARY',
 --     @initialValue@ /must/ be zero
 --
--- If no 'SemaphoreTypeCreateInfo' structure is included in the @pNext@
--- chain of 'Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo', then the
--- created semaphore will have a default
--- 'Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of
--- 'Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_BINARY'.
+-- == Valid Usage (Implicit)
 --
+-- -   #VUID-VkSemaphoreTypeCreateInfo-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO'
+--
+-- -   #VUID-VkSemaphoreTypeCreateInfo-semaphoreType-parameter#
+--     @semaphoreType@ /must/ be a valid
+--     'Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' value
+--
 -- = See Also
 --
 -- 'Vulkan.Core12.Enums.SemaphoreType.SemaphoreType',
@@ -594,17 +606,17 @@
   { -- | @waitSemaphoreValueCount@ is the number of semaphore wait values
     -- specified in @pWaitSemaphoreValues@.
     waitSemaphoreValueCount :: Word32
-  , -- | @pWaitSemaphoreValues@ is an array of length @waitSemaphoreValueCount@
-    -- containing values for the corresponding semaphores in
+  , -- | @pWaitSemaphoreValues@ is a pointer to an array of
+    -- @waitSemaphoreValueCount@ values for the corresponding semaphores in
     -- 'Vulkan.Core10.Queue.SubmitInfo'::@pWaitSemaphores@ to wait for.
     waitSemaphoreValues :: Vector Word64
   , -- | @signalSemaphoreValueCount@ is the number of semaphore signal values
     -- specified in @pSignalSemaphoreValues@.
     signalSemaphoreValueCount :: Word32
-  , -- | @pSignalSemaphoreValues@ is an array of length
-    -- @signalSemaphoreValueCount@ containing values for the corresponding
-    -- semaphores in 'Vulkan.Core10.Queue.SubmitInfo'::@pSignalSemaphores@ to
-    -- set when signaled.
+  , -- | @pSignalSemaphoreValues@ is a pointer to an array
+    -- @signalSemaphoreValueCount@ values for the corresponding semaphores in
+    -- 'Vulkan.Core10.Queue.SubmitInfo'::@pSignalSemaphores@ to set when
+    -- signaled.
     signalSemaphoreValues :: Vector Word64
   }
   deriving (Typeable)
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_uniform_buffer_standard_layout.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_uniform_buffer_standard_layout.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_uniform_buffer_standard_layout.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_uniform_buffer_standard_layout.hs
@@ -31,18 +31,20 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceUniformBufferStandardLayoutFeatures'
--- structure describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceUniformBufferStandardLayoutFeatures' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceUniformBufferStandardLayoutFeatures' /can/ also be
--- included in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to enable this feature.
+-- 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. 'PhysicalDeviceUniformBufferStandardLayoutFeatures' /can/
+-- also be used in the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
+-- features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_vulkan_memory_model.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_vulkan_memory_model.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_vulkan_memory_model.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_vulkan_memory_model.hs
@@ -29,6 +29,25 @@
 -- | VkPhysicalDeviceVulkanMemoryModelFeatures - Structure describing
 -- features supported by the memory model
 --
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the
+-- 'Vulkan.Extensions.VK_KHR_vulkan_memory_model.PhysicalDeviceVulkanMemoryModelFeaturesKHR'
+-- 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.
+-- 'Vulkan.Extensions.VK_KHR_vulkan_memory_model.PhysicalDeviceVulkanMemoryModelFeaturesKHR'
+-- /can/ also be used in the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
+-- features.
+--
 -- == Valid Usage (Implicit)
 --
 -- = See Also
diff --git a/src/Vulkan/Dynamic.hs b/src/Vulkan/Dynamic.hs
--- a/src/Vulkan/Dynamic.hs
+++ b/src/Vulkan/Dynamic.hs
@@ -89,6 +89,11 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (CopyImageInfo2KHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (CopyImageToBufferInfo2KHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (CopyMemoryToAccelerationStructureInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_binary_import (CuFunctionCreateInfoNVX)
+import {-# SOURCE #-} Vulkan.Extensions.Handles (CuFunctionNVX)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_binary_import (CuLaunchInfoNVX)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_binary_import (CuModuleCreateInfoNVX)
+import {-# SOURCE #-} Vulkan.Extensions.Handles (CuModuleNVX)
 import {-# SOURCE #-} Vulkan.Core10.Enums.CullModeFlagBits (CullModeFlags)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerMarkerInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerObjectNameInfoEXT)
@@ -211,6 +216,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_INTEL_performance_query (InitializePerformanceApiInfoINTEL)
 import {-# SOURCE #-} Vulkan.Core10.Handles (Instance_T)
 import {-# SOURCE #-} Vulkan.Core10.LayerDiscovery (LayerProperties)
+import {-# SOURCE #-} Vulkan.Core10.Enums.LogicOp (LogicOp)
 import {-# SOURCE #-} Vulkan.Extensions.VK_MVK_macos_surface (MacOSSurfaceCreateInfoMVK)
 import {-# SOURCE #-} Vulkan.Core10.Memory (MappedMemoryRange)
 import {-# SOURCE #-} Vulkan.Core10.Memory (MemoryAllocateInfo)
@@ -346,6 +352,8 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_calibrated_timestamps (TimeDomainEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_validation_cache (ValidationCacheCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.Handles (ValidationCacheEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state (VertexInputAttributeDescription2EXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state (VertexInputBindingDescription2EXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NN_vi_surface (ViSurfaceCreateInfoNN)
 import {-# SOURCE #-} Vulkan.Core10.Pipeline (Viewport)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_clip_space_w_scaling (ViewportWScalingNV)
@@ -962,6 +970,11 @@
   , pVkCmdSetDepthBoundsTestEnableEXT :: FunPtr (Ptr CommandBuffer_T -> ("depthBoundsTestEnable" ::: Bool32) -> IO ())
   , pVkCmdSetStencilTestEnableEXT :: FunPtr (Ptr CommandBuffer_T -> ("stencilTestEnable" ::: Bool32) -> IO ())
   , pVkCmdSetStencilOpEXT :: FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("failOp" ::: StencilOp) -> ("passOp" ::: StencilOp) -> ("depthFailOp" ::: StencilOp) -> CompareOp -> IO ())
+  , pVkCmdSetPatchControlPointsEXT :: FunPtr (Ptr CommandBuffer_T -> ("patchControlPoints" ::: Word32) -> IO ())
+  , pVkCmdSetRasterizerDiscardEnableEXT :: FunPtr (Ptr CommandBuffer_T -> ("rasterizerDiscardEnable" ::: Bool32) -> IO ())
+  , pVkCmdSetDepthBiasEnableEXT :: FunPtr (Ptr CommandBuffer_T -> ("depthBiasEnable" ::: Bool32) -> IO ())
+  , pVkCmdSetLogicOpEXT :: FunPtr (Ptr CommandBuffer_T -> LogicOp -> IO ())
+  , pVkCmdSetPrimitiveRestartEnableEXT :: FunPtr (Ptr CommandBuffer_T -> ("primitiveRestartEnable" ::: Bool32) -> IO ())
   , pVkCreatePrivateDataSlotEXT :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr PrivateDataSlotCreateInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPrivateDataSlot" ::: Ptr PrivateDataSlotEXT) -> IO Result)
   , pVkDestroyPrivateDataSlotEXT :: FunPtr (Ptr Device_T -> PrivateDataSlotEXT -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
   , pVkSetPrivateDataEXT :: FunPtr (Ptr Device_T -> ObjectType -> ("objectHandle" ::: Word64) -> PrivateDataSlotEXT -> ("data" ::: Word64) -> IO Result)
@@ -975,6 +988,8 @@
   , pVkCmdSetFragmentShadingRateKHR :: FunPtr (Ptr CommandBuffer_T -> ("pFragmentSize" ::: Ptr Extent2D) -> ("combinerOps" ::: Ptr (FixedArray 2 FragmentShadingRateCombinerOpKHR)) -> IO ())
   , pVkCmdSetFragmentShadingRateEnumNV :: FunPtr (Ptr CommandBuffer_T -> FragmentShadingRateNV -> ("combinerOps" ::: Ptr (FixedArray 2 FragmentShadingRateCombinerOpKHR)) -> IO ())
   , pVkGetAccelerationStructureBuildSizesKHR :: FunPtr (Ptr Device_T -> AccelerationStructureBuildTypeKHR -> ("pBuildInfo" ::: Ptr AccelerationStructureBuildGeometryInfoKHR) -> ("pMaxPrimitiveCounts" ::: Ptr Word32) -> ("pSizeInfo" ::: Ptr AccelerationStructureBuildSizesInfoKHR) -> IO ())
+  , pVkCmdSetVertexInputEXT :: FunPtr (Ptr CommandBuffer_T -> ("vertexBindingDescriptionCount" ::: Word32) -> ("pVertexBindingDescriptions" ::: Ptr VertexInputBindingDescription2EXT) -> ("vertexAttributeDescriptionCount" ::: Word32) -> ("pVertexAttributeDescriptions" ::: Ptr VertexInputAttributeDescription2EXT) -> IO ())
+  , pVkCmdSetColorWriteEnableEXT :: FunPtr (Ptr CommandBuffer_T -> ("attachmentCount" ::: Word32) -> ("pColorWriteEnables" ::: Ptr Bool32) -> IO ())
   , pVkCmdSetEvent2KHR :: FunPtr (Ptr CommandBuffer_T -> Event -> ("pDependencyInfo" ::: Ptr DependencyInfoKHR) -> IO ())
   , pVkCmdResetEvent2KHR :: FunPtr (Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags2KHR) -> IO ())
   , pVkCmdWaitEvents2KHR :: FunPtr (Ptr CommandBuffer_T -> ("eventCount" ::: Word32) -> ("pEvents" ::: Ptr Event) -> ("pDependencyInfos" ::: Ptr DependencyInfoKHR) -> IO ())
@@ -983,6 +998,11 @@
   , pVkCmdWriteTimestamp2KHR :: FunPtr (Ptr CommandBuffer_T -> PipelineStageFlags2KHR -> QueryPool -> ("query" ::: Word32) -> IO ())
   , pVkCmdWriteBufferMarker2AMD :: FunPtr (Ptr CommandBuffer_T -> PipelineStageFlags2KHR -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> ("marker" ::: Word32) -> IO ())
   , pVkGetQueueCheckpointData2NV :: FunPtr (Ptr Queue_T -> ("pCheckpointDataCount" ::: Ptr Word32) -> ("pCheckpointData" ::: Ptr CheckpointData2NV) -> 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 ())
+  , pVkDestroyCuFunctionNVX :: FunPtr (Ptr Device_T -> CuFunctionNVX -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
+  , pVkCmdCuLaunchKernelNVX :: FunPtr (Ptr CommandBuffer_T -> ("pLaunchInfo" ::: Ptr CuLaunchInfoNVX) -> IO ())
   }
 
 deriving instance Eq DeviceCmds
@@ -1030,7 +1050,8 @@
     nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
     nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
     nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
-    nullFunPtr
+    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
+    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr
 
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
@@ -1358,6 +1379,11 @@
   vkCmdSetDepthBoundsTestEnableEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetDepthBoundsTestEnableEXT"#)
   vkCmdSetStencilTestEnableEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetStencilTestEnableEXT"#)
   vkCmdSetStencilOpEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetStencilOpEXT"#)
+  vkCmdSetPatchControlPointsEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetPatchControlPointsEXT"#)
+  vkCmdSetRasterizerDiscardEnableEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetRasterizerDiscardEnableEXT"#)
+  vkCmdSetDepthBiasEnableEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetDepthBiasEnableEXT"#)
+  vkCmdSetLogicOpEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetLogicOpEXT"#)
+  vkCmdSetPrimitiveRestartEnableEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetPrimitiveRestartEnableEXT"#)
   vkCreatePrivateDataSlotEXT <- getDeviceProcAddr' handle (Ptr "vkCreatePrivateDataSlotEXT"#)
   vkDestroyPrivateDataSlotEXT <- getDeviceProcAddr' handle (Ptr "vkDestroyPrivateDataSlotEXT"#)
   vkSetPrivateDataEXT <- getDeviceProcAddr' handle (Ptr "vkSetPrivateDataEXT"#)
@@ -1371,6 +1397,8 @@
   vkCmdSetFragmentShadingRateKHR <- getDeviceProcAddr' handle (Ptr "vkCmdSetFragmentShadingRateKHR"#)
   vkCmdSetFragmentShadingRateEnumNV <- getDeviceProcAddr' handle (Ptr "vkCmdSetFragmentShadingRateEnumNV"#)
   vkGetAccelerationStructureBuildSizesKHR <- getDeviceProcAddr' handle (Ptr "vkGetAccelerationStructureBuildSizesKHR"#)
+  vkCmdSetVertexInputEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetVertexInputEXT"#)
+  vkCmdSetColorWriteEnableEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetColorWriteEnableEXT"#)
   vkCmdSetEvent2KHR <- getDeviceProcAddr' handle (Ptr "vkCmdSetEvent2KHR"#)
   vkCmdResetEvent2KHR <- getDeviceProcAddr' handle (Ptr "vkCmdResetEvent2KHR"#)
   vkCmdWaitEvents2KHR <- getDeviceProcAddr' handle (Ptr "vkCmdWaitEvents2KHR"#)
@@ -1379,6 +1407,11 @@
   vkCmdWriteTimestamp2KHR <- getDeviceProcAddr' handle (Ptr "vkCmdWriteTimestamp2KHR"#)
   vkCmdWriteBufferMarker2AMD <- getDeviceProcAddr' handle (Ptr "vkCmdWriteBufferMarker2AMD"#)
   vkGetQueueCheckpointData2NV <- getDeviceProcAddr' handle (Ptr "vkGetQueueCheckpointData2NV"#)
+  vkCreateCuModuleNVX <- getDeviceProcAddr' handle (Ptr "vkCreateCuModuleNVX"#)
+  vkCreateCuFunctionNVX <- getDeviceProcAddr' handle (Ptr "vkCreateCuFunctionNVX"#)
+  vkDestroyCuModuleNVX <- getDeviceProcAddr' handle (Ptr "vkDestroyCuModuleNVX"#)
+  vkDestroyCuFunctionNVX <- getDeviceProcAddr' handle (Ptr "vkDestroyCuFunctionNVX"#)
+  vkCmdCuLaunchKernelNVX <- getDeviceProcAddr' handle (Ptr "vkCmdCuLaunchKernelNVX"#)
   pure $ DeviceCmds handle
     (castFunPtr @_ @(Ptr Device_T -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction) vkGetDeviceProcAddr)
     (castFunPtr @_ @(Ptr Device_T -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyDevice)
@@ -1687,6 +1720,11 @@
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("depthBoundsTestEnable" ::: Bool32) -> IO ()) vkCmdSetDepthBoundsTestEnableEXT)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("stencilTestEnable" ::: Bool32) -> IO ()) vkCmdSetStencilTestEnableEXT)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("failOp" ::: StencilOp) -> ("passOp" ::: StencilOp) -> ("depthFailOp" ::: StencilOp) -> CompareOp -> IO ()) vkCmdSetStencilOpEXT)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("patchControlPoints" ::: Word32) -> IO ()) vkCmdSetPatchControlPointsEXT)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("rasterizerDiscardEnable" ::: Bool32) -> IO ()) vkCmdSetRasterizerDiscardEnableEXT)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("depthBiasEnable" ::: Bool32) -> IO ()) vkCmdSetDepthBiasEnableEXT)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> LogicOp -> IO ()) vkCmdSetLogicOpEXT)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("primitiveRestartEnable" ::: Bool32) -> IO ()) vkCmdSetPrimitiveRestartEnableEXT)
     (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr PrivateDataSlotCreateInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPrivateDataSlot" ::: Ptr PrivateDataSlotEXT) -> IO Result) vkCreatePrivateDataSlotEXT)
     (castFunPtr @_ @(Ptr Device_T -> PrivateDataSlotEXT -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyPrivateDataSlotEXT)
     (castFunPtr @_ @(Ptr Device_T -> ObjectType -> ("objectHandle" ::: Word64) -> PrivateDataSlotEXT -> ("data" ::: Word64) -> IO Result) vkSetPrivateDataEXT)
@@ -1700,6 +1738,8 @@
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pFragmentSize" ::: Ptr Extent2D) -> ("combinerOps" ::: Ptr (FixedArray 2 FragmentShadingRateCombinerOpKHR)) -> IO ()) vkCmdSetFragmentShadingRateKHR)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> FragmentShadingRateNV -> ("combinerOps" ::: Ptr (FixedArray 2 FragmentShadingRateCombinerOpKHR)) -> IO ()) vkCmdSetFragmentShadingRateEnumNV)
     (castFunPtr @_ @(Ptr Device_T -> AccelerationStructureBuildTypeKHR -> ("pBuildInfo" ::: Ptr AccelerationStructureBuildGeometryInfoKHR) -> ("pMaxPrimitiveCounts" ::: Ptr Word32) -> ("pSizeInfo" ::: Ptr AccelerationStructureBuildSizesInfoKHR) -> IO ()) vkGetAccelerationStructureBuildSizesKHR)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("vertexBindingDescriptionCount" ::: Word32) -> ("pVertexBindingDescriptions" ::: Ptr VertexInputBindingDescription2EXT) -> ("vertexAttributeDescriptionCount" ::: Word32) -> ("pVertexAttributeDescriptions" ::: Ptr VertexInputAttributeDescription2EXT) -> IO ()) vkCmdSetVertexInputEXT)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("attachmentCount" ::: Word32) -> ("pColorWriteEnables" ::: Ptr Bool32) -> IO ()) vkCmdSetColorWriteEnableEXT)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> Event -> ("pDependencyInfo" ::: Ptr DependencyInfoKHR) -> IO ()) vkCmdSetEvent2KHR)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags2KHR) -> IO ()) vkCmdResetEvent2KHR)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("eventCount" ::: Word32) -> ("pEvents" ::: Ptr Event) -> ("pDependencyInfos" ::: Ptr DependencyInfoKHR) -> IO ()) vkCmdWaitEvents2KHR)
@@ -1708,4 +1748,9 @@
     (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineStageFlags2KHR -> QueryPool -> ("query" ::: Word32) -> IO ()) vkCmdWriteTimestamp2KHR)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineStageFlags2KHR -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> ("marker" ::: Word32) -> IO ()) vkCmdWriteBufferMarker2AMD)
     (castFunPtr @_ @(Ptr Queue_T -> ("pCheckpointDataCount" ::: Ptr Word32) -> ("pCheckpointData" ::: Ptr CheckpointData2NV) -> IO ()) vkGetQueueCheckpointData2NV)
+    (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)
+    (castFunPtr @_ @(Ptr Device_T -> CuFunctionNVX -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyCuFunctionNVX)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pLaunchInfo" ::: Ptr CuLaunchInfoNVX) -> IO ()) vkCmdCuLaunchKernelNVX)
 
diff --git a/src/Vulkan/Extensions.hs b/src/Vulkan/Extensions.hs
--- a/src/Vulkan/Extensions.hs
+++ b/src/Vulkan/Extensions.hs
@@ -30,6 +30,7 @@
                           , module Vulkan.Extensions.VK_EXT_blend_operation_advanced
                           , module Vulkan.Extensions.VK_EXT_buffer_device_address
                           , module Vulkan.Extensions.VK_EXT_calibrated_timestamps
+                          , module Vulkan.Extensions.VK_EXT_color_write_enable
                           , module Vulkan.Extensions.VK_EXT_conditional_rendering
                           , module Vulkan.Extensions.VK_EXT_conservative_rasterization
                           , module Vulkan.Extensions.VK_EXT_custom_border_color
@@ -46,6 +47,7 @@
                           , module Vulkan.Extensions.VK_EXT_display_control
                           , module Vulkan.Extensions.VK_EXT_display_surface_counter
                           , module Vulkan.Extensions.VK_EXT_extended_dynamic_state
+                          , module Vulkan.Extensions.VK_EXT_extended_dynamic_state2
                           , module Vulkan.Extensions.VK_EXT_external_memory_dma_buf
                           , module Vulkan.Extensions.VK_EXT_external_memory_host
                           , module Vulkan.Extensions.VK_EXT_filter_cubic
@@ -70,6 +72,7 @@
                           , module Vulkan.Extensions.VK_EXT_pipeline_creation_feedback
                           , module Vulkan.Extensions.VK_EXT_post_depth_coverage
                           , module Vulkan.Extensions.VK_EXT_private_data
+                          , module Vulkan.Extensions.VK_EXT_provoking_vertex
                           , module Vulkan.Extensions.VK_EXT_queue_family_foreign
                           , module Vulkan.Extensions.VK_EXT_robustness2
                           , module Vulkan.Extensions.VK_EXT_sample_locations
@@ -93,6 +96,8 @@
                           , module Vulkan.Extensions.VK_EXT_validation_features
                           , module Vulkan.Extensions.VK_EXT_validation_flags
                           , module Vulkan.Extensions.VK_EXT_vertex_attribute_divisor
+                          , module Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state
+                          , module Vulkan.Extensions.VK_EXT_ycbcr_2plane_444_formats
                           , module Vulkan.Extensions.VK_EXT_ycbcr_image_arrays
                           , module Vulkan.Extensions.VK_FUCHSIA_external_memory
                           , module Vulkan.Extensions.VK_FUCHSIA_external_semaphore
@@ -190,6 +195,7 @@
                           , module Vulkan.Extensions.VK_MVK_ios_surface
                           , module Vulkan.Extensions.VK_MVK_macos_surface
                           , module Vulkan.Extensions.VK_NN_vi_surface
+                          , module Vulkan.Extensions.VK_NVX_binary_import
                           , module Vulkan.Extensions.VK_NVX_image_view_handle
                           , module Vulkan.Extensions.VK_NVX_multiview_per_view_attributes
                           , module Vulkan.Extensions.VK_NV_acquire_winrt_display
@@ -213,6 +219,7 @@
                           , module Vulkan.Extensions.VK_NV_framebuffer_mixed_samples
                           , module Vulkan.Extensions.VK_NV_geometry_shader_passthrough
                           , module Vulkan.Extensions.VK_NV_glsl_shader
+                          , module Vulkan.Extensions.VK_NV_inherited_viewport_scissor
                           , module Vulkan.Extensions.VK_NV_mesh_shader
                           , module Vulkan.Extensions.VK_NV_ray_tracing
                           , module Vulkan.Extensions.VK_NV_representative_fragment_test
@@ -262,6 +269,7 @@
 import Vulkan.Extensions.VK_EXT_blend_operation_advanced
 import Vulkan.Extensions.VK_EXT_buffer_device_address
 import Vulkan.Extensions.VK_EXT_calibrated_timestamps
+import Vulkan.Extensions.VK_EXT_color_write_enable
 import Vulkan.Extensions.VK_EXT_conditional_rendering
 import Vulkan.Extensions.VK_EXT_conservative_rasterization
 import Vulkan.Extensions.VK_EXT_custom_border_color
@@ -278,6 +286,7 @@
 import Vulkan.Extensions.VK_EXT_display_control
 import Vulkan.Extensions.VK_EXT_display_surface_counter
 import Vulkan.Extensions.VK_EXT_extended_dynamic_state
+import Vulkan.Extensions.VK_EXT_extended_dynamic_state2
 import Vulkan.Extensions.VK_EXT_external_memory_dma_buf
 import Vulkan.Extensions.VK_EXT_external_memory_host
 import Vulkan.Extensions.VK_EXT_filter_cubic
@@ -302,6 +311,7 @@
 import Vulkan.Extensions.VK_EXT_pipeline_creation_feedback
 import Vulkan.Extensions.VK_EXT_post_depth_coverage
 import Vulkan.Extensions.VK_EXT_private_data
+import Vulkan.Extensions.VK_EXT_provoking_vertex
 import Vulkan.Extensions.VK_EXT_queue_family_foreign
 import Vulkan.Extensions.VK_EXT_robustness2
 import Vulkan.Extensions.VK_EXT_sample_locations
@@ -325,6 +335,8 @@
 import Vulkan.Extensions.VK_EXT_validation_features
 import Vulkan.Extensions.VK_EXT_validation_flags
 import Vulkan.Extensions.VK_EXT_vertex_attribute_divisor
+import Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state
+import Vulkan.Extensions.VK_EXT_ycbcr_2plane_444_formats
 import Vulkan.Extensions.VK_EXT_ycbcr_image_arrays
 import Vulkan.Extensions.VK_FUCHSIA_external_memory
 import Vulkan.Extensions.VK_FUCHSIA_external_semaphore
@@ -422,6 +434,7 @@
 import Vulkan.Extensions.VK_MVK_ios_surface
 import Vulkan.Extensions.VK_MVK_macos_surface
 import Vulkan.Extensions.VK_NN_vi_surface
+import Vulkan.Extensions.VK_NVX_binary_import
 import Vulkan.Extensions.VK_NVX_image_view_handle
 import Vulkan.Extensions.VK_NVX_multiview_per_view_attributes
 import Vulkan.Extensions.VK_NV_acquire_winrt_display
@@ -445,6 +458,7 @@
 import Vulkan.Extensions.VK_NV_framebuffer_mixed_samples
 import Vulkan.Extensions.VK_NV_geometry_shader_passthrough
 import Vulkan.Extensions.VK_NV_glsl_shader
+import Vulkan.Extensions.VK_NV_inherited_viewport_scissor
 import Vulkan.Extensions.VK_NV_mesh_shader
 import Vulkan.Extensions.VK_NV_ray_tracing
 import Vulkan.Extensions.VK_NV_representative_fragment_test
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
@@ -17,6 +17,7 @@
 import Vulkan.Extensions.VK_EXT_acquire_xlib_display (pattern EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME)
 import Vulkan.Extensions.VK_EXT_astc_decode_mode (pattern EXT_ASTC_DECODE_MODE_EXTENSION_NAME)
 import Vulkan.Extensions.VK_EXT_buffer_device_address (pattern EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME)
+import Vulkan.Extensions.VK_EXT_color_write_enable (pattern EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME)
 import Vulkan.Extensions.VK_EXT_conservative_rasterization (pattern EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME)
 import Vulkan.Extensions.VK_EXT_debug_marker (pattern EXT_DEBUG_MARKER_EXTENSION_NAME)
 import Vulkan.Extensions.VK_EXT_debug_report (pattern EXT_DEBUG_REPORT_EXTENSION_NAME)
@@ -27,6 +28,7 @@
 import Vulkan.Extensions.VK_EXT_discard_rectangles (pattern EXT_DISCARD_RECTANGLES_EXTENSION_NAME)
 import Vulkan.Extensions.VK_EXT_display_control (pattern EXT_DISPLAY_CONTROL_EXTENSION_NAME)
 import Vulkan.Extensions.VK_EXT_display_surface_counter (pattern EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME)
+import Vulkan.Extensions.VK_EXT_extended_dynamic_state2 (pattern EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME)
 import Vulkan.Extensions.VK_EXT_extended_dynamic_state (pattern EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME)
 import Vulkan.Extensions.VK_EXT_external_memory_dma_buf (pattern EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME)
 import Vulkan.Extensions.VK_EXT_external_memory_host (pattern EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME)
@@ -45,6 +47,7 @@
 import Vulkan.Extensions.VK_EXT_memory_priority (pattern EXT_MEMORY_PRIORITY_EXTENSION_NAME)
 import Vulkan.Extensions.VK_EXT_metal_surface (pattern EXT_METAL_SURFACE_EXTENSION_NAME)
 import Vulkan.Extensions.VK_EXT_pci_bus_info (pattern EXT_PCI_BUS_INFO_EXTENSION_NAME)
+import Vulkan.Extensions.VK_EXT_provoking_vertex (pattern EXT_PROVOKING_VERTEX_EXTENSION_NAME)
 import Vulkan.Extensions.VK_EXT_queue_family_foreign (pattern EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME)
 import Vulkan.Extensions.VK_EXT_sampler_filter_minmax (pattern EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME)
 import Vulkan.Extensions.VK_EXT_sample_locations (pattern EXT_SAMPLE_LOCATIONS_EXTENSION_NAME)
@@ -58,6 +61,8 @@
 import Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr (pattern EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME)
 import Vulkan.Extensions.VK_EXT_transform_feedback (pattern EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME)
 import Vulkan.Extensions.VK_EXT_vertex_attribute_divisor (pattern EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME)
+import Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state (pattern EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME)
+import Vulkan.Extensions.VK_EXT_ycbcr_2plane_444_formats (pattern EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME)
 import Vulkan.Extensions.VK_EXT_ycbcr_image_arrays (pattern EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME)
 import Vulkan.Extensions.VK_FUCHSIA_external_memory (pattern FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME)
 import Vulkan.Extensions.VK_FUCHSIA_external_semaphore (pattern FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME)
@@ -138,7 +143,7 @@
 import Vulkan.Extensions.VK_KHR_xcb_surface (pattern KHR_XCB_SURFACE_EXTENSION_NAME)
 import Vulkan.Extensions.VK_KHR_xlib_surface (pattern KHR_XLIB_SURFACE_EXTENSION_NAME)
 import Vulkan.Extensions.VK_KHR_zero_initialize_workgroup_memory (pattern KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME)
-import Vulkan.Version (pattern MAKE_VERSION)
+import Vulkan.Version (pattern MAKE_API_VERSION)
 import Vulkan.Extensions.VK_MVK_ios_surface (pattern MVK_IOS_SURFACE_EXTENSION_NAME)
 import Vulkan.Extensions.VK_MVK_macos_surface (pattern MVK_MACOS_SURFACE_EXTENSION_NAME)
 import Vulkan.Extensions.VK_NN_vi_surface (pattern NN_VI_SURFACE_EXTENSION_NAME)
@@ -440,6 +445,7 @@
     , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
     ]
   KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]
+  EXT_PROVOKING_VERTEX_EXTENSION_NAME               -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]
   EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME ->
     [ KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
     , KHR_SURFACE_EXTENSION_NAME
@@ -467,6 +473,13 @@
     , KHR_MULTIVIEW_EXTENSION_NAME
     , KHR_MAINTENANCE2_EXTENSION_NAME
     ]
+  EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME ->
+    [ KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME
+    , KHR_MAINTENANCE1_EXTENSION_NAME
+    , KHR_BIND_MEMORY_2_EXTENSION_NAME
+    , KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME
+    , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
+    ]
   EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME ->
     [EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]
   QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME ->
@@ -479,6 +492,7 @@
   EXT_DIRECTFB_SURFACE_EXTENSION_NAME -> [KHR_SURFACE_EXTENSION_NAME]
   VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME ->
     [KHR_MAINTENANCE3_EXTENSION_NAME, KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]
+  EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]
   FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME ->
     [ KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME
     , KHR_EXTERNAL_MEMORY_EXTENSION_NAME
@@ -489,21 +503,23 @@
     , KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME
     , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
     ]
+  EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]
   QNX_SCREEN_SURFACE_EXTENSION_NAME -> [KHR_SURFACE_EXTENSION_NAME]
+  EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]
   _ -> []
 
 -- | The minimum required API version to use this extension
 extensionCoreRequirement :: ("extensionName" ::: ByteString) -> Word32
 extensionCoreRequirement = \case
-  KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME -> MAKE_VERSION 1 1 0
-  KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME -> MAKE_VERSION 1 1 0
-  KHR_RAY_QUERY_EXTENSION_NAME -> MAKE_VERSION 1 1 0
-  NV_SHADER_SM_BUILTINS_EXTENSION_NAME -> MAKE_VERSION 1 1 0
-  KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME -> MAKE_VERSION 1 1 0
-  NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME -> MAKE_VERSION 1 1 0
-  EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME -> MAKE_VERSION 1 1 0
-  KHR_SPIRV_1_4_EXTENSION_NAME -> MAKE_VERSION 1 1 0
-  KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME -> MAKE_VERSION 1 1 0
-  NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME -> MAKE_VERSION 1 1 0
+  KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME -> MAKE_API_VERSION 1 1 0
+  KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME -> MAKE_API_VERSION 1 1 0
+  KHR_RAY_QUERY_EXTENSION_NAME -> MAKE_API_VERSION 1 1 0
+  NV_SHADER_SM_BUILTINS_EXTENSION_NAME -> MAKE_API_VERSION 1 1 0
+  KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME -> MAKE_API_VERSION 1 1 0
+  NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME -> MAKE_API_VERSION 1 1 0
+  EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME -> MAKE_API_VERSION 1 1 0
+  KHR_SPIRV_1_4_EXTENSION_NAME -> MAKE_API_VERSION 1 1 0
+  KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME -> MAKE_API_VERSION 1 1 0
+  NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME -> MAKE_API_VERSION 1 1 0
   _                            -> API_VERSION_1_0
 
diff --git a/src/Vulkan/Extensions/Handles.hs b/src/Vulkan/Extensions/Handles.hs
--- a/src/Vulkan/Extensions/Handles.hs
+++ b/src/Vulkan/Extensions/Handles.hs
@@ -7,6 +7,8 @@
                                   , PerformanceConfigurationINTEL(..)
                                   , DeferredOperationKHR(..)
                                   , PrivateDataSlotEXT(..)
+                                  , CuModuleNVX(..)
+                                  , CuFunctionNVX(..)
                                   , DisplayKHR(..)
                                   , DisplayModeKHR(..)
                                   , SurfaceKHR(..)
@@ -50,6 +52,8 @@
 import Vulkan.Core10.APIConstants (IsHandle)
 import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR))
 import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_ACCELERATION_STRUCTURE_NV))
+import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_CU_FUNCTION_NVX))
+import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_CU_MODULE_NVX))
 import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT))
 import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT))
 import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_DEFERRED_OPERATION_KHR))
@@ -230,6 +234,26 @@
   objectTypeAndHandle (PrivateDataSlotEXT h) = (OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT, h)
 instance Show PrivateDataSlotEXT where
   showsPrec p (PrivateDataSlotEXT x) = showParen (p >= 11) (showString "PrivateDataSlotEXT 0x" . showHex x)
+
+
+-- No documentation found for TopLevel "VkCuModuleNVX"
+newtype CuModuleNVX = CuModuleNVX Word64
+  deriving newtype (Eq, Ord, Storable, Zero)
+  deriving anyclass (IsHandle)
+instance HasObjectType CuModuleNVX where
+  objectTypeAndHandle (CuModuleNVX h) = (OBJECT_TYPE_CU_MODULE_NVX, h)
+instance Show CuModuleNVX where
+  showsPrec p (CuModuleNVX x) = showParen (p >= 11) (showString "CuModuleNVX 0x" . showHex x)
+
+
+-- No documentation found for TopLevel "VkCuFunctionNVX"
+newtype CuFunctionNVX = CuFunctionNVX Word64
+  deriving newtype (Eq, Ord, Storable, Zero)
+  deriving anyclass (IsHandle)
+instance HasObjectType CuFunctionNVX where
+  objectTypeAndHandle (CuFunctionNVX h) = (OBJECT_TYPE_CU_FUNCTION_NVX, h)
+instance Show CuFunctionNVX where
+  showsPrec p (CuFunctionNVX x) = showParen (p >= 11) (showString "CuFunctionNVX 0x" . showHex x)
 
 
 -- | VkDisplayKHR - Opaque handle to a display object
diff --git a/src/Vulkan/Extensions/Handles.hs-boot b/src/Vulkan/Extensions/Handles.hs-boot
--- a/src/Vulkan/Extensions/Handles.hs-boot
+++ b/src/Vulkan/Extensions/Handles.hs-boot
@@ -2,6 +2,8 @@
 -- No documentation found for Chapter "Handles"
 module Vulkan.Extensions.Handles  ( AccelerationStructureKHR
                                   , AccelerationStructureNV
+                                  , CuFunctionNVX
+                                  , CuModuleNVX
                                   , DebugReportCallbackEXT
                                   , DebugUtilsMessengerEXT
                                   , DeferredOperationKHR
@@ -21,6 +23,12 @@
 
 
 data AccelerationStructureNV
+
+
+data CuFunctionNVX
+
+
+data CuModuleNVX
 
 
 data DebugReportCallbackEXT
diff --git a/src/Vulkan/Extensions/VK_AMD_buffer_marker.hs b/src/Vulkan/Extensions/VK_AMD_buffer_marker.hs
--- a/src/Vulkan/Extensions/VK_AMD_buffer_marker.hs
+++ b/src/Vulkan/Extensions/VK_AMD_buffer_marker.hs
@@ -201,7 +201,7 @@
 -- -   #VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04081# If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
 --     feature is not enabled, @pipelineStage@ /must/ not be
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
 --
 -- -   #VUID-vkCmdWriteBufferMarkerAMD-dstOffset-01798# @dstOffset@ /must/
 --     be less than or equal to the size of @dstBuffer@ minus @4@
@@ -274,10 +274,10 @@
                         => -- | @commandBuffer@ is the command buffer into which the command will be
                            -- recorded.
                            CommandBuffer
-                        -> -- | @pipelineStage@ is one of the
-                           -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
-                           -- values, specifying the pipeline stage whose completion triggers the
-                           -- marker write.
+                        -> -- | @pipelineStage@ is a
+                           -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits' value
+                           -- specifying the pipeline stage whose completion triggers the marker
+                           -- write.
                            PipelineStageFlagBits
                         -> -- | @dstBuffer@ is the buffer where the marker will be written to.
                            ("dstBuffer" ::: Buffer)
diff --git a/src/Vulkan/Extensions/VK_AMD_device_coherent_memory.hs b/src/Vulkan/Extensions/VK_AMD_device_coherent_memory.hs
--- a/src/Vulkan/Extensions/VK_AMD_device_coherent_memory.hs
+++ b/src/Vulkan/Extensions/VK_AMD_device_coherent_memory.hs
@@ -127,8 +127,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceCoherentMemoryFeaturesAMD' structure
--- describe the following features:
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceCoherentMemoryFeaturesAMD' 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. 'PhysicalDeviceCoherentMemoryFeaturesAMD' /can/ also be used
+-- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_AMD_draw_indirect_count.hs b/src/Vulkan/Extensions/VK_AMD_draw_indirect_count.hs
--- a/src/Vulkan/Extensions/VK_AMD_draw_indirect_count.hs
+++ b/src/Vulkan/Extensions/VK_AMD_draw_indirect_count.hs
@@ -60,10 +60,10 @@
 --
 -- == Description
 --
--- This extension allows an application to source the number of draw calls
--- for indirect draw calls from a buffer. This enables applications to
--- generate arbitrary amounts of draw commands and execute them without
--- host intervention.
+-- This extension allows an application to source the number of draws for
+-- indirect drawing commands from a buffer. This enables applications to
+-- generate an arbitrary number of drawing commands and execute them
+-- without host intervention.
 --
 -- == Promotion to @VK_KHR_draw_indirect_count@
 --
diff --git a/src/Vulkan/Extensions/VK_AMD_pipeline_compiler_control.hs b/src/Vulkan/Extensions/VK_AMD_pipeline_compiler_control.hs
--- a/src/Vulkan/Extensions/VK_AMD_pipeline_compiler_control.hs
+++ b/src/Vulkan/Extensions/VK_AMD_pipeline_compiler_control.hs
@@ -47,8 +47,8 @@
 -- == Description
 --
 -- This extension introduces 'PipelineCompilerControlCreateInfoAMD'
--- structure that can be chained to a pipeline’s create info to specify
--- additional flags that affect pipeline compilation.
+-- structure that can be chained to a pipeline’s creation information to
+-- specify additional flags that affect pipeline compilation.
 --
 -- == New Structures
 --
diff --git a/src/Vulkan/Extensions/VK_AMD_pipeline_compiler_control.hs-boot b/src/Vulkan/Extensions/VK_AMD_pipeline_compiler_control.hs-boot
--- a/src/Vulkan/Extensions/VK_AMD_pipeline_compiler_control.hs-boot
+++ b/src/Vulkan/Extensions/VK_AMD_pipeline_compiler_control.hs-boot
@@ -47,8 +47,8 @@
 -- == Description
 --
 -- This extension introduces 'PipelineCompilerControlCreateInfoAMD'
--- structure that can be chained to a pipeline’s create info to specify
--- additional flags that affect pipeline compilation.
+-- structure that can be chained to a pipeline’s creation information to
+-- specify additional flags that affect pipeline compilation.
 --
 -- == New Structures
 --
diff --git a/src/Vulkan/Extensions/VK_AMD_shader_core_properties.hs b/src/Vulkan/Extensions/VK_AMD_shader_core_properties.hs
--- a/src/Vulkan/Extensions/VK_AMD_shader_core_properties.hs
+++ b/src/Vulkan/Extensions/VK_AMD_shader_core_properties.hs
@@ -181,17 +181,15 @@
 -- | VkPhysicalDeviceShaderCorePropertiesAMD - Structure describing shader
 -- core properties that can be supported by an implementation
 --
--- = Members
---
--- The members of the 'PhysicalDeviceShaderCorePropertiesAMD' structure
--- describe the following implementation-dependent limits:
---
 -- = Description
 --
 -- If the 'PhysicalDeviceShaderCorePropertiesAMD' structure is included in
--- the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- 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)
 --
diff --git a/src/Vulkan/Extensions/VK_AMD_shader_core_properties2.hs b/src/Vulkan/Extensions/VK_AMD_shader_core_properties2.hs
--- a/src/Vulkan/Extensions/VK_AMD_shader_core_properties2.hs
+++ b/src/Vulkan/Extensions/VK_AMD_shader_core_properties2.hs
@@ -137,17 +137,15 @@
 -- | VkPhysicalDeviceShaderCoreProperties2AMD - Structure describing shader
 -- core properties that can be supported by an implementation
 --
--- = Members
---
--- The members of the 'PhysicalDeviceShaderCoreProperties2AMD' structure
--- describe the following implementation-dependent limits:
---
 -- = Description
 --
 -- If the 'PhysicalDeviceShaderCoreProperties2AMD' structure is included in
--- the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- 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)
 --
diff --git a/src/Vulkan/Extensions/VK_AMD_shader_info.hs b/src/Vulkan/Extensions/VK_AMD_shader_info.hs
--- a/src/Vulkan/Extensions/VK_AMD_shader_info.hs
+++ b/src/Vulkan/Extensions/VK_AMD_shader_info.hs
@@ -250,12 +250,11 @@
 -- @pInfoSize@. Otherwise, @pInfoSize@ /must/ point to a variable set by
 -- the user to the size of the buffer, in bytes, pointed to by @pInfo@, and
 -- on return the variable is overwritten with the amount of data actually
--- written to @pInfo@.
---
--- If @pInfoSize@ is less than the maximum size that /can/ be retrieved by
--- the pipeline cache, then at most @pInfoSize@ bytes will be written to
--- @pInfo@, and 'getShaderInfoAMD' will return
--- 'Vulkan.Core10.Enums.Result.INCOMPLETE'.
+-- written to @pInfo@. If @pInfoSize@ is less than the maximum size that
+-- /can/ be retrieved by the pipeline cache, then at most @pInfoSize@ bytes
+-- will be written to @pInfo@, and 'Vulkan.Core10.Enums.Result.INCOMPLETE'
+-- will be returned, instead of 'Vulkan.Core10.Enums.Result.SUCCESS', to
+-- indicate that not all required of the pipeline cache was returned.
 --
 -- Not all information is available for every shader and implementations
 -- may not support all kinds of information for any shader. When a certain
@@ -331,8 +330,10 @@
                     Device
                  -> -- | @pipeline@ is the target of the query.
                     Pipeline
-                 -> -- | @shaderStage@ identifies the particular shader within the pipeline about
-                    -- which information is being queried.
+                 -> -- | @shaderStage@ is a
+                    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' specifying
+                    -- the particular shader within the pipeline about which information is
+                    -- being queried.
                     ShaderStageFlagBits
                  -> -- | @infoType@ describes what kind of information is being queried.
                     ShaderInfoTypeAMD
@@ -544,7 +545,8 @@
            (zero, zero, zero)
 
 
--- | VkShaderInfoTypeAMD - Enum specifying which type of shader info to query
+-- | VkShaderInfoTypeAMD - Enum specifying which type of shader information
+-- to query
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs b/src/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs
--- a/src/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs
+++ b/src/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs
@@ -153,7 +153,7 @@
 --
 -- 2) The internal layout and therefore size of a 'AHardwareBuffer' image
 -- may depend on native usage flags that do not have corresponding Vulkan
--- counterparts. Do we provide this info to
+-- counterparts. Do we provide this information to
 -- 'Vulkan.Core10.Image.createImage' somehow, or allow the allocation size
 -- reported by 'Vulkan.Core10.MemoryManagement.getImageMemoryRequirements'
 -- to be approximate?
@@ -183,7 +183,7 @@
 -- as possible without causing compatibility problems for existing OpenGL
 -- ES applications or violating Vulkan requirements.
 --
--- 4) Should an 'AHardwareBuffer' with @AHARDWAREBUFFER_USAGE_CPU_@* usage
+-- 4) Should an 'AHardwareBuffer' with @AHARDWAREBUFFER_USAGE_CPU_*@ usage
 -- be mappable in Vulkan? Should it be possible to export an
 -- @AHardwareBuffers@ with such usage?
 --
@@ -209,13 +209,13 @@
 -- time. Can reference to them be added to this extension, or do they need
 -- a new extension?
 --
--- RESOLVED: This extension can document the interaction between the new
--- AHB formats\/usages and existing Vulkan features. No new Vulkan features
--- or implementation requirements can be added. The extension version
--- number will be incremented when this additional documentation is added,
--- but the version number does not indicate that an implementaiton supports
--- Vulkan memory or resources that map to the new 'AHardwareBuffer'
--- features: support for that must be queried with
+-- __RESOLVED__: This extension can document the interaction between the
+-- new AHB formats\/usages and existing Vulkan features. No new Vulkan
+-- features or implementation requirements can be added. The extension
+-- version number will be incremented when this additional documentation is
+-- added, but the version number does not indicate that an implementaiton
+-- supports Vulkan memory or resources that map to the new
+-- 'AHardwareBuffer' features: support for that must be queried with
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
 -- or is implied by successfully allocating a 'AHardwareBuffer' outside of
 -- Vulkan that uses the new feature and has a GPU usage flag.
@@ -378,7 +378,7 @@
                                              --
                                              -- #VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-01884# @buffer@
                                              -- /must/ be a valid Android hardware buffer object with at least one of
-                                             -- the @AHARDWAREBUFFER_USAGE_GPU_@* flags in its
+                                             -- the @AHARDWAREBUFFER_USAGE_GPU_*@ flags in its
                                              -- @AHardwareBuffer_Desc@::@usage@
                                              --
                                              -- #VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-parameter#
@@ -556,7 +556,7 @@
 -- are included in the @usage@ or @flags@ fields of
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'.
 -- It /must/ include at least one GPU usage flag
--- (@AHARDWAREBUFFER_USAGE_GPU_@*), even if none of the corresponding
+-- (@AHARDWAREBUFFER_USAGE_GPU_*@), even if none of the corresponding
 -- Vulkan usages or flags are requested.
 --
 -- Note
diff --git a/src/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs-boot b/src/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs-boot
--- a/src/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs-boot
+++ b/src/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs-boot
@@ -153,7 +153,7 @@
 --
 -- 2) The internal layout and therefore size of a 'AHardwareBuffer' image
 -- may depend on native usage flags that do not have corresponding Vulkan
--- counterparts. Do we provide this info to
+-- counterparts. Do we provide this information to
 -- 'Vulkan.Core10.Image.createImage' somehow, or allow the allocation size
 -- reported by 'Vulkan.Core10.MemoryManagement.getImageMemoryRequirements'
 -- to be approximate?
@@ -183,7 +183,7 @@
 -- as possible without causing compatibility problems for existing OpenGL
 -- ES applications or violating Vulkan requirements.
 --
--- 4) Should an 'AHardwareBuffer' with @AHARDWAREBUFFER_USAGE_CPU_@* usage
+-- 4) Should an 'AHardwareBuffer' with @AHARDWAREBUFFER_USAGE_CPU_*@ usage
 -- be mappable in Vulkan? Should it be possible to export an
 -- @AHardwareBuffers@ with such usage?
 --
@@ -209,13 +209,13 @@
 -- time. Can reference to them be added to this extension, or do they need
 -- a new extension?
 --
--- RESOLVED: This extension can document the interaction between the new
--- AHB formats\/usages and existing Vulkan features. No new Vulkan features
--- or implementation requirements can be added. The extension version
--- number will be incremented when this additional documentation is added,
--- but the version number does not indicate that an implementaiton supports
--- Vulkan memory or resources that map to the new 'AHardwareBuffer'
--- features: support for that must be queried with
+-- __RESOLVED__: This extension can document the interaction between the
+-- new AHB formats\/usages and existing Vulkan features. No new Vulkan
+-- features or implementation requirements can be added. The extension
+-- version number will be incremented when this additional documentation is
+-- added, but the version number does not indicate that an implementaiton
+-- supports Vulkan memory or resources that map to the new
+-- 'AHardwareBuffer' features: support for that must be queried with
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
 -- or is implied by successfully allocating a 'AHardwareBuffer' outside of
 -- Vulkan that uses the new feature and has a GPU usage flag.
diff --git a/src/Vulkan/Extensions/VK_EXT_4444_formats.hs b/src/Vulkan/Extensions/VK_EXT_4444_formats.hs
--- a/src/Vulkan/Extensions/VK_EXT_4444_formats.hs
+++ b/src/Vulkan/Extensions/VK_EXT_4444_formats.hs
@@ -132,8 +132,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDevice4444FormatsFeaturesEXT' structure
--- describe the following features:
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDevice4444FormatsFeaturesEXT' 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. 'PhysicalDevice4444FormatsFeaturesEXT' /can/ also be used in
+-- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_astc_decode_mode.hs b/src/Vulkan/Extensions/VK_EXT_astc_decode_mode.hs
--- a/src/Vulkan/Extensions/VK_EXT_astc_decode_mode.hs
+++ b/src/Vulkan/Extensions/VK_EXT_astc_decode_mode.hs
@@ -273,17 +273,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceASTCDecodeFeaturesEXT' structure
--- describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceASTCDecodeFeaturesEXT' structure is included in
--- the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether each feature is supported.
--- 'PhysicalDeviceASTCDecodeFeaturesEXT' /can/ also be included in the
--- @pNext@ chain of 'Vulkan.Core10.Device.createDevice' to enable features.
+-- 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. 'PhysicalDeviceASTCDecodeFeaturesEXT' /can/ also be used in
+-- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_blend_operation_advanced.hs b/src/Vulkan/Extensions/VK_EXT_blend_operation_advanced.hs
--- a/src/Vulkan/Extensions/VK_EXT_blend_operation_advanced.hs
+++ b/src/Vulkan/Extensions/VK_EXT_blend_operation_advanced.hs
@@ -331,18 +331,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceBlendOperationAdvancedFeaturesEXT'
--- structure describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceBlendOperationAdvancedFeaturesEXT' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether each feature is supported.
--- 'PhysicalDeviceBlendOperationAdvancedFeaturesEXT' /can/ also be included
--- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- enable the features.
+-- 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. 'PhysicalDeviceBlendOperationAdvancedFeaturesEXT' /can/ also
+-- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
+-- to selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
@@ -407,17 +408,15 @@
 -- describing advanced blending limits that can be supported by an
 -- implementation
 --
--- = Members
---
--- The members of the 'PhysicalDeviceBlendOperationAdvancedPropertiesEXT'
--- structure describe the following implementation-dependent limits:
---
 -- = Description
 --
 -- If the 'PhysicalDeviceBlendOperationAdvancedPropertiesEXT' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- 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)
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_buffer_device_address.hs b/src/Vulkan/Extensions/VK_EXT_buffer_device_address.hs
--- a/src/Vulkan/Extensions/VK_EXT_buffer_device_address.hs
+++ b/src/Vulkan/Extensions/VK_EXT_buffer_device_address.hs
@@ -236,18 +236,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceBufferDeviceAddressFeaturesEXT'
--- structure describe the following features:
+-- This structure describes the following features:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceBufferDeviceAddressFeaturesEXT' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceBufferDeviceAddressFeaturesEXT' /can/ also be included in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable
--- features.
+-- 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. 'PhysicalDeviceBufferDeviceAddressFeaturesEXT' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- Note
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_calibrated_timestamps.hs b/src/Vulkan/Extensions/VK_EXT_calibrated_timestamps.hs
--- a/src/Vulkan/Extensions/VK_EXT_calibrated_timestamps.hs
+++ b/src/Vulkan/Extensions/VK_EXT_calibrated_timestamps.hs
@@ -15,7 +15,7 @@
 --     185
 --
 -- [__Revision__]
---     1
+--     2
 --
 -- [__Extension and Version Dependencies__]
 --
@@ -271,11 +271,9 @@
 -- values actually written to @pTimeDomains@. If the value of
 -- @pTimeDomainCount@ is less than the number of calibrateable time domains
 -- supported, at most @pTimeDomainCount@ values will be written to
--- @pTimeDomains@. If @pTimeDomainCount@ is smaller than the number of
--- calibrateable time domains supported for the given @physicalDevice@,
--- 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned instead of
--- 'Vulkan.Core10.Enums.Result.SUCCESS' to indicate that not all the
--- available values were returned.
+-- @pTimeDomains@, and 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be
+-- returned instead of 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate
+-- that not all the available time domains were returned.
 --
 -- == Valid Usage (Implicit)
 --
@@ -554,11 +552,11 @@
   readPrec = enumReadPrec enumPrefixTimeDomainEXT showTableTimeDomainEXT conNameTimeDomainEXT TimeDomainEXT
 
 
-type EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1
+type EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 2
 
 -- No documentation found for TopLevel "VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION"
 pattern EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION :: forall a . Integral a => a
-pattern EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1
+pattern EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 2
 
 
 type EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps"
diff --git a/src/Vulkan/Extensions/VK_EXT_calibrated_timestamps.hs-boot b/src/Vulkan/Extensions/VK_EXT_calibrated_timestamps.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_calibrated_timestamps.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_calibrated_timestamps.hs-boot
@@ -15,7 +15,7 @@
 --     185
 --
 -- [__Revision__]
---     1
+--     2
 --
 -- [__Extension and Version Dependencies__]
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_color_write_enable.hs b/src/Vulkan/Extensions/VK_EXT_color_write_enable.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_color_write_enable.hs
@@ -0,0 +1,444 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_color_write_enable - device extension
+--
+-- == VK_EXT_color_write_enable
+--
+-- [__Name String__]
+--     @VK_EXT_color_write_enable@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     382
+--
+-- [__Revision__]
+--     1
+--
+-- [__Extension and Version Dependencies__]
+--
+--     -   Requires Vulkan 1.0
+--
+--     -   Requires @VK_KHR_get_physical_device_properties2@
+--
+-- [__Contact__]
+--
+--     -   Sharif Elcott
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_color_write_enable:%20&body=@selcott%20 >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2020-02-25
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Sharif Elcott, Google
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Piers Daniell, NVIDIA
+--
+-- == Description
+--
+-- This extension allows for selectively enabling and disabling writes to
+-- output color attachments via a pipeline dynamic state.
+--
+-- The intended use cases for this new state are mostly identical to those
+-- of colorWriteMask, such as selectively disabling writes to avoid
+-- feedback loops between subpasses or bandwidth savings for unused
+-- outputs. By making the state dynamic, one additional benefit is the
+-- ability to reduce pipeline counts and pipeline switching via shaders
+-- that write a superset of the desired data of which subsets are selected
+-- dynamically. The reason for a new state, colorWriteEnable, rather than
+-- making colorWriteMask dynamic is that, on many implementations, the more
+-- flexible per-channel semantics of the colorWriteMask state cannot be
+-- made dynamic in a performant manner.
+--
+-- == New Commands
+--
+-- -   'cmdSetColorWriteEnableEXT'
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceColorWriteEnableFeaturesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo':
+--
+--     -   'PipelineColorWriteCreateInfoEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME'
+--
+-- -   'EXT_COLOR_WRITE_ENABLE_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':
+--
+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT'
+--
+-- == Version History
+--
+-- -   Revision 1, 2020-01-25 (Sharif Elcott)
+--
+--     -   Internal revisions
+--
+-- = See Also
+--
+-- 'PhysicalDeviceColorWriteEnableFeaturesEXT',
+-- 'PipelineColorWriteCreateInfoEXT', 'cmdSetColorWriteEnableEXT'
+--
+-- = Document Notes
+--
+-- For more information, see the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_color_write_enable Vulkan Specification>
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_EXT_color_write_enable  ( cmdSetColorWriteEnableEXT
+                                                    , PhysicalDeviceColorWriteEnableFeaturesEXT(..)
+                                                    , PipelineColorWriteCreateInfoEXT(..)
+                                                    , EXT_COLOR_WRITE_ENABLE_SPEC_VERSION
+                                                    , pattern EXT_COLOR_WRITE_ENABLE_SPEC_VERSION
+                                                    , EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME
+                                                    , pattern EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME
+                                                    ) where
+
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Foreign.Marshal.Alloc (allocaBytesAligned)
+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 Data.Vector (generateM)
+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.CStruct.Utils (advancePtrBytes)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32(..))
+import Vulkan.Core10.Handles (CommandBuffer)
+import Vulkan.Core10.Handles (CommandBuffer(..))
+import Vulkan.Core10.Handles (CommandBuffer_T)
+import Vulkan.Dynamic (DeviceCmds(pVkCmdSetColorWriteEnableEXT))
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetColorWriteEnableEXT
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr Bool32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr Bool32 -> IO ()
+
+-- | vkCmdSetColorWriteEnableEXT - Enable or disable writes to a color
+-- attachment
+--
+-- = Description
+--
+-- This command sets the state for a given draw when the graphics pipeline
+-- is created with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+-- set in
+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetColorWriteEnableEXT-None-04803# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdSetColorWriteEnableEXT-attachmentCount-04804#
+--     @attachmentCount@ /must/ be equal to the @attachmentCount@ member of
+--     the 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'
+--     structure specified during pipeline creation
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetColorWriteEnableEXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetColorWriteEnableEXT-pColorWriteEnables-parameter#
+--     @pColorWriteEnables@ /must/ be a valid pointer to an array of
+--     @attachmentCount@ 'Vulkan.Core10.FundamentalTypes.Bool32' values
+--
+-- -   #VUID-vkCmdSetColorWriteEnableEXT-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-vkCmdSetColorWriteEnableEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- -   #VUID-vkCmdSetColorWriteEnableEXT-attachmentCount-arraylength#
+--     @attachmentCount@ /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#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |                                                                                                                                     |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdSetColorWriteEnableEXT :: forall io
+                           . (MonadIO io)
+                          => -- | @commandBuffer@ is the command buffer into which the command will be
+                             -- recorded.
+                             CommandBuffer
+                          -> -- | @pColorWriteEnables@ is a pointer to an array of per target attachment
+                             -- boolean values specifying whether color writes are enabled for the given
+                             -- attachment.
+                             ("colorWriteEnables" ::: Vector Bool)
+                          -> io ()
+cmdSetColorWriteEnableEXT commandBuffer colorWriteEnables = liftIO . evalContT $ do
+  let vkCmdSetColorWriteEnableEXTPtr = pVkCmdSetColorWriteEnableEXT (deviceCmds (commandBuffer :: CommandBuffer))
+  lift $ unless (vkCmdSetColorWriteEnableEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetColorWriteEnableEXT is null" Nothing Nothing
+  let vkCmdSetColorWriteEnableEXT' = mkVkCmdSetColorWriteEnableEXT vkCmdSetColorWriteEnableEXTPtr
+  pPColorWriteEnables <- ContT $ allocaBytesAligned @Bool32 ((Data.Vector.length (colorWriteEnables)) * 4) 4
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPColorWriteEnables `plusPtr` (4 * (i)) :: Ptr Bool32) (boolToBool32 (e))) (colorWriteEnables)
+  lift $ traceAroundEvent "vkCmdSetColorWriteEnableEXT" (vkCmdSetColorWriteEnableEXT' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (colorWriteEnables)) :: Word32)) (pPColorWriteEnables))
+  pure $ ()
+
+
+-- | VkPhysicalDeviceColorWriteEnableFeaturesEXT - Structure describing
+-- whether writes to color attachments can be enabled and disabled
+-- dynamically
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceColorWriteEnableFeaturesEXT' 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. 'PhysicalDeviceColorWriteEnableFeaturesEXT' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceColorWriteEnableFeaturesEXT = PhysicalDeviceColorWriteEnableFeaturesEXT
+  { -- | #features-colorWriteEnable# @colorWriteEnable@ indicates that the
+    -- implementation supports the dynamic state
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'.
+    colorWriteEnable :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceColorWriteEnableFeaturesEXT)
+#endif
+deriving instance Show PhysicalDeviceColorWriteEnableFeaturesEXT
+
+instance ToCStruct PhysicalDeviceColorWriteEnableFeaturesEXT where
+  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceColorWriteEnableFeaturesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (colorWriteEnable))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceColorWriteEnableFeaturesEXT where
+  peekCStruct p = do
+    colorWriteEnable <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceColorWriteEnableFeaturesEXT
+             (bool32ToBool colorWriteEnable)
+
+instance Storable PhysicalDeviceColorWriteEnableFeaturesEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceColorWriteEnableFeaturesEXT where
+  zero = PhysicalDeviceColorWriteEnableFeaturesEXT
+           zero
+
+
+-- | VkPipelineColorWriteCreateInfoEXT - Structure specifying color write
+-- state of a newly created pipeline
+--
+-- = Description
+--
+-- When this structure is included in the @pNext@ chain of
+-- 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo', it defines
+-- per-attachment color write state. If this structure is not included in
+-- the @pNext@ chain, it is equivalent to specifying this structure with
+-- @attachmentCount@ equal to the @attachmentCount@ member of
+-- 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo', and
+-- @pColorWriteEnables@ pointing to an array of as many
+-- 'Vulkan.Core10.FundamentalTypes.TRUE' values.
+--
+-- If the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+-- feature is not enabled on the device, all
+-- 'Vulkan.Core10.FundamentalTypes.Bool32' elements in the
+-- @pColorWriteEnables@ array /must/ be
+-- 'Vulkan.Core10.FundamentalTypes.TRUE'.
+--
+-- Color Write Enable interacts with the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-color-write-mask Color Write Mask>
+-- as follows: * If @colorWriteEnable@ is
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', writes to the attachment are
+-- determined by the @colorWriteMask@. * If @colorWriteEnable@ is
+-- 'Vulkan.Core10.FundamentalTypes.FALSE', the @colorWriteMask@ is ignored
+-- and writes to all components of the attachment are disabled. This is
+-- equivalent to specifying a @colorWriteMask@ of 0.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkPipelineColorWriteCreateInfoEXT-pAttachments-04801# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     feature is not enabled, all elements of @pColorWriteEnables@ /must/
+--     be 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-VkPipelineColorWriteCreateInfoEXT-attachmentCount-04802#
+--     @attachmentCount@ /must/ be equal to the @attachmentCount@ member of
+--     the 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'
+--     structure specified during pipeline creation
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPipelineColorWriteCreateInfoEXT-sType-sType# @sType@ /must/
+--     be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT'
+--
+-- -   #VUID-VkPipelineColorWriteCreateInfoEXT-pColorWriteEnables-parameter#
+--     If @attachmentCount@ is not @0@, @pColorWriteEnables@ /must/ be a
+--     valid pointer to an array of @attachmentCount@
+--     'Vulkan.Core10.FundamentalTypes.Bool32' values
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PipelineColorWriteCreateInfoEXT = PipelineColorWriteCreateInfoEXT
+  { -- | @pColorWriteEnables@ is a pointer to an array of per target attachment
+    -- boolean values specifying whether color writes are enabled for the given
+    -- attachment.
+    colorWriteEnables :: Vector Bool }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PipelineColorWriteCreateInfoEXT)
+#endif
+deriving instance Show PipelineColorWriteCreateInfoEXT
+
+instance ToCStruct PipelineColorWriteCreateInfoEXT where
+  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PipelineColorWriteCreateInfoEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (colorWriteEnables)) :: Word32))
+    pPColorWriteEnables' <- ContT $ allocaBytesAligned @Bool32 ((Data.Vector.length (colorWriteEnables)) * 4) 4
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPColorWriteEnables' `plusPtr` (4 * (i)) :: Ptr Bool32) (boolToBool32 (e))) (colorWriteEnables)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Bool32))) (pPColorWriteEnables')
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct PipelineColorWriteCreateInfoEXT where
+  peekCStruct p = do
+    attachmentCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pColorWriteEnables <- peek @(Ptr Bool32) ((p `plusPtr` 24 :: Ptr (Ptr Bool32)))
+    pColorWriteEnables' <- generateM (fromIntegral attachmentCount) (\i -> do
+      pColorWriteEnablesElem <- peek @Bool32 ((pColorWriteEnables `advancePtrBytes` (4 * (i)) :: Ptr Bool32))
+      pure $ bool32ToBool pColorWriteEnablesElem)
+    pure $ PipelineColorWriteCreateInfoEXT
+             pColorWriteEnables'
+
+instance Zero PipelineColorWriteCreateInfoEXT where
+  zero = PipelineColorWriteCreateInfoEXT
+           mempty
+
+
+type EXT_COLOR_WRITE_ENABLE_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_EXT_COLOR_WRITE_ENABLE_SPEC_VERSION"
+pattern EXT_COLOR_WRITE_ENABLE_SPEC_VERSION :: forall a . Integral a => a
+pattern EXT_COLOR_WRITE_ENABLE_SPEC_VERSION = 1
+
+
+type EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME = "VK_EXT_color_write_enable"
+
+-- No documentation found for TopLevel "VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME"
+pattern EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME = "VK_EXT_color_write_enable"
+
diff --git a/src/Vulkan/Extensions/VK_EXT_color_write_enable.hs-boot b/src/Vulkan/Extensions/VK_EXT_color_write_enable.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_color_write_enable.hs-boot
@@ -0,0 +1,136 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_color_write_enable - device extension
+--
+-- == VK_EXT_color_write_enable
+--
+-- [__Name String__]
+--     @VK_EXT_color_write_enable@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     382
+--
+-- [__Revision__]
+--     1
+--
+-- [__Extension and Version Dependencies__]
+--
+--     -   Requires Vulkan 1.0
+--
+--     -   Requires @VK_KHR_get_physical_device_properties2@
+--
+-- [__Contact__]
+--
+--     -   Sharif Elcott
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_color_write_enable:%20&body=@selcott%20 >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2020-02-25
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Sharif Elcott, Google
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Piers Daniell, NVIDIA
+--
+-- == Description
+--
+-- This extension allows for selectively enabling and disabling writes to
+-- output color attachments via a pipeline dynamic state.
+--
+-- The intended use cases for this new state are mostly identical to those
+-- of colorWriteMask, such as selectively disabling writes to avoid
+-- feedback loops between subpasses or bandwidth savings for unused
+-- outputs. By making the state dynamic, one additional benefit is the
+-- ability to reduce pipeline counts and pipeline switching via shaders
+-- that write a superset of the desired data of which subsets are selected
+-- dynamically. The reason for a new state, colorWriteEnable, rather than
+-- making colorWriteMask dynamic is that, on many implementations, the more
+-- flexible per-channel semantics of the colorWriteMask state cannot be
+-- made dynamic in a performant manner.
+--
+-- == New Commands
+--
+-- -   'cmdSetColorWriteEnableEXT'
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceColorWriteEnableFeaturesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo':
+--
+--     -   'PipelineColorWriteCreateInfoEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME'
+--
+-- -   'EXT_COLOR_WRITE_ENABLE_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':
+--
+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT'
+--
+-- == Version History
+--
+-- -   Revision 1, 2020-01-25 (Sharif Elcott)
+--
+--     -   Internal revisions
+--
+-- = See Also
+--
+-- 'PhysicalDeviceColorWriteEnableFeaturesEXT',
+-- 'PipelineColorWriteCreateInfoEXT', 'cmdSetColorWriteEnableEXT'
+--
+-- = Document Notes
+--
+-- For more information, see the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_color_write_enable Vulkan Specification>
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_EXT_color_write_enable  ( PhysicalDeviceColorWriteEnableFeaturesEXT
+                                                    , PipelineColorWriteCreateInfoEXT
+                                                    ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceColorWriteEnableFeaturesEXT
+
+instance ToCStruct PhysicalDeviceColorWriteEnableFeaturesEXT
+instance Show PhysicalDeviceColorWriteEnableFeaturesEXT
+
+instance FromCStruct PhysicalDeviceColorWriteEnableFeaturesEXT
+
+
+data PipelineColorWriteCreateInfoEXT
+
+instance ToCStruct PipelineColorWriteCreateInfoEXT
+instance Show PipelineColorWriteCreateInfoEXT
+
+instance FromCStruct PipelineColorWriteCreateInfoEXT
+
diff --git a/src/Vulkan/Extensions/VK_EXT_conditional_rendering.hs b/src/Vulkan/Extensions/VK_EXT_conditional_rendering.hs
--- a/src/Vulkan/Extensions/VK_EXT_conditional_rendering.hs
+++ b/src/Vulkan/Extensions/VK_EXT_conditional_rendering.hs
@@ -118,12 +118,12 @@
 --
 -- 1) Should conditional rendering affect copy and blit commands?
 --
--- RESOLVED: Conditional rendering should not affect copies and blits.
+-- __RESOLVED__: Conditional rendering should not affect copies and blits.
 --
 -- 2) Should secondary command buffers be allowed to execute while
 -- conditional rendering is active in the primary command buffer?
 --
--- RESOLVED: The rendering commands in secondary command buffer will be
+-- __RESOLVED__: The rendering commands in secondary command buffer will be
 -- affected by an active conditional rendering in primary command buffer if
 -- the @conditionalRenderingEnable@ is set to
 -- 'Vulkan.Core10.FundamentalTypes.TRUE'. Conditional rendering /must/ not
@@ -396,7 +396,7 @@
 
 
 -- | VkConditionalRenderingBeginInfoEXT - Structure specifying conditional
--- rendering begin info
+-- rendering begin information
 --
 -- = Description
 --
@@ -503,7 +503,7 @@
 
 
 -- | VkCommandBufferInheritanceConditionalRenderingInfoEXT - Structure
--- specifying command buffer inheritance info
+-- specifying command buffer inheritance information
 --
 -- = Description
 --
@@ -579,15 +579,21 @@
 -- if a secondary command buffer can be executed if conditional rendering
 -- is active in the primary command buffer
 --
+-- = Members
+--
+-- This structure describes the following features:
+--
 -- = Description
 --
 -- If the 'PhysicalDeviceConditionalRenderingFeaturesEXT' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating the implementation-dependent
--- behavior. 'PhysicalDeviceConditionalRenderingFeaturesEXT' /can/ also be
--- included in @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- enable the features.
+-- 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. 'PhysicalDeviceConditionalRenderingFeaturesEXT' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_conditional_rendering.hs-boot b/src/Vulkan/Extensions/VK_EXT_conditional_rendering.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_conditional_rendering.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_conditional_rendering.hs-boot
@@ -118,12 +118,12 @@
 --
 -- 1) Should conditional rendering affect copy and blit commands?
 --
--- RESOLVED: Conditional rendering should not affect copies and blits.
+-- __RESOLVED__: Conditional rendering should not affect copies and blits.
 --
 -- 2) Should secondary command buffers be allowed to execute while
 -- conditional rendering is active in the primary command buffer?
 --
--- RESOLVED: The rendering commands in secondary command buffer will be
+-- __RESOLVED__: The rendering commands in secondary command buffer will be
 -- affected by an active conditional rendering in primary command buffer if
 -- the @conditionalRenderingEnable@ is set to
 -- 'Vulkan.Core10.FundamentalTypes.TRUE'. Conditional rendering /must/ not
diff --git a/src/Vulkan/Extensions/VK_EXT_conservative_rasterization.hs b/src/Vulkan/Extensions/VK_EXT_conservative_rasterization.hs
--- a/src/Vulkan/Extensions/VK_EXT_conservative_rasterization.hs
+++ b/src/Vulkan/Extensions/VK_EXT_conservative_rasterization.hs
@@ -208,18 +208,15 @@
 -- describing conservative raster properties that can be supported by an
 -- implementation
 --
--- = Members
---
--- The members of the
--- 'PhysicalDeviceConservativeRasterizationPropertiesEXT' structure
--- describe the following implementation-dependent limits:
---
 -- = Description
 --
 -- If the 'PhysicalDeviceConservativeRasterizationPropertiesEXT' structure
--- is included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits and properties.
+-- 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)
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_custom_border_color.hs b/src/Vulkan/Extensions/VK_EXT_custom_border_color.hs
--- a/src/Vulkan/Extensions/VK_EXT_custom_border_color.hs
+++ b/src/Vulkan/Extensions/VK_EXT_custom_border_color.hs
@@ -21,6 +21,12 @@
 --
 --     -   Requires Vulkan 1.0
 --
+-- [__Special Uses__]
+--
+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse OpenGL \/ ES support>
+--
+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse D3D support>
+--
 -- [__Contact__]
 --
 --     -   Liam Middlebrook
@@ -132,8 +138,8 @@
 -- VkClearColorValue is used here because it provides a union of
 -- float,int,uint types.
 --
--- RESOLVED: Will re-use existing VkClearColorValue structure in order to
--- easily take advantage of float,int,uint borderColor types.
+-- __RESOLVED__: Will reuse existing VkClearColorValue structure in order
+-- to easily take advantage of float,int,uint borderColor types.
 --
 -- 2) For hardware which supports a limited number of border colors what
 -- happens if that number is exceeded? Should this be handled by the driver
@@ -141,7 +147,7 @@
 -- using a new Object type, however that may have lead to additional system
 -- resource consumption which would otherwise not be required.
 --
--- RESOLVED: Added
+-- __RESOLVED__: Added
 -- 'PhysicalDeviceCustomBorderColorPropertiesEXT'::@maxCustomBorderColorSamplers@
 -- for tracking implementation-specific limit, and Valid Usage statement
 -- handling overflow.
@@ -152,19 +158,19 @@
 -- work on them for implementations that can support it, or forbidding it
 -- entirely.
 --
--- RESOLVED: Samplers created with a custom border color are forbidden from
--- being immutable. This resolves concerns for implementations where the
--- custom border color is an index to a LUT instead of being directly
+-- __RESOLVED__: Samplers created with a custom border color are forbidden
+-- from being immutable. This resolves concerns for implementations where
+-- the custom border color is an index to a LUT instead of being directly
 -- embedded into sampler state.
 --
 -- 4) Should UINT and SINT (unsigned integer and signed integer) border
 -- color types be separated or should they be combined into one generic INT
 -- (integer) type?
 --
--- RESOLVED: Separating these doesn’t make much sense as the existing fixed
--- border color types don’t have this distinction, and there is no reason
--- in hardware to do so. This separation would also create unnecessary work
--- and considerations for the application.
+-- __RESOLVED__: Separating these doesn’t make much sense as the existing
+-- fixed border color types don’t have this distinction, and there is no
+-- reason in hardware to do so. This separation would also create
+-- unnecessary work and considerations for the application.
 --
 -- == Version History
 --
@@ -368,10 +374,15 @@
 -- | VkPhysicalDeviceCustomBorderColorPropertiesEXT - Structure describing
 -- whether custom border colors can be supported by an implementation
 --
--- = Members
+-- = Description
 --
--- The members of the 'PhysicalDeviceCustomBorderColorPropertiesEXT'
--- structure describe the following features:
+-- If the 'PhysicalDeviceCustomBorderColorPropertiesEXT' 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)
 --
@@ -426,8 +437,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceCustomBorderColorFeaturesEXT'
--- structure describe the following features:
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceCustomBorderColorFeaturesEXT' 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. 'PhysicalDeviceCustomBorderColorFeaturesEXT' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_custom_border_color.hs-boot b/src/Vulkan/Extensions/VK_EXT_custom_border_color.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_custom_border_color.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_custom_border_color.hs-boot
@@ -21,6 +21,12 @@
 --
 --     -   Requires Vulkan 1.0
 --
+-- [__Special Uses__]
+--
+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse OpenGL \/ ES support>
+--
+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse D3D support>
+--
 -- [__Contact__]
 --
 --     -   Liam Middlebrook
@@ -132,8 +138,8 @@
 -- VkClearColorValue is used here because it provides a union of
 -- float,int,uint types.
 --
--- RESOLVED: Will re-use existing VkClearColorValue structure in order to
--- easily take advantage of float,int,uint borderColor types.
+-- __RESOLVED__: Will reuse existing VkClearColorValue structure in order
+-- to easily take advantage of float,int,uint borderColor types.
 --
 -- 2) For hardware which supports a limited number of border colors what
 -- happens if that number is exceeded? Should this be handled by the driver
@@ -141,7 +147,7 @@
 -- using a new Object type, however that may have lead to additional system
 -- resource consumption which would otherwise not be required.
 --
--- RESOLVED: Added
+-- __RESOLVED__: Added
 -- 'PhysicalDeviceCustomBorderColorPropertiesEXT'::@maxCustomBorderColorSamplers@
 -- for tracking implementation-specific limit, and Valid Usage statement
 -- handling overflow.
@@ -152,19 +158,19 @@
 -- work on them for implementations that can support it, or forbidding it
 -- entirely.
 --
--- RESOLVED: Samplers created with a custom border color are forbidden from
--- being immutable. This resolves concerns for implementations where the
--- custom border color is an index to a LUT instead of being directly
+-- __RESOLVED__: Samplers created with a custom border color are forbidden
+-- from being immutable. This resolves concerns for implementations where
+-- the custom border color is an index to a LUT instead of being directly
 -- embedded into sampler state.
 --
 -- 4) Should UINT and SINT (unsigned integer and signed integer) border
 -- color types be separated or should they be combined into one generic INT
 -- (integer) type?
 --
--- RESOLVED: Separating these doesn’t make much sense as the existing fixed
--- border color types don’t have this distinction, and there is no reason
--- in hardware to do so. This separation would also create unnecessary work
--- and considerations for the application.
+-- __RESOLVED__: Separating these doesn’t make much sense as the existing
+-- fixed border color types don’t have this distinction, and there is no
+-- reason in hardware to do so. This separation would also create
+-- unnecessary work and considerations for the application.
 --
 -- == Version History
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_debug_report.hs b/src/Vulkan/Extensions/VK_EXT_debug_report.hs
--- a/src/Vulkan/Extensions/VK_EXT_debug_report.hs
+++ b/src/Vulkan/Extensions/VK_EXT_debug_report.hs
@@ -15,7 +15,7 @@
 --     12
 --
 -- [__Revision__]
---     9
+--     10
 --
 -- [__Extension and Version Dependencies__]
 --
@@ -247,7 +247,7 @@
 -- 4) How do you compare handles returned by the debug_report callback to
 -- the application’s handles?
 --
--- RESOLVED: Due to the different nature of dispatchable and
+-- __RESOLVED__: Due to the different nature of dispatchable and
 -- nondispatchable handles there is no generic way (that we know of) that
 -- works for common compilers with 32bit, 64bit, C and C++. We recommend
 -- applications use the same cast that the validation layers use:
@@ -379,6 +379,8 @@
                                                                         , DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT
                                                                         , DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT
                                                                         , DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT
+                                                                        , DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT
+                                                                        , DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT
                                                                         , DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT
                                                                         , ..
                                                                         )
@@ -1038,6 +1040,10 @@
 pattern DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT   = DebugReportObjectTypeEXT 1000156000
 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT"
 pattern DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = DebugReportObjectTypeEXT 1000150000
+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT"
+pattern DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT            = DebugReportObjectTypeEXT 1000029001
+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT"
+pattern DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT              = DebugReportObjectTypeEXT 1000029000
 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT"
 pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = DebugReportObjectTypeEXT 1000085000
 {-# complete DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,
@@ -1075,6 +1081,8 @@
              DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT,
              DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT,
              DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT,
+             DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT,
+             DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT,
              DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT :: DebugReportObjectTypeEXT #-}
 
 conNameDebugReportObjectTypeEXT :: String
@@ -1120,6 +1128,8 @@
   , (DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT , "ACCELERATION_STRUCTURE_NV_EXT")
   , (DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT  , "SAMPLER_YCBCR_CONVERSION_EXT")
   , (DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT, "ACCELERATION_STRUCTURE_KHR_EXT")
+  , (DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT           , "CU_FUNCTION_NVX_EXT")
+  , (DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT             , "CU_MODULE_NVX_EXT")
   , (DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT, "DESCRIPTOR_UPDATE_TEMPLATE_EXT")
   ]
 
@@ -1165,11 +1175,11 @@
 type PFN_vkDebugReportCallbackEXT = FunPtr FN_vkDebugReportCallbackEXT
 
 
-type EXT_DEBUG_REPORT_SPEC_VERSION = 9
+type EXT_DEBUG_REPORT_SPEC_VERSION = 10
 
 -- No documentation found for TopLevel "VK_EXT_DEBUG_REPORT_SPEC_VERSION"
 pattern EXT_DEBUG_REPORT_SPEC_VERSION :: forall a . Integral a => a
-pattern EXT_DEBUG_REPORT_SPEC_VERSION = 9
+pattern EXT_DEBUG_REPORT_SPEC_VERSION = 10
 
 
 type EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report"
diff --git a/src/Vulkan/Extensions/VK_EXT_debug_report.hs-boot b/src/Vulkan/Extensions/VK_EXT_debug_report.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_debug_report.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_debug_report.hs-boot
@@ -15,7 +15,7 @@
 --     12
 --
 -- [__Revision__]
---     9
+--     10
 --
 -- [__Extension and Version Dependencies__]
 --
@@ -247,7 +247,7 @@
 -- 4) How do you compare handles returned by the debug_report callback to
 -- the application’s handles?
 --
--- RESOLVED: Due to the different nature of dispatchable and
+-- __RESOLVED__: Due to the different nature of dispatchable and
 -- nondispatchable handles there is no generic way (that we know of) that
 -- works for common compilers with 32bit, 64bit, C and C++. We recommend
 -- applications use the same cast that the validation layers use:
diff --git a/src/Vulkan/Extensions/VK_EXT_debug_utils.hs b/src/Vulkan/Extensions/VK_EXT_debug_utils.hs
--- a/src/Vulkan/Extensions/VK_EXT_debug_utils.hs
+++ b/src/Vulkan/Extensions/VK_EXT_debug_utils.hs
@@ -1341,8 +1341,8 @@
                             . (MonadIO io)
                            => -- | @instance@ is the debug stream’s 'Vulkan.Core10.Handles.Instance'.
                               Instance
-                           -> -- | @messageSeverity@ is the 'DebugUtilsMessageSeverityFlagBitsEXT' severity
-                              -- of this event\/message.
+                           -> -- | @messageSeverity@ is a 'DebugUtilsMessageSeverityFlagBitsEXT' value
+                              -- specifying the severity of this event\/message.
                               DebugUtilsMessageSeverityFlagBitsEXT
                            -> -- | @messageTypes@ is a bitmask of 'DebugUtilsMessageTypeFlagBitsEXT'
                               -- specifying which type of event(s) to identify with this message.
@@ -2043,6 +2043,24 @@
 
 -- | VkDebugUtilsMessageSeverityFlagBitsEXT - Bitmask specifying which
 -- severities of events cause a debug messenger callback
+--
+-- = Description
+--
+-- Note
+--
+-- The values of 'DebugUtilsMessageSeverityFlagBitsEXT' are sorted based on
+-- severity. The higher the flag value, the more severe the message. This
+-- allows for simple boolean operation comparisons when looking at
+-- 'DebugUtilsMessageSeverityFlagBitsEXT' values.
+--
+-- For example:
+--
+-- >     if (messageSeverity >= VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT) {
+-- >         // Do something for warnings and errors
+-- >     }
+--
+-- In addition, space has been left between the enums to allow for later
+-- addition of new severities in between the existing values.
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_depth_clip_enable.hs b/src/Vulkan/Extensions/VK_EXT_depth_clip_enable.hs
--- a/src/Vulkan/Extensions/VK_EXT_depth_clip_enable.hs
+++ b/src/Vulkan/Extensions/VK_EXT_depth_clip_enable.hs
@@ -154,18 +154,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceDepthClipEnableFeaturesEXT' structure
--- describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceDepthClipEnableFeaturesEXT' structure is included
--- in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceDepthClipEnableFeaturesEXT' /can/ also be included in the
--- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable this
--- feature.
+-- 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. 'PhysicalDeviceDepthClipEnableFeaturesEXT' /can/ also be used
+-- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_device_memory_report.hs b/src/Vulkan/Extensions/VK_EXT_device_memory_report.hs
--- a/src/Vulkan/Extensions/VK_EXT_device_memory_report.hs
+++ b/src/Vulkan/Extensions/VK_EXT_device_memory_report.hs
@@ -114,9 +114,9 @@
 -- instead of adding the new callback structure in this extension?
 --
 -- __RESOLVED__: No. Our memory reporting layer that combines this
--- information with other memory info it collects directly (e.g. bindings
--- of resources to 'Vulkan.Core10.Handles.DeviceMemory') would have to
--- intercept all entry points that take a
+-- information with other memory information it collects directly (e.g.
+-- bindings of resources to 'Vulkan.Core10.Handles.DeviceMemory') would
+-- have to intercept all entry points that take a
 -- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' parameter and
 -- inject its own @pfnInternalAllocation@ and @pfnInternalFree@. That’s
 -- maybe doable for the extensions we know about, but not for ones we
@@ -130,9 +130,9 @@
 --
 -- We’re interested in both alloc\/free and import\/unimport. The latter is
 -- fairly important for tracking (and avoiding double-counting) of
--- swapchain images (still true with \"native swapchains\" based on
--- external memory) and media\/camera interop. Though we might be able to
--- handle this with additional
+-- swapchain images (still true with “native swapchains” based on external
+-- memory) and media\/camera interop. Though we might be able to handle
+-- this with additional
 -- 'Vulkan.Core10.Enums.InternalAllocationType.InternalAllocationType'
 -- values, for import\/export we do want to be able to tie this to the
 -- external resource, which is one thing that the @memoryObjectId@ is for.
@@ -153,7 +153,7 @@
 -- do) leading up to 1.0.
 --
 -- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' is described in
--- a section called \"Host memory\" and the intro to it is very explicitly
+-- a section called “Host memory” and the intro to it is very explicitly
 -- about host memory. The other callbacks are all inherently about host
 -- memory. But this extension is very focused on device memory.
 --
@@ -201,7 +201,7 @@
 -- in the same thread with the Vulkan commands, and the note is to remind
 -- the applications to handle this case properly.
 --
--- 7) Should we add an additional \"allocation failed\" event type with
+-- 7) Should we add an additional “allocation failed” event type with
 -- things like size and heap index reported?
 --
 -- __RESOLVED__ Yes. This fits in well with the callback infrastructure
@@ -305,18 +305,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceDeviceMemoryReportFeaturesEXT'
--- structure describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceDeviceMemoryReportFeaturesEXT' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with a value indicating whether the feature is supported.
--- 'PhysicalDeviceDeviceMemoryReportFeaturesEXT' /can/ also be used in the
--- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable the
--- feature.
+-- 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. 'PhysicalDeviceDeviceMemoryReportFeaturesEXT' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
@@ -482,7 +483,7 @@
 -- usually will not yet exist when the application or tool receives the
 -- callback. @objectHandle@ will only exist when the create or allocate
 -- call that triggered the event returns, and if the allocation or import
--- ends up failing @objectHandle@ won’t ever exist.
+-- ends up failing @objectHandle@ will not ever exist.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_device_memory_report.hs-boot b/src/Vulkan/Extensions/VK_EXT_device_memory_report.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_device_memory_report.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_device_memory_report.hs-boot
@@ -114,9 +114,9 @@
 -- instead of adding the new callback structure in this extension?
 --
 -- __RESOLVED__: No. Our memory reporting layer that combines this
--- information with other memory info it collects directly (e.g. bindings
--- of resources to 'Vulkan.Core10.Handles.DeviceMemory') would have to
--- intercept all entry points that take a
+-- information with other memory information it collects directly (e.g.
+-- bindings of resources to 'Vulkan.Core10.Handles.DeviceMemory') would
+-- have to intercept all entry points that take a
 -- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' parameter and
 -- inject its own @pfnInternalAllocation@ and @pfnInternalFree@. That’s
 -- maybe doable for the extensions we know about, but not for ones we
@@ -130,9 +130,9 @@
 --
 -- We’re interested in both alloc\/free and import\/unimport. The latter is
 -- fairly important for tracking (and avoiding double-counting) of
--- swapchain images (still true with \"native swapchains\" based on
--- external memory) and media\/camera interop. Though we might be able to
--- handle this with additional
+-- swapchain images (still true with “native swapchains” based on external
+-- memory) and media\/camera interop. Though we might be able to handle
+-- this with additional
 -- 'Vulkan.Core10.Enums.InternalAllocationType.InternalAllocationType'
 -- values, for import\/export we do want to be able to tie this to the
 -- external resource, which is one thing that the @memoryObjectId@ is for.
@@ -153,7 +153,7 @@
 -- do) leading up to 1.0.
 --
 -- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' is described in
--- a section called \"Host memory\" and the intro to it is very explicitly
+-- a section called “Host memory” and the intro to it is very explicitly
 -- about host memory. The other callbacks are all inherently about host
 -- memory. But this extension is very focused on device memory.
 --
@@ -201,7 +201,7 @@
 -- in the same thread with the Vulkan commands, and the note is to remind
 -- the applications to handle this case properly.
 --
--- 7) Should we add an additional \"allocation failed\" event type with
+-- 7) Should we add an additional “allocation failed” event type with
 -- things like size and heap index reported?
 --
 -- __RESOLVED__ Yes. This fits in well with the callback infrastructure
diff --git a/src/Vulkan/Extensions/VK_EXT_discard_rectangles.hs b/src/Vulkan/Extensions/VK_EXT_discard_rectangles.hs
--- a/src/Vulkan/Extensions/VK_EXT_discard_rectangles.hs
+++ b/src/Vulkan/Extensions/VK_EXT_discard_rectangles.hs
@@ -238,6 +238,11 @@
 --     @pDiscardRectangles@ /must/ not cause a signed integer addition
 --     overflow
 --
+-- -   #VUID-vkCmdSetDiscardRectangleEXT-viewportScissor2D-04788# If this
+--     command is recorded in a secondary command buffer with
+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV'::@viewportScissor2D@
+--     enabled, then this function /must/ not be called.
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-parameter#
@@ -309,17 +314,15 @@
 -- | VkPhysicalDeviceDiscardRectanglePropertiesEXT - Structure describing
 -- discard rectangle limits that can be supported by an implementation
 --
--- = Members
---
--- The members of the 'PhysicalDeviceDiscardRectanglePropertiesEXT'
--- structure describe the following implementation-dependent limits:
---
 -- = Description
 --
 -- If the 'PhysicalDeviceDiscardRectanglePropertiesEXT' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- 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)
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_display_control.hs b/src/Vulkan/Extensions/VK_EXT_display_control.hs
--- a/src/Vulkan/Extensions/VK_EXT_display_control.hs
+++ b/src/Vulkan/Extensions/VK_EXT_display_control.hs
@@ -296,8 +296,8 @@
                           Device
                        -> -- | @display@ is the display whose power state is modified.
                           DisplayKHR
-                       -> -- | @pDisplayPowerInfo@ is a 'DisplayPowerInfoEXT' structure specifying the
-                          -- new power state of @display@.
+                       -> -- | @pDisplayPowerInfo@ is a pointer to a 'DisplayPowerInfoEXT' structure
+                          -- specifying the new power state of @display@.
                           DisplayPowerInfoEXT
                        -> io ()
 displayPowerControlEXT device display displayPowerInfo = liftIO . evalContT $ do
@@ -523,7 +523,9 @@
                           Device
                        -> -- | @swapchain@ is the swapchain from which to query the counter value.
                           SwapchainKHR
-                       -> -- | @counter@ is the counter to query.
+                       -> -- | @counter@ is a
+                          -- 'Vulkan.Extensions.VK_EXT_display_surface_counter.SurfaceCounterFlagBitsEXT'
+                          -- value specifying the counter to query.
                           SurfaceCounterFlagBitsEXT
                        -> io (("counterValue" ::: Word64))
 getSwapchainCounterEXT device swapchain counter = liftIO . evalContT $ do
diff --git a/src/Vulkan/Extensions/VK_EXT_display_surface_counter.hs b/src/Vulkan/Extensions/VK_EXT_display_surface_counter.hs
--- a/src/Vulkan/Extensions/VK_EXT_display_surface_counter.hs
+++ b/src/Vulkan/Extensions/VK_EXT_display_surface_counter.hs
@@ -348,7 +348,10 @@
     poke ((p `plusPtr` 32 :: Ptr Extent2D)) (zero)
     poke ((p `plusPtr` 40 :: Ptr Extent2D)) (zero)
     poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 52 :: Ptr SurfaceTransformFlagsKHR)) (zero)
     poke ((p `plusPtr` 56 :: Ptr SurfaceTransformFlagBitsKHR)) (zero)
+    poke ((p `plusPtr` 60 :: Ptr CompositeAlphaFlagsKHR)) (zero)
+    poke ((p `plusPtr` 64 :: Ptr ImageUsageFlags)) (zero)
     f
 
 instance FromCStruct SurfaceCapabilities2EXT where
diff --git a/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state.hs b/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state.hs
--- a/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state.hs
+++ b/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state.hs
@@ -486,6 +486,11 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>
 --     feature is not enabled, @viewportCount@ /must/ be @1@
 --
+-- -   #VUID-vkCmdSetViewportWithCountEXT-commandBuffer-04819#
+--     @commandBuffer@ /must/ not have
+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV'::@viewportScissor2D@
+--     enabled.
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkCmdSetViewportWithCountEXT-commandBuffer-parameter#
@@ -583,6 +588,11 @@
 --     (@offset.y@ + @extent.height@) /must/ not cause a signed integer
 --     addition overflow for any element of @pScissors@
 --
+-- -   #VUID-vkCmdSetScissorWithCountEXT-commandBuffer-04820#
+--     @commandBuffer@ /must/ not have
+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV'::@viewportScissor2D@
+--     enabled.
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkCmdSetScissorWithCountEXT-commandBuffer-parameter#
@@ -664,7 +674,7 @@
 -- bound size of the vertex buffer starting from the corresponding elements
 -- of @pBuffers@[i] plus @pOffsets@[i]. All vertex input attributes that
 -- use each of these bindings will use these updated addresses in their
--- address calculations for subsequent draw commands.
+-- address calculations for subsequent drawing commands.
 --
 -- If the bound pipeline state object was created with the
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
@@ -710,12 +720,6 @@
 --     @pBuffers@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
 --     corresponding element of @pOffsets@ /must/ be zero
 --
--- -   #VUID-vkCmdBindVertexBuffers2EXT-pStrides-03361# If the bound
---     pipeline state object was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
---     dynamic state enabled then @pStrides@ /must/ not be @NULL@,
---     otherwise @pStrides@ /must/ be @NULL@
---
 -- -   #VUID-vkCmdBindVertexBuffers2EXT-pStrides-03362# If @pStrides@ is
 --     not @NULL@ each element of @pStrides@ /must/ be less than or equal
 --     to
@@ -723,10 +727,13 @@
 --
 -- -   #VUID-vkCmdBindVertexBuffers2EXT-pStrides-03363# If @pStrides@ is
 --     not @NULL@ each element of @pStrides@ /must/ be greater than or
---     equal to the maximum extent of of all vertex input attributes
---     fetched from the corresponding binding, where the extent is
---     calculated as the VkVertexInputAttributeDescription::offset plus
---     VkVertexInputAttributeDescription::format size
+--     equal to the maximum extent of all vertex input attributes fetched
+--     from the corresponding binding, where the extent is calculated as
+--     the
+--     'Vulkan.Core10.Pipeline.VertexInputAttributeDescription'::@offset@
+--     plus
+--     'Vulkan.Core10.Pipeline.VertexInputAttributeDescription'::@format@
+--     size
 --
 -- == Valid Usage (Implicit)
 --
@@ -801,11 +808,10 @@
                             ("buffers" ::: Vector Buffer)
                          -> -- | @pOffsets@ is a pointer to an array of buffer offsets.
                             ("offsets" ::: Vector DeviceSize)
-                         -> -- | @pSizes@ is an optional array of the size in bytes of vertex data bound
-                            -- from @pBuffers@.
+                         -> -- | @pSizes@ is @NULL@ or a pointer to an array of the size in bytes of
+                            -- vertex data bound from @pBuffers@.
                             ("sizes" ::: Vector DeviceSize)
-                         -> -- | @pStrides@ is optional, and when not @NULL@ is a pointer to an array of
-                            -- buffer strides.
+                         -> -- | @pStrides@ is @NULL@ or a pointer to an array of buffer strides.
                             ("strides" ::: Vector DeviceSize)
                          -> io ()
 cmdBindVertexBuffers2EXT commandBuffer firstBinding buffers offsets sizes strides = liftIO . evalContT $ do
@@ -1314,8 +1320,9 @@
                    => -- | @commandBuffer@ is the command buffer into which the command will be
                       -- recorded.
                       CommandBuffer
-                   -> -- | @faceMask@ is a bitmask of VkStencilFaceFlagBits specifying the set of
-                      -- stencil state for which to update the stencil operation.
+                   -> -- | @faceMask@ is a bitmask of
+                      -- 'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits' specifying
+                      -- the set of stencil state for which to update the stencil operation.
                       ("faceMask" ::: StencilFaceFlags)
                    -> -- | @failOp@ is a 'Vulkan.Core10.Enums.StencilOp.StencilOp' value specifying
                       -- the action performed on samples that fail the stencil test.
@@ -1346,18 +1353,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceExtendedDynamicStateFeaturesEXT'
--- structure describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceExtendedDynamicStateFeaturesEXT' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceExtendedDynamicStateFeaturesEXT' /can/ also be used in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable
--- features.
+-- 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. 'PhysicalDeviceExtendedDynamicStateFeaturesEXT' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state2.hs b/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state2.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state2.hs
@@ -0,0 +1,670 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_extended_dynamic_state2 - device extension
+--
+-- == VK_EXT_extended_dynamic_state2
+--
+-- [__Name String__]
+--     @VK_EXT_extended_dynamic_state2@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     378
+--
+-- [__Revision__]
+--     1
+--
+-- [__Extension and Version Dependencies__]
+--
+--     -   Requires Vulkan 1.0
+--
+--     -   Requires @VK_KHR_get_physical_device_properties2@
+--
+-- [__Contact__]
+--
+--     -   Vikram Kushwaha
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_extended_dynamic_state2:%20&body=@vkushwaha-nv%20 >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2021-04-12
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Vikram Kushwaha, NVIDIA
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Jeff Bolz, NVIDIA
+--
+-- == Description
+--
+-- This extension adds some more dynamic state to support applications that
+-- need to reduce the number of pipeline state objects they compile and
+-- bind.
+--
+-- == New Commands
+--
+-- -   'cmdSetDepthBiasEnableEXT'
+--
+-- -   'cmdSetLogicOpEXT'
+--
+-- -   'cmdSetPatchControlPointsEXT'
+--
+-- -   'cmdSetPrimitiveRestartEnableEXT'
+--
+-- -   'cmdSetRasterizerDiscardEnableEXT'
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceExtendedDynamicState2FeaturesEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME'
+--
+-- -   'EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':
+--
+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
+--
+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--
+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
+--
+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--
+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT'
+--
+-- == Version History
+--
+-- -   Revision 1, 2021-04-12 (Vikram Kushwaha)
+--
+--     -   Internal revisions
+--
+-- = See Also
+--
+-- 'PhysicalDeviceExtendedDynamicState2FeaturesEXT',
+-- 'cmdSetDepthBiasEnableEXT', 'cmdSetLogicOpEXT',
+-- 'cmdSetPatchControlPointsEXT', 'cmdSetPrimitiveRestartEnableEXT',
+-- 'cmdSetRasterizerDiscardEnableEXT'
+--
+-- = Document Notes
+--
+-- For more information, see the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state2 Vulkan Specification>
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_EXT_extended_dynamic_state2  ( cmdSetPatchControlPointsEXT
+                                                         , cmdSetRasterizerDiscardEnableEXT
+                                                         , cmdSetDepthBiasEnableEXT
+                                                         , cmdSetLogicOpEXT
+                                                         , cmdSetPrimitiveRestartEnableEXT
+                                                         , PhysicalDeviceExtendedDynamicState2FeaturesEXT(..)
+                                                         , EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION
+                                                         , pattern EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION
+                                                         , EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME
+                                                         , pattern EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME
+                                                         ) where
+
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Foreign.Marshal.Alloc (allocaBytesAligned)
+import GHC.IO (throwIO)
+import GHC.Ptr (nullFunPtr)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+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 Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32(..))
+import Vulkan.Core10.Handles (CommandBuffer)
+import Vulkan.Core10.Handles (CommandBuffer(..))
+import Vulkan.Core10.Handles (CommandBuffer_T)
+import Vulkan.Dynamic (DeviceCmds(pVkCmdSetDepthBiasEnableEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdSetLogicOpEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdSetPatchControlPointsEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdSetPrimitiveRestartEnableEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdSetRasterizerDiscardEnableEXT))
+import Vulkan.Core10.Enums.LogicOp (LogicOp)
+import Vulkan.Core10.Enums.LogicOp (LogicOp(..))
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetPatchControlPointsEXT
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> IO ()
+
+-- | vkCmdSetPatchControlPointsEXT - specifies the number of control points
+-- per patch
+--
+-- = Description
+--
+-- This command sets the state for a given draw when the graphics pipeline
+-- is created with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
+-- set in
+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetPatchControlPointsEXT-None-04873# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState2PatchControlPoints extendedDynamicState2PatchControlPoints>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdSetPatchControlPointsEXT-patchControlPoints-04874#
+--     @patchControlPoints@ /must/ be greater than zero and less than or
+--     equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxTessellationPatchSize@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetPatchControlPointsEXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetPatchControlPointsEXT-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-vkCmdSetPatchControlPointsEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == 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#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |                                                                                                                                     |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdSetPatchControlPointsEXT :: forall io
+                             . (MonadIO io)
+                            => -- | @commandBuffer@ is the command buffer into which the command will be
+                               -- recorded.
+                               CommandBuffer
+                            -> -- | @patchControlPoints@ specifies number of control points per patch.
+                               ("patchControlPoints" ::: Word32)
+                            -> io ()
+cmdSetPatchControlPointsEXT commandBuffer patchControlPoints = liftIO $ do
+  let vkCmdSetPatchControlPointsEXTPtr = pVkCmdSetPatchControlPointsEXT (deviceCmds (commandBuffer :: CommandBuffer))
+  unless (vkCmdSetPatchControlPointsEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetPatchControlPointsEXT is null" Nothing Nothing
+  let vkCmdSetPatchControlPointsEXT' = mkVkCmdSetPatchControlPointsEXT vkCmdSetPatchControlPointsEXTPtr
+  traceAroundEvent "vkCmdSetPatchControlPointsEXT" (vkCmdSetPatchControlPointsEXT' (commandBufferHandle (commandBuffer)) (patchControlPoints))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetRasterizerDiscardEnableEXT
+  :: FunPtr (Ptr CommandBuffer_T -> Bool32 -> IO ()) -> Ptr CommandBuffer_T -> Bool32 -> IO ()
+
+-- | vkCmdSetRasterizerDiscardEnableEXT - Control whether primitives are
+-- discarded before the rasterization stage for a command buffer
+--
+-- = Description
+--
+-- This command sets the state for a given draw when the graphics pipeline
+-- is created with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+-- set in
+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetRasterizerDiscardEnableEXT-None-04871# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState2 extendedDynamicState2>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetRasterizerDiscardEnableEXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetRasterizerDiscardEnableEXT-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-vkCmdSetRasterizerDiscardEnableEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == 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#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |                                                                                                                                     |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdSetRasterizerDiscardEnableEXT :: forall io
+                                  . (MonadIO io)
+                                 => -- | @commandBuffer@ is the command buffer into which the command will be
+                                    -- recorded.
+                                    CommandBuffer
+                                 -> -- | @rasterizerDiscardEnable@ controls whether primitives are discarded
+                                    -- immediately before the rasterization stage.
+                                    ("rasterizerDiscardEnable" ::: Bool)
+                                 -> io ()
+cmdSetRasterizerDiscardEnableEXT commandBuffer rasterizerDiscardEnable = liftIO $ do
+  let vkCmdSetRasterizerDiscardEnableEXTPtr = pVkCmdSetRasterizerDiscardEnableEXT (deviceCmds (commandBuffer :: CommandBuffer))
+  unless (vkCmdSetRasterizerDiscardEnableEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetRasterizerDiscardEnableEXT is null" Nothing Nothing
+  let vkCmdSetRasterizerDiscardEnableEXT' = mkVkCmdSetRasterizerDiscardEnableEXT vkCmdSetRasterizerDiscardEnableEXTPtr
+  traceAroundEvent "vkCmdSetRasterizerDiscardEnableEXT" (vkCmdSetRasterizerDiscardEnableEXT' (commandBufferHandle (commandBuffer)) (boolToBool32 (rasterizerDiscardEnable)))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetDepthBiasEnableEXT
+  :: FunPtr (Ptr CommandBuffer_T -> Bool32 -> IO ()) -> Ptr CommandBuffer_T -> Bool32 -> IO ()
+
+-- | vkCmdSetDepthBiasEnableEXT - Controls whether to bias fragment depth
+-- values for a command buffer
+--
+-- = Description
+--
+-- This command sets the state for a given draw when the graphics pipeline
+-- is created with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
+-- set in
+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetDepthBiasEnableEXT-None-04872# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState2 extendedDynamicState2>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetDepthBiasEnableEXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetDepthBiasEnableEXT-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-vkCmdSetDepthBiasEnableEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == 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#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |                                                                                                                                     |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdSetDepthBiasEnableEXT :: forall io
+                          . (MonadIO io)
+                         => -- | @commandBuffer@ is the command buffer into which the command will be
+                            -- recorded.
+                            CommandBuffer
+                         -> -- | @depthBiasEnable@ controls whether to bias fragment depth values.
+                            ("depthBiasEnable" ::: Bool)
+                         -> io ()
+cmdSetDepthBiasEnableEXT commandBuffer depthBiasEnable = liftIO $ do
+  let vkCmdSetDepthBiasEnableEXTPtr = pVkCmdSetDepthBiasEnableEXT (deviceCmds (commandBuffer :: CommandBuffer))
+  unless (vkCmdSetDepthBiasEnableEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetDepthBiasEnableEXT is null" Nothing Nothing
+  let vkCmdSetDepthBiasEnableEXT' = mkVkCmdSetDepthBiasEnableEXT vkCmdSetDepthBiasEnableEXTPtr
+  traceAroundEvent "vkCmdSetDepthBiasEnableEXT" (vkCmdSetDepthBiasEnableEXT' (commandBufferHandle (commandBuffer)) (boolToBool32 (depthBiasEnable)))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetLogicOpEXT
+  :: FunPtr (Ptr CommandBuffer_T -> LogicOp -> IO ()) -> Ptr CommandBuffer_T -> LogicOp -> IO ()
+
+-- | vkCmdSetLogicOpEXT - selects which logical operation to apply for blend
+-- state
+--
+-- = Description
+--
+-- This command sets the state for a given draw when the graphics pipeline
+-- is created with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT' set in
+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetLogicOpEXT-None-04867# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState2LogicOp extendedDynamicState2LogicOp>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetLogicOpEXT-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetLogicOpEXT-logicOp-parameter# @logicOp@ /must/ be a
+--     valid 'Vulkan.Core10.Enums.LogicOp.LogicOp' value
+--
+-- -   #VUID-vkCmdSetLogicOpEXT-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-vkCmdSetLogicOpEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == 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#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |                                                                                                                                     |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.Enums.LogicOp.LogicOp'
+cmdSetLogicOpEXT :: forall io
+                  . (MonadIO io)
+                 => -- | @commandBuffer@ is the command buffer into which the command will be
+                    -- recorded.
+                    CommandBuffer
+                 -> -- | @logicOp@ specifies the logical operation to apply for blend state.
+                    LogicOp
+                 -> io ()
+cmdSetLogicOpEXT commandBuffer logicOp = liftIO $ do
+  let vkCmdSetLogicOpEXTPtr = pVkCmdSetLogicOpEXT (deviceCmds (commandBuffer :: CommandBuffer))
+  unless (vkCmdSetLogicOpEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetLogicOpEXT is null" Nothing Nothing
+  let vkCmdSetLogicOpEXT' = mkVkCmdSetLogicOpEXT vkCmdSetLogicOpEXTPtr
+  traceAroundEvent "vkCmdSetLogicOpEXT" (vkCmdSetLogicOpEXT' (commandBufferHandle (commandBuffer)) (logicOp))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetPrimitiveRestartEnableEXT
+  :: FunPtr (Ptr CommandBuffer_T -> Bool32 -> IO ()) -> Ptr CommandBuffer_T -> Bool32 -> IO ()
+
+-- | vkCmdSetPrimitiveRestartEnableEXT - controls whether a special vertex
+-- index value is treated as restarting the assembly of primitives
+--
+-- = Description
+--
+-- This command sets the state for a given draw when the graphics pipeline
+-- is created with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+-- set in
+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetPrimitiveRestartEnableEXT-None-04866# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState2 extendedDynamicState2>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetPrimitiveRestartEnableEXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetPrimitiveRestartEnableEXT-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-vkCmdSetPrimitiveRestartEnableEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == 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#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |                                                                                                                                     |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdSetPrimitiveRestartEnableEXT :: forall io
+                                 . (MonadIO io)
+                                => -- | @commandBuffer@ is the command buffer into which the command will be
+                                   -- recorded.
+                                   CommandBuffer
+                                -> -- | @primitiveRestartEnable@ controls whether a special vertex index value
+                                   -- is treated as restarting the assembly of primitives. It behaves in the
+                                   -- same way as
+                                   -- 'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@primitiveRestartEnable@
+                                   ("primitiveRestartEnable" ::: Bool)
+                                -> io ()
+cmdSetPrimitiveRestartEnableEXT commandBuffer primitiveRestartEnable = liftIO $ do
+  let vkCmdSetPrimitiveRestartEnableEXTPtr = pVkCmdSetPrimitiveRestartEnableEXT (deviceCmds (commandBuffer :: CommandBuffer))
+  unless (vkCmdSetPrimitiveRestartEnableEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetPrimitiveRestartEnableEXT is null" Nothing Nothing
+  let vkCmdSetPrimitiveRestartEnableEXT' = mkVkCmdSetPrimitiveRestartEnableEXT vkCmdSetPrimitiveRestartEnableEXTPtr
+  traceAroundEvent "vkCmdSetPrimitiveRestartEnableEXT" (vkCmdSetPrimitiveRestartEnableEXT' (commandBufferHandle (commandBuffer)) (boolToBool32 (primitiveRestartEnable)))
+  pure $ ()
+
+
+-- | VkPhysicalDeviceExtendedDynamicState2FeaturesEXT - Structure describing
+-- what extended dynamic state can be used
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceExtendedDynamicState2FeaturesEXT' 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. 'PhysicalDeviceExtendedDynamicState2FeaturesEXT' /can/ also
+-- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
+-- to selectively enable these features.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceExtendedDynamicState2FeaturesEXT = PhysicalDeviceExtendedDynamicState2FeaturesEXT
+  { -- | #features-extendedDynamicState2# @extendedDynamicState2@ indicates that
+    -- the implementation supports the following dynamic states:
+    --
+    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+    extendedDynamicState2 :: Bool
+  , -- | #features-extendedDynamicState2LogicOp# @extendedDynamicState2LogicOp@
+    -- indicates that the implementation supports the following dynamic state:
+    --
+    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+    extendedDynamicState2LogicOp :: Bool
+  , -- | #features-extendedDynamicState2PatchControlPoints#
+    -- @extendedDynamicState2PatchControlPoints@ indicates that the
+    -- implementation supports the following dynamic state:
+    --
+    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
+    extendedDynamicState2PatchControlPoints :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceExtendedDynamicState2FeaturesEXT)
+#endif
+deriving instance Show PhysicalDeviceExtendedDynamicState2FeaturesEXT
+
+instance ToCStruct PhysicalDeviceExtendedDynamicState2FeaturesEXT where
+  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceExtendedDynamicState2FeaturesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (extendedDynamicState2))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (extendedDynamicState2LogicOp))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (extendedDynamicState2PatchControlPoints))
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceExtendedDynamicState2FeaturesEXT where
+  peekCStruct p = do
+    extendedDynamicState2 <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    extendedDynamicState2LogicOp <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    extendedDynamicState2PatchControlPoints <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    pure $ PhysicalDeviceExtendedDynamicState2FeaturesEXT
+             (bool32ToBool extendedDynamicState2) (bool32ToBool extendedDynamicState2LogicOp) (bool32ToBool extendedDynamicState2PatchControlPoints)
+
+instance Storable PhysicalDeviceExtendedDynamicState2FeaturesEXT where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceExtendedDynamicState2FeaturesEXT where
+  zero = PhysicalDeviceExtendedDynamicState2FeaturesEXT
+           zero
+           zero
+           zero
+
+
+type EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION"
+pattern EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION :: forall a . Integral a => a
+pattern EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION = 1
+
+
+type EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME = "VK_EXT_extended_dynamic_state2"
+
+-- No documentation found for TopLevel "VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME"
+pattern EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME = "VK_EXT_extended_dynamic_state2"
+
diff --git a/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state2.hs-boot b/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state2.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state2.hs-boot
@@ -0,0 +1,127 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_extended_dynamic_state2 - device extension
+--
+-- == VK_EXT_extended_dynamic_state2
+--
+-- [__Name String__]
+--     @VK_EXT_extended_dynamic_state2@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     378
+--
+-- [__Revision__]
+--     1
+--
+-- [__Extension and Version Dependencies__]
+--
+--     -   Requires Vulkan 1.0
+--
+--     -   Requires @VK_KHR_get_physical_device_properties2@
+--
+-- [__Contact__]
+--
+--     -   Vikram Kushwaha
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_extended_dynamic_state2:%20&body=@vkushwaha-nv%20 >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2021-04-12
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Vikram Kushwaha, NVIDIA
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Jeff Bolz, NVIDIA
+--
+-- == Description
+--
+-- This extension adds some more dynamic state to support applications that
+-- need to reduce the number of pipeline state objects they compile and
+-- bind.
+--
+-- == New Commands
+--
+-- -   'cmdSetDepthBiasEnableEXT'
+--
+-- -   'cmdSetLogicOpEXT'
+--
+-- -   'cmdSetPatchControlPointsEXT'
+--
+-- -   'cmdSetPrimitiveRestartEnableEXT'
+--
+-- -   'cmdSetRasterizerDiscardEnableEXT'
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceExtendedDynamicState2FeaturesEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME'
+--
+-- -   'EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':
+--
+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
+--
+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--
+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
+--
+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--
+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT'
+--
+-- == Version History
+--
+-- -   Revision 1, 2021-04-12 (Vikram Kushwaha)
+--
+--     -   Internal revisions
+--
+-- = See Also
+--
+-- 'PhysicalDeviceExtendedDynamicState2FeaturesEXT',
+-- 'cmdSetDepthBiasEnableEXT', 'cmdSetLogicOpEXT',
+-- 'cmdSetPatchControlPointsEXT', 'cmdSetPrimitiveRestartEnableEXT',
+-- 'cmdSetRasterizerDiscardEnableEXT'
+--
+-- = Document Notes
+--
+-- For more information, see the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state2 Vulkan Specification>
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_EXT_extended_dynamic_state2  (PhysicalDeviceExtendedDynamicState2FeaturesEXT) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceExtendedDynamicState2FeaturesEXT
+
+instance ToCStruct PhysicalDeviceExtendedDynamicState2FeaturesEXT
+instance Show PhysicalDeviceExtendedDynamicState2FeaturesEXT
+
+instance FromCStruct PhysicalDeviceExtendedDynamicState2FeaturesEXT
+
diff --git a/src/Vulkan/Extensions/VK_EXT_external_memory_host.hs b/src/Vulkan/Extensions/VK_EXT_external_memory_host.hs
--- a/src/Vulkan/Extensions/VK_EXT_external_memory_host.hs
+++ b/src/Vulkan/Extensions/VK_EXT_external_memory_host.hs
@@ -97,55 +97,55 @@
 --
 -- 1) What memory type has to be used to import host pointers?
 --
--- RESOLVED: Depends on the implementation. Applications have to use the
--- new 'getMemoryHostPointerPropertiesEXT' command to query the supported
--- memory types for a particular host pointer. The reported memory types
--- may include memory types that come from a memory heap that is otherwise
--- not usable for regular memory object allocation and thus such a heap’s
--- size may be zero.
+-- __RESOLVED__: Depends on the implementation. Applications have to use
+-- the new 'getMemoryHostPointerPropertiesEXT' command to query the
+-- supported memory types for a particular host pointer. The reported
+-- memory types may include memory types that come from a memory heap that
+-- is otherwise not usable for regular memory object allocation and thus
+-- such a heap’s size may be zero.
 --
 -- 2) Can the application still access the contents of the host allocation
 -- after importing?
 --
--- RESOLVED: Yes. However, usual synchronization requirements apply.
+-- __RESOLVED__: Yes. However, usual synchronization requirements apply.
 --
 -- 3) Can the application free the host allocation?
 --
--- RESOLVED: No, it violates valid usage conditions. Using the memory
+-- __RESOLVED__: No, it violates valid usage conditions. Using the memory
 -- object imported from a host allocation that’s already freed thus results
 -- in undefined behavior.
 --
 -- 4) Is 'Vulkan.Core10.Memory.mapMemory' expected to return the same host
 -- address which was specified when importing it to the memory object?
 --
--- RESOLVED: No. Implementations are allowed to return the same address but
--- it’s not required. Some implementations might return a different virtual
--- mapping of the allocation, although the same physical pages will be
--- used.
+-- __RESOLVED__: No. Implementations are allowed to return the same address
+-- but it’s not required. Some implementations might return a different
+-- virtual mapping of the allocation, although the same physical pages will
+-- be used.
 --
 -- 5) Is there any limitation on the alignment of the host pointer and\/or
 -- size?
 --
--- RESOLVED: Yes. Both the address and the size have to be an integer
+-- __RESOLVED__: Yes. Both the address and the size have to be an integer
 -- multiple of @minImportedHostPointerAlignment@. In addition, some
 -- platforms and foreign devices may have additional restrictions.
 --
 -- 6) Can the same host allocation be imported multiple times into a given
 -- physical device?
 --
--- RESOLVED: No, at least not guaranteed by this extension. Some platforms
--- do not allow locking the same physical pages for device access multiple
--- times, so attempting to do it may result in undefined behavior.
+-- __RESOLVED__: No, at least not guaranteed by this extension. Some
+-- platforms do not allow locking the same physical pages for device access
+-- multiple times, so attempting to do it may result in undefined behavior.
 --
 -- 7) Does this extension support exporting the new handle type?
 --
--- RESOLVED: No.
+-- __RESOLVED__: No.
 --
 -- 8) Should we include the possibility to import host mapped foreign
 -- device memory using this API?
 --
--- RESOLVED: Yes, through a separate handle type. Implementations are still
--- allowed to support only one of the handle types introduced by this
+-- __RESOLVED__: Yes, through a separate handle type. Implementations are
+-- still allowed to support only one of the handle types introduced by this
 -- extension by not returning import support for a particular handle type
 -- as returned in
 -- 'Vulkan.Extensions.VK_KHR_external_memory_capabilities.ExternalMemoryPropertiesKHR'.
@@ -293,7 +293,9 @@
                                    . (MonadIO io)
                                   => -- | @device@ is the logical device that will be importing @pHostPointer@.
                                      Device
-                                  -> -- | @handleType@ is the type of the handle @pHostPointer@.
+                                  -> -- | @handleType@ is a
+                                     -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'
+                                     -- value specifying the type of the handle @pHostPointer@.
                                      ExternalMemoryHandleTypeFlagBits
                                   -> -- | @pHostPointer@ is the host pointer to import from.
                                      ("hostPointer" ::: Ptr ())
@@ -386,7 +388,9 @@
 -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data ImportMemoryHostPointerInfoEXT = ImportMemoryHostPointerInfoEXT
-  { -- | @handleType@ specifies the handle type.
+  { -- | @handleType@ is a
+    -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'
+    -- value specifying the handle type.
     handleType :: ExternalMemoryHandleTypeFlagBits
   , -- | @pHostPointer@ is the host pointer to import from.
     hostPointer :: Ptr ()
@@ -493,17 +497,15 @@
 -- external memory host pointer limits that can be supported by an
 -- implementation
 --
--- = Members
---
--- The members of the 'PhysicalDeviceExternalMemoryHostPropertiesEXT'
--- structure describe the following implementation-dependent limits:
---
 -- = Description
 --
 -- If the 'PhysicalDeviceExternalMemoryHostPropertiesEXT' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- 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)
 --
@@ -515,7 +517,7 @@
   { -- | #limits-minImportedHostPointerAlignment#
     -- @minImportedHostPointerAlignment@ is the minimum /required/ alignment,
     -- in bytes, for the base address and size of host pointers that /can/ be
-    -- imported to a Vulkan memory object.
+    -- imported to a Vulkan memory object. The value /must/ be a power of two.
     minImportedHostPointerAlignment :: DeviceSize }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
diff --git a/src/Vulkan/Extensions/VK_EXT_external_memory_host.hs-boot b/src/Vulkan/Extensions/VK_EXT_external_memory_host.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_external_memory_host.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_external_memory_host.hs-boot
@@ -97,55 +97,55 @@
 --
 -- 1) What memory type has to be used to import host pointers?
 --
--- RESOLVED: Depends on the implementation. Applications have to use the
--- new 'getMemoryHostPointerPropertiesEXT' command to query the supported
--- memory types for a particular host pointer. The reported memory types
--- may include memory types that come from a memory heap that is otherwise
--- not usable for regular memory object allocation and thus such a heap’s
--- size may be zero.
+-- __RESOLVED__: Depends on the implementation. Applications have to use
+-- the new 'getMemoryHostPointerPropertiesEXT' command to query the
+-- supported memory types for a particular host pointer. The reported
+-- memory types may include memory types that come from a memory heap that
+-- is otherwise not usable for regular memory object allocation and thus
+-- such a heap’s size may be zero.
 --
 -- 2) Can the application still access the contents of the host allocation
 -- after importing?
 --
--- RESOLVED: Yes. However, usual synchronization requirements apply.
+-- __RESOLVED__: Yes. However, usual synchronization requirements apply.
 --
 -- 3) Can the application free the host allocation?
 --
--- RESOLVED: No, it violates valid usage conditions. Using the memory
+-- __RESOLVED__: No, it violates valid usage conditions. Using the memory
 -- object imported from a host allocation that’s already freed thus results
 -- in undefined behavior.
 --
 -- 4) Is 'Vulkan.Core10.Memory.mapMemory' expected to return the same host
 -- address which was specified when importing it to the memory object?
 --
--- RESOLVED: No. Implementations are allowed to return the same address but
--- it’s not required. Some implementations might return a different virtual
--- mapping of the allocation, although the same physical pages will be
--- used.
+-- __RESOLVED__: No. Implementations are allowed to return the same address
+-- but it’s not required. Some implementations might return a different
+-- virtual mapping of the allocation, although the same physical pages will
+-- be used.
 --
 -- 5) Is there any limitation on the alignment of the host pointer and\/or
 -- size?
 --
--- RESOLVED: Yes. Both the address and the size have to be an integer
+-- __RESOLVED__: Yes. Both the address and the size have to be an integer
 -- multiple of @minImportedHostPointerAlignment@. In addition, some
 -- platforms and foreign devices may have additional restrictions.
 --
 -- 6) Can the same host allocation be imported multiple times into a given
 -- physical device?
 --
--- RESOLVED: No, at least not guaranteed by this extension. Some platforms
--- do not allow locking the same physical pages for device access multiple
--- times, so attempting to do it may result in undefined behavior.
+-- __RESOLVED__: No, at least not guaranteed by this extension. Some
+-- platforms do not allow locking the same physical pages for device access
+-- multiple times, so attempting to do it may result in undefined behavior.
 --
 -- 7) Does this extension support exporting the new handle type?
 --
--- RESOLVED: No.
+-- __RESOLVED__: No.
 --
 -- 8) Should we include the possibility to import host mapped foreign
 -- device memory using this API?
 --
--- RESOLVED: Yes, through a separate handle type. Implementations are still
--- allowed to support only one of the handle types introduced by this
+-- __RESOLVED__: Yes, through a separate handle type. Implementations are
+-- still allowed to support only one of the handle types introduced by this
 -- extension by not returning import support for a particular handle type
 -- as returned in
 -- 'Vulkan.Extensions.VK_KHR_external_memory_capabilities.ExternalMemoryPropertiesKHR'.
diff --git a/src/Vulkan/Extensions/VK_EXT_fragment_density_map.hs b/src/Vulkan/Extensions/VK_EXT_fragment_density_map.hs
--- a/src/Vulkan/Extensions/VK_EXT_fragment_density_map.hs
+++ b/src/Vulkan/Extensions/VK_EXT_fragment_density_map.hs
@@ -214,18 +214,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceFragmentDensityMapFeaturesEXT'
--- structure describe the following features:
+-- This structure describes the following features:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceFragmentDensityMapFeaturesEXT' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether each feature is supported.
--- 'PhysicalDeviceFragmentDensityMapFeaturesEXT' /can/ also be included in
--- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable the
--- features.
+-- 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. 'PhysicalDeviceFragmentDensityMapFeaturesEXT' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
@@ -310,17 +311,17 @@
 -- fragment density map properties that can be supported by an
 -- implementation
 --
--- = Members
+-- = Description
 --
--- The members of the 'PhysicalDeviceFragmentDensityMapPropertiesEXT'
--- structure describe the following implementation-dependent limits:
+-- If the 'PhysicalDeviceFragmentDensityMapPropertiesEXT' 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)
---
--- If the 'PhysicalDeviceFragmentDensityMapPropertiesEXT' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits and properties.
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_fragment_density_map2.hs b/src/Vulkan/Extensions/VK_EXT_fragment_density_map2.hs
--- a/src/Vulkan/Extensions/VK_EXT_fragment_density_map2.hs
+++ b/src/Vulkan/Extensions/VK_EXT_fragment_density_map2.hs
@@ -182,18 +182,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceFragmentDensityMap2FeaturesEXT'
--- structure describe the following features:
+-- This structure describes the following features:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceFragmentDensityMap2FeaturesEXT' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether each feature is supported.
--- 'PhysicalDeviceFragmentDensityMap2FeaturesEXT' /can/ also be included in
--- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable the
--- features.
+-- 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. 'PhysicalDeviceFragmentDensityMap2FeaturesEXT' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
@@ -251,17 +252,17 @@
 -- additional fragment density map properties that can be supported by an
 -- implementation
 --
--- = Members
+-- = Description
 --
--- The members of the 'PhysicalDeviceFragmentDensityMap2PropertiesEXT'
--- structure describe the following implementation-dependent limits:
+-- If the 'PhysicalDeviceFragmentDensityMap2PropertiesEXT' 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)
---
--- If the 'PhysicalDeviceFragmentDensityMap2PropertiesEXT' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits and properties.
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_fragment_shader_interlock.hs b/src/Vulkan/Extensions/VK_EXT_fragment_shader_interlock.hs
--- a/src/Vulkan/Extensions/VK_EXT_fragment_shader_interlock.hs
+++ b/src/Vulkan/Extensions/VK_EXT_fragment_shader_interlock.hs
@@ -159,18 +159,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceFragmentShaderInterlockFeaturesEXT'
--- structure describe the following features:
+-- This structure describes the following features:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceFragmentShaderInterlockFeaturesEXT' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceFragmentShaderInterlockFeaturesEXT' /can/ also be
--- included in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to enable features.
+-- 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. 'PhysicalDeviceFragmentShaderInterlockFeaturesEXT' /can/ also
+-- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
+-- to selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_full_screen_exclusive.hs b/src/Vulkan/Extensions/VK_EXT_full_screen_exclusive.hs
--- a/src/Vulkan/Extensions/VK_EXT_full_screen_exclusive.hs
+++ b/src/Vulkan/Extensions/VK_EXT_full_screen_exclusive.hs
@@ -158,7 +158,7 @@
 --
 -- 1) What should the extension & flag be called?
 --
--- RESOLVED: VK_EXT_full_screen_exclusive.
+-- __RESOLVED__: VK_EXT_full_screen_exclusive.
 --
 -- Other options considered (prior to the app-controlled mode) were:
 --
@@ -176,7 +176,7 @@
 --
 -- 2) Do we need more than a boolean toggle?
 --
--- RESOLVED: Yes.
+-- __RESOLVED__: Yes.
 --
 -- Using an enum with default\/allowed\/disallowed\/app-controlled enables
 -- applications to accept driver default behavior, specifically override it
@@ -185,13 +185,13 @@
 --
 -- 3) Should this be a KHR or EXT extension?
 --
--- RESOLVED: EXT, in order to allow it to be shipped faster.
+-- __RESOLVED__: EXT, in order to allow it to be shipped faster.
 --
 -- 4) Can the fullscreen hint affect the surface capabilities, and if so,
 -- should the hint also be specified as input when querying the surface
 -- capabilities?
 --
--- RESOLVED: Yes on both accounts.
+-- __RESOLVED__: Yes on both accounts.
 --
 -- While the hint does not guarantee a particular fullscreen mode will be
 -- used when the swapchain is created, it can sometimes imply particular
@@ -206,7 +206,7 @@
 --
 -- 5) Should full-screen be one word or two?
 --
--- RESOLVED: Two words.
+-- __RESOLVED__: Two words.
 --
 -- \"Fullscreen\" is not in my dictionary, and web searches did not turn up
 -- definitive proof that it is a colloquially accepted compound word.
diff --git a/src/Vulkan/Extensions/VK_EXT_full_screen_exclusive.hs-boot b/src/Vulkan/Extensions/VK_EXT_full_screen_exclusive.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_full_screen_exclusive.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_full_screen_exclusive.hs-boot
@@ -158,7 +158,7 @@
 --
 -- 1) What should the extension & flag be called?
 --
--- RESOLVED: VK_EXT_full_screen_exclusive.
+-- __RESOLVED__: VK_EXT_full_screen_exclusive.
 --
 -- Other options considered (prior to the app-controlled mode) were:
 --
@@ -176,7 +176,7 @@
 --
 -- 2) Do we need more than a boolean toggle?
 --
--- RESOLVED: Yes.
+-- __RESOLVED__: Yes.
 --
 -- Using an enum with default\/allowed\/disallowed\/app-controlled enables
 -- applications to accept driver default behavior, specifically override it
@@ -185,13 +185,13 @@
 --
 -- 3) Should this be a KHR or EXT extension?
 --
--- RESOLVED: EXT, in order to allow it to be shipped faster.
+-- __RESOLVED__: EXT, in order to allow it to be shipped faster.
 --
 -- 4) Can the fullscreen hint affect the surface capabilities, and if so,
 -- should the hint also be specified as input when querying the surface
 -- capabilities?
 --
--- RESOLVED: Yes on both accounts.
+-- __RESOLVED__: Yes on both accounts.
 --
 -- While the hint does not guarantee a particular fullscreen mode will be
 -- used when the swapchain is created, it can sometimes imply particular
@@ -206,7 +206,7 @@
 --
 -- 5) Should full-screen be one word or two?
 --
--- RESOLVED: Two words.
+-- __RESOLVED__: Two words.
 --
 -- \"Fullscreen\" is not in my dictionary, and web searches did not turn up
 -- definitive proof that it is a colloquially accepted compound word.
diff --git a/src/Vulkan/Extensions/VK_EXT_image_drm_format_modifier.hs b/src/Vulkan/Extensions/VK_EXT_image_drm_format_modifier.hs
--- a/src/Vulkan/Extensions/VK_EXT_image_drm_format_modifier.hs
+++ b/src/Vulkan/Extensions/VK_EXT_image_drm_format_modifier.hs
@@ -1,531 +1,8 @@
 {-# language CPP #-}
--- | = Name
---
--- VK_EXT_image_drm_format_modifier - device extension
---
--- == VK_EXT_image_drm_format_modifier
---
--- [__Name String__]
---     @VK_EXT_image_drm_format_modifier@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     159
---
--- [__Revision__]
---     1
---
--- [__Extension and Version Dependencies__]
---
---     -   Requires Vulkan 1.0
---
---     -   Requires @VK_KHR_bind_memory2@
---
---     -   Requires @VK_KHR_get_physical_device_properties2@
---
---     -   Requires @VK_KHR_image_format_list@
---
---     -   Requires @VK_KHR_sampler_ycbcr_conversion@
---
--- [__Contact__]
---
---     -   Chad Versace
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_image_drm_format_modifier:%20&body=@chadversary%20 >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2018-08-29
---
--- [__IP Status__]
---     No known IP claims.
---
--- [__Contributors__]
---
---     -   Antoine Labour, Google
---
---     -   Bas Nieuwenhuizen, Google
---
---     -   Chad Versace, Google
---
---     -   James Jones, NVIDIA
---
---     -   Jason Ekstrand, Intel
---
---     -   Jőrg Wagner, ARM
---
---     -   Kristian Høgsberg Kristensen, Google
---
---     -   Ray Smith, ARM
---
--- == Description
---
--- This extension provides the ability to use /DRM format modifiers/ with
--- images, enabling Vulkan to better integrate with the Linux ecosystem of
--- graphics, video, and display APIs.
---
--- Its functionality closely overlaps with
--- @EGL_EXT_image_dma_buf_import_modifiers@<VK_EXT_image_drm_format_modifier-fn2.html 2>\<\/link>^
+-- | Its functionality closely overlaps with
+-- @EGL_EXT_image_dma_buf_import_modifiers@<VK_EXT_image_drm_format_modifier-fn2.html 2>^
 -- and
--- @EGL_MESA_image_dma_buf_export@<VK_EXT_image_drm_format_modifier-fn3.html 3>\<\/link>^.
--- Unlike the EGL extensions, this extension does not require the use of a
--- specific handle type (such as a dma_buf) for external memory and
--- provides more explicit control of image creation.
---
--- == Introduction to DRM Format Modifiers
---
--- A /DRM format modifier/ is a 64-bit, vendor-prefixed, semi-opaque
--- unsigned integer. Most /modifiers/ represent a concrete, vendor-specific
--- tiling format for images. Some exceptions are @DRM_FORMAT_MOD_LINEAR@
--- (which is not vendor-specific); @DRM_FORMAT_MOD_NONE@ (which is an alias
--- of @DRM_FORMAT_MOD_LINEAR@ due to historical accident); and
--- @DRM_FORMAT_MOD_INVALID@ (which does not represent a tiling format). The
--- /modifier’s/ vendor prefix consists of the 8 most significant bits. The
--- canonical list of /modifiers/ and vendor prefixes is found in
--- <https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/drm/drm_fourcc.h drm_fourcc.h>
--- in the Linux kernel source. The other dominant source of /modifiers/ are
--- vendor kernel trees.
---
--- One goal of /modifiers/ in the Linux ecosystem is to enumerate for each
--- vendor a reasonably sized set of tiling formats that are appropriate for
--- images shared across processes, APIs, and\/or devices, where each
--- participating component may possibly be from different vendors. A
--- non-goal is to enumerate all tiling formats supported by all vendors.
--- Some tiling formats used internally by vendors are inappropriate for
--- sharing; no /modifiers/ should be assigned to such tiling formats.
---
--- Modifier values typically do not /describe/ memory layouts. More
--- precisely, a /modifier/\'s lower 56 bits usually have no structure.
--- Instead, modifiers /name/ memory layouts; they name a small set of
--- vendor-preferred layouts for image sharing. As a consequence, in each
--- vendor namespace the modifier values are often sequentially allocated
--- starting at 1.
---
--- Each /modifier/ is usually supported by a single vendor and its name
--- matches the pattern @{VENDOR}_FORMAT_MOD_*@ or
--- @DRM_FORMAT_MOD_{VENDOR}_*@. Examples are @I915_FORMAT_MOD_X_TILED@ and
--- @DRM_FORMAT_MOD_BROADCOM_VC4_T_TILED@. An exception is
--- @DRM_FORMAT_MOD_LINEAR@, which is supported by most vendors.
---
--- Many APIs in Linux use /modifiers/ to negotiate and specify the memory
--- layout of shared images. For example, a Wayland compositor and Wayland
--- client may, by relaying /modifiers/ over the Wayland protocol
--- @zwp_linux_dmabuf_v1@, negotiate a vendor-specific tiling format for a
--- shared @wl_buffer@. The client may allocate the underlying memory for
--- the @wl_buffer@ with GBM, providing the chosen /modifier/ to
--- @gbm_bo_create_with_modifiers@. The client may then import the
--- @wl_buffer@ into Vulkan for producing image content, providing the
--- resource’s dma_buf to
--- 'Vulkan.Extensions.VK_KHR_external_memory_fd.ImportMemoryFdInfoKHR' and
--- its /modifier/ to 'ImageDrmFormatModifierExplicitCreateInfoEXT'. The
--- compositor may then import the @wl_buffer@ into OpenGL for sampling,
--- providing the resource’s dma_buf and /modifier/ to @eglCreateImage@. The
--- compositor may also bypass OpenGL and submit the @wl_buffer@ directly to
--- the kernel’s display API, providing the dma_buf and /modifier/ through
--- @drm_mode_fb_cmd2@.
---
--- == Format Translation
---
--- /Modifier/-capable APIs often pair /modifiers/ with DRM formats, which
--- are defined in
--- <https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/drm/drm_fourcc.h drm_fourcc.h>.
--- However, @VK_EXT_image_drm_format_modifier@ uses
--- 'Vulkan.Core10.Enums.Format.Format' instead of DRM formats. The
--- application must convert between 'Vulkan.Core10.Enums.Format.Format' and
--- DRM format when it sends or receives a DRM format to or from an external
--- API.
---
--- The mapping from 'Vulkan.Core10.Enums.Format.Format' to DRM format is
--- lossy. Therefore, when receiving a DRM format from an external API,
--- often the application must use information from the external API to
--- accurately map the DRM format to a 'Vulkan.Core10.Enums.Format.Format'.
--- For example, DRM formats do not distinguish between RGB and sRGB (as of
--- 2018-03-28); external information is required to identify the image’s
--- colorspace.
---
--- The mapping between 'Vulkan.Core10.Enums.Format.Format' and DRM format
--- is also incomplete. For some DRM formats there exist no corresponding
--- Vulkan format, and for some Vulkan formats there exist no corresponding
--- DRM format.
---
--- == Usage Patterns
---
--- Three primary usage patterns are intended for this extension:
---
--- -   __Negotiation.__ The application negotiates with /modifier/-aware,
---     external components to determine sets of image creation parameters
---     supported among all components.
---
---     In the Linux ecosystem, the negotiation usually assumes the image is
---     a 2D, single-sampled, non-mipmapped, non-array image; this extension
---     permits that assumption but does not require it. The result of the
---     negotiation usually resembles a set of tuples such as /(drmFormat,
---     drmFormatModifier)/, where each participating component supports all
---     tuples in the set.
---
---     Many details of this negotiation—such as the protocol used during
---     negotiation, the set of image creation parameters expressable in the
---     protocol, and how the protocol chooses which process and which API
---     will create the image—are outside the scope of this specification.
---
---     In this extension,
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2'
---     with 'DrmFormatModifierPropertiesListEXT' serves a primary role
---     during the negotiation, and
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
---     with 'PhysicalDeviceImageDrmFormatModifierInfoEXT' serves a
---     secondary role.
---
--- -   __Import.__ The application imports an image with a /modifier/.
---
---     In this pattern, the application receives from an external source
---     the image’s memory and its creation parameters, which are often the
---     result of the negotiation described above. Some image creation
---     parameters are implicitly defined by the external source; for
---     example, 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' is often
---     assumed. Some image creation parameters are usually explicit, such
---     as the image’s @format@, @drmFormatModifier@, and @extent@; and each
---     plane’s @offset@ and @rowPitch@.
---
---     Before creating the image, the application first verifies that the
---     physical device supports the received creation parameters by
---     querying
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2'
---     with 'DrmFormatModifierPropertiesListEXT' and
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
---     with 'PhysicalDeviceImageDrmFormatModifierInfoEXT'. Then the
---     application creates the image by chaining
---     'ImageDrmFormatModifierExplicitCreateInfoEXT' and
---     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'
---     onto 'Vulkan.Core10.Image.ImageCreateInfo'.
---
--- -   __Export.__ The application creates an image and allocates its
---     memory. Then the application exports to /modifier/-aware consumers
---     the image’s memory handles; its creation parameters; its /modifier/;
---     and the <VkSubresourceLayout.html offset>,
---     <VkSubresourceLayout.html size>, and
---     <VkSubresourceLayout.html rowPitch> of each /memory plane/.
---
---     In this pattern, the Vulkan device is the authority for the image;
---     it is the allocator of the image’s memory and the decider of the
---     image’s creation parameters. When choosing the image’s creation
---     parameters, the application usually chooses a tuple /(format,
---     drmFormatModifier)/ from the result of the negotiation described
---     above. The negotiation’s result often contains multiple tuples that
---     share the same format but differ in their /modifier/. In this case,
---     the application should defer the choice of the image’s /modifier/ to
---     the Vulkan implementation by providing all such /modifiers/ to
---     'ImageDrmFormatModifierListCreateInfoEXT'::@pDrmFormatModifiers@;
---     and the implementation should choose from @pDrmFormatModifiers@ the
---     optimal /modifier/ in consideration with the other image parameters.
---
---     The application creates the image by chaining
---     'ImageDrmFormatModifierListCreateInfoEXT' and
---     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'
---     onto 'Vulkan.Core10.Image.ImageCreateInfo'. The protocol and APIs by
---     which the application will share the image with external consumers
---     will likely determine the value of
---     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'::@handleTypes@.
---     The implementation chooses for the image an optimal /modifier/ from
---     'ImageDrmFormatModifierListCreateInfoEXT'::@pDrmFormatModifiers@.
---     The application then queries the implementation-chosen /modifier/
---     with 'getImageDrmFormatModifierPropertiesEXT', and queries the
---     memory layout of each plane with
---     'Vulkan.Core10.Image.getImageSubresourceLayout'.
---
---     The application then allocates the image’s memory with
---     'Vulkan.Core10.Memory.MemoryAllocateInfo', adding chained extending
---     structures for external memory; binds it to the image; and exports
---     the memory, for example, with
---     'Vulkan.Extensions.VK_KHR_external_memory_fd.getMemoryFdKHR'.
---
---     Finally, the application sends the image’s creation parameters, its
---     /modifier/, its per-plane memory layout, and the exported memory
---     handle to the external consumers. The details of how the application
---     transmits this information to external consumers is outside the
---     scope of this specification.
---
--- == Prior Art
---
--- Extension
--- @EGL_EXT_image_dma_buf_import@<VK_EXT_image_drm_format_modifier-fn1.html 1>\<\/link>^
--- introduced the ability to create an @EGLImage@ by importing for each
--- plane a dma_buf, offset, and row pitch.
---
--- Later, extension
--- @EGL_EXT_image_dma_buf_import_modifiers@<VK_EXT_image_drm_format_modifier-fn2.html 2>\<\/link>^
--- introduced the ability to query which combination of formats and
--- /modifiers/ the implementation supports and to specify /modifiers/
--- during creation of the @EGLImage@.
---
--- Extension
--- @EGL_MESA_image_dma_buf_export@<VK_EXT_image_drm_format_modifier-fn3.html 3>\<\/link>^
--- is the inverse of @EGL_EXT_image_dma_buf_import_modifiers@.
---
--- The Linux kernel modesetting API (KMS), when configuring the display’s
--- framebuffer with @struct
--- drm_mode_fb_cmd2@<VK_EXT_image_drm_format_modifier-fn4.html 4>\<\/link>^,
--- allows one to specify the frambuffer’s /modifier/ as well as a per-plane
--- memory handle, offset, and row pitch.
---
--- GBM, a graphics buffer manager for Linux, allows creation of a @gbm_bo@
--- (that is, a graphics /buffer object/) by importing data similar to that
--- in
--- @EGL_EXT_image_dma_buf_import_modifiers@<VK_EXT_image_drm_format_modifier-fn1.html 1>\<\/link>^;
--- and symmetrically allows exporting the same data from the @gbm_bo@. See
--- the references to /modifier/ and /plane/ in
--- @gbm.h@<VK_EXT_image_drm_format_modifier-fn5.html 5>\<\/link>^.
---
--- == New Commands
---
--- -   'getImageDrmFormatModifierPropertiesEXT'
---
--- == New Structures
---
--- -   'DrmFormatModifierPropertiesEXT'
---
--- -   'ImageDrmFormatModifierPropertiesEXT'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.FormatProperties2':
---
---     -   'DrmFormatModifierPropertiesListEXT'
---
--- -   Extending 'Vulkan.Core10.Image.ImageCreateInfo':
---
---     -   'ImageDrmFormatModifierExplicitCreateInfoEXT'
---
---     -   'ImageDrmFormatModifierListCreateInfoEXT'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2':
---
---     -   'PhysicalDeviceImageDrmFormatModifierInfoEXT'
---
--- == New Enum Constants
---
--- -   'EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME'
---
--- -   'EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION'
---
--- -   Extending
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits':
---
---     -   'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT'
---
---     -   'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT'
---
---     -   'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT'
---
---     -   'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT'
---
--- -   Extending 'Vulkan.Core10.Enums.ImageTiling.ImageTiling':
---
---     -   'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'
---
--- -   Extending 'Vulkan.Core10.Enums.Result.Result':
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT'
---
--- == Issues
---
--- 1) Should this extension define a single DRM format modifier per
--- 'Vulkan.Core10.Handles.Image'? Or define one per plane?
---
--- +
---
--- __RESOLVED__: There exists a single DRM format modifier per
--- 'Vulkan.Core10.Handles.Image'.
---
--- __DISCUSSION__: Prior art, such as
--- @EGL_EXT_image_dma_buf_import_modifiers@<VK_EXT_image_drm_format_modifier-fn2.html 2>\<\/link>^,
--- @struct drm_mode_fb_cmd2@<VK_EXT_image_drm_format_modifier-fn4.html 4>\<\/link>^,
--- and @struct
--- gbm_import_fd_modifier_data@<VK_EXT_image_drm_format_modifier-fn5.html 5>\<\/link>^,
--- allows defining one /modifier/ per plane. However, developers of the GBM
--- and kernel APIs concede it was a mistake. Beginning in Linux 4.10, the
--- kernel requires that the application provide the same DRM format
--- /modifier/ for each plane. (See Linux commit
--- <https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=bae781b259269590109e8a4a8227331362b88212 bae781b259269590109e8a4a8227331362b88212>).
--- And GBM provides an entry point, @gbm_bo_get_modifier@, for querying the
--- /modifier/ of the image but does not provide one to query the modifier
--- of individual planes.
---
--- 2) When creating an image with
--- 'ImageDrmFormatModifierExplicitCreateInfoEXT', which is typically used
--- when /importing/ an image, should the application explicitly provide the
--- size of each plane?
---
--- +
---
--- __RESOLVED__: No. The application /must/ not provide the size. To
--- enforce this, the API requires that
--- 'ImageDrmFormatModifierExplicitCreateInfoEXT'::@pPlaneLayouts->size@
--- /must/ be 0.
---
--- __DISCUSSION__: Prior art, such as
--- @EGL_EXT_image_dma_buf_import_modifiers@<VK_EXT_image_drm_format_modifier-fn2.html 2>\<\/link>^,
--- @struct drm_mode_fb_cmd2@<VK_EXT_image_drm_format_modifier-fn4.html 4>\<\/link>^,
--- and @struct
--- gbm_import_fd_modifier_data@<VK_EXT_image_drm_format_modifier-fn5.html 5>\<\/link>^,
--- omits from the API the size of each plane. Instead, the APIs infer each
--- plane’s size from the import parameters, which include the image’s pixel
--- format and a dma_buf, offset, and row pitch for each plane.
---
--- However, Vulkan differs from EGL and GBM with regards to image creation
--- in the following ways:
---
--- -   __Undedicated allocation by default.__ When importing or exporting a
---     set of dma_bufs as an @EGLImage@ or @gbm_bo@, common practice
---     mandates that each dma_buf’s memory be dedicated (in the sense of
---     @VK_KHR_dedicated_allocation@) to the image (though not necessarily
---     dedicated to a single plane). In particular, neither the GBM
---     documentation nor the EGL extension specifications explicitly state
---     this requirement, but in light of common practice this is likely due
---     to under-specification rather than intentional omission. In
---     contrast, @VK_EXT_image_drm_format_modifier@ permits, but does not
---     require, the implementation to require dedicated allocations for
---     images created with
---     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'.
---
--- -   __Separation of image creation and memory allocation.__ When
---     importing a set of dma_bufs as an @EGLImage@ or @gbm_bo@, EGL and
---     GBM create the image resource and bind it to memory (the dma_bufs)
---     simultaneously. This allows EGL and GBM to query each dma_buf’s size
---     during image creation. In Vulkan, image creation and memory
---     allocation are independent unless a dedicated allocation is used (as
---     in @VK_KHR_dedicated_allocation@). Therefore, without requiring
---     dedicated allocation, Vulkan cannot query the size of each dma_buf
---     (or other external handle) when calculating the image’s memory
---     layout. Even if dedication allocation were required, Vulkan cannot
---     calculate the image’s memory layout until after the image is bound
---     to its dma_ufs.
---
--- The above differences complicate the potential inference of plane size
--- in Vulkan. Consider the following problematic cases:
---
--- -   __Padding.__ Some plane of the image may require
---     implementation-dependent padding.
---
--- -   __Metadata.__ For some /modifiers/, the image may have a metadata
---     plane which requires a non-trivial calculation to determine its
---     size.
---
--- -   __Mipmapped, array, and 3D images.__ The implementation may support
---     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'
---     for images whose @mipLevels@, @arrayLayers@, or @depth@ is greater
---     than 1. For such images with certain /modifiers/, the calculation of
---     each plane’s size may be non-trivial.
---
--- However, an application-provided plane size solves none of the above
--- problems.
---
--- For simplicity, consider an external image with a single memory plane.
--- The implementation is obviously capable calculating the image’s size
--- when its tiling is
--- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL'. Likewise, any
--- reasonable implementation is capable of calculating the image’s size
--- when its tiling uses a supported /modifier/.
---
--- Suppose that the external image’s size is smaller than the
--- implementation-calculated size. If the application provided the external
--- image’s size to 'Vulkan.Core10.Image.createImage', the implementation
--- would observe the mismatched size and recognize its inability to
--- comprehend the external image’s layout (unless the implementation used
--- the application-provided size to select a refinement of the tiling
--- layout indicated by the /modifier/, which is strongly discouraged). The
--- implementation would observe the conflict, and reject image creation
--- with
--- 'Vulkan.Core10.Enums.Result.ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT'.
--- On the other hand, if the application did not provide the external
--- image’s size to 'Vulkan.Core10.Image.createImage', then the application
--- would observe after calling
--- 'Vulkan.Core10.MemoryManagement.getImageMemoryRequirements' that the
--- external image’s size is less than the size required by the
--- implementation. The application would observe the conflict and refuse to
--- bind the 'Vulkan.Core10.Handles.Image' to the external memory. In both
--- cases, the result is explicit failure.
---
--- Suppose that the external image’s size is larger than the
--- implementation-calculated size. If the application provided the external
--- image’s size to 'Vulkan.Core10.Image.createImage', for reasons similar
--- to above the implementation would observe the mismatched size and
--- recognize its inability to comprehend the image data residing in the
--- extra size. The implementation, however, must assume that image data
--- resides in the entire size provided by the application. The
--- implementation would observe the conflict and reject image creation with
--- 'Vulkan.Core10.Enums.Result.ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT'.
--- On the other hand, if the application did not provide the external
--- image’s size to 'Vulkan.Core10.Image.createImage', then the application
--- would observe after calling
--- 'Vulkan.Core10.MemoryManagement.getImageMemoryRequirements' that the
--- external image’s size is larger than the implementation-usable size. The
--- application would observe the conflict and refuse to bind the
--- 'Vulkan.Core10.Handles.Image' to the external memory. In both cases, the
--- result is explicit failure.
---
--- Therefore, an application-provided size provides no benefit, and this
--- extension should not require it. This decision renders
--- 'Vulkan.Core10.Image.SubresourceLayout'::@size@ an unused field during
--- image creation, and thus introduces a risk that implementations may
--- require applications to submit sideband creation parameters in the
--- unused field. To prevent implementations from relying on sideband data,
--- this extension /requires/ the application to set @size@ to 0.
---
--- === References
---
--- 1.  #VK_EXT_image_drm_format_modifier-fn1#
---     <https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import.txt EGL_EXT_image_dma_buf_import>
---
--- 2.  #VK_EXT_image_drm_format_modifier-fn2#
---     <https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt EGL_EXT_image_dma_buf_import_modifiers>
---
--- 3.  #VK_EXT_image_drm_format_modifier-fn3#
---     <https://www.khronos.org/registry/EGL/extensions/MESA/EGL_MESA_image_dma_buf_export.txt EGL_MESA_image_dma_buf_export>
---
--- 4.  #VK_EXT_image_drm_format_modifier-fn4#
---     <https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/uapi/drm/drm_mode.h?id=refs/tags/v4.10#n392 struct
---     drm_mode_fb_cmd2>
---
--- 5.  #VK_EXT_image_drm_format_modifier-fn5#
---     <https://cgit.freedesktop.org/mesa/mesa/tree/src/gbm/main/gbm.h?id=refs/tags/mesa-18.0.0-rc1 gbm.h>
---
--- === Version History
---
--- -   Revision 1, 2018-08-29 (Chad Versace)
---
---     -   First stable revision
---
--- = See Also
---
--- 'DrmFormatModifierPropertiesEXT', 'DrmFormatModifierPropertiesListEXT',
--- 'ImageDrmFormatModifierExplicitCreateInfoEXT',
--- 'ImageDrmFormatModifierListCreateInfoEXT',
--- 'ImageDrmFormatModifierPropertiesEXT',
--- 'PhysicalDeviceImageDrmFormatModifierInfoEXT',
--- 'getImageDrmFormatModifierPropertiesEXT'
---
--- = Document Notes
---
--- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier Vulkan Specification>
---
--- This page is a generated document. Fixes and changes should be made to
--- the generator scripts, not directly.
+-- @EGL_MESA_image_dma_buf_export@<VK_EXT_image_drm_format_modifier-fn3.html 3>^.
 module Vulkan.Extensions.VK_EXT_image_drm_format_modifier  ( getImageDrmFormatModifierPropertiesEXT
                                                            , DrmFormatModifierPropertiesListEXT(..)
                                                            , DrmFormatModifierPropertiesEXT(..)
@@ -677,8 +154,8 @@
   { -- | @drmFormatModifierCount@ is an inout parameter related to the number of
     -- modifiers compatible with the @format@, as described below.
     drmFormatModifierCount :: Word32
-  , -- | @pDrmFormatModifierProperties@ is either @NULL@ or an array of
-    -- 'DrmFormatModifierPropertiesEXT' structures.
+  , -- | @pDrmFormatModifierProperties@ is either @NULL@ or a pointer to an array
+    -- of 'DrmFormatModifierPropertiesEXT' structures.
     drmFormatModifierProperties :: Ptr DrmFormatModifierPropertiesEXT
   }
   deriving (Typeable, Eq)
@@ -921,9 +398,9 @@
   , -- | @sharingMode@ specifies how the image will be accessed by multiple queue
     -- families.
     sharingMode :: SharingMode
-  , -- | @pQueueFamilyIndices@ is a list of queue families that will access the
-    -- image (ignored if @sharingMode@ is not
-    -- 'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT').
+  , -- | @pQueueFamilyIndices@ is a pointer to an array of queue families that
+    -- will access the image. It is ignored if @sharingMode@ is not
+    -- 'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT'.
     queueFamilyIndices :: Vector Word32
   }
   deriving (Typeable)
diff --git a/src/Vulkan/Extensions/VK_EXT_image_drm_format_modifier.hs-boot b/src/Vulkan/Extensions/VK_EXT_image_drm_format_modifier.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_image_drm_format_modifier.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_image_drm_format_modifier.hs-boot
@@ -1,531 +1,8 @@
 {-# language CPP #-}
--- | = Name
---
--- VK_EXT_image_drm_format_modifier - device extension
---
--- == VK_EXT_image_drm_format_modifier
---
--- [__Name String__]
---     @VK_EXT_image_drm_format_modifier@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     159
---
--- [__Revision__]
---     1
---
--- [__Extension and Version Dependencies__]
---
---     -   Requires Vulkan 1.0
---
---     -   Requires @VK_KHR_bind_memory2@
---
---     -   Requires @VK_KHR_get_physical_device_properties2@
---
---     -   Requires @VK_KHR_image_format_list@
---
---     -   Requires @VK_KHR_sampler_ycbcr_conversion@
---
--- [__Contact__]
---
---     -   Chad Versace
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_image_drm_format_modifier:%20&body=@chadversary%20 >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2018-08-29
---
--- [__IP Status__]
---     No known IP claims.
---
--- [__Contributors__]
---
---     -   Antoine Labour, Google
---
---     -   Bas Nieuwenhuizen, Google
---
---     -   Chad Versace, Google
---
---     -   James Jones, NVIDIA
---
---     -   Jason Ekstrand, Intel
---
---     -   Jőrg Wagner, ARM
---
---     -   Kristian Høgsberg Kristensen, Google
---
---     -   Ray Smith, ARM
---
--- == Description
---
--- This extension provides the ability to use /DRM format modifiers/ with
--- images, enabling Vulkan to better integrate with the Linux ecosystem of
--- graphics, video, and display APIs.
---
--- Its functionality closely overlaps with
--- @EGL_EXT_image_dma_buf_import_modifiers@<VK_EXT_image_drm_format_modifier-fn2.html 2>\<\/link>^
+-- | Its functionality closely overlaps with
+-- @EGL_EXT_image_dma_buf_import_modifiers@<VK_EXT_image_drm_format_modifier-fn2.html 2>^
 -- and
--- @EGL_MESA_image_dma_buf_export@<VK_EXT_image_drm_format_modifier-fn3.html 3>\<\/link>^.
--- Unlike the EGL extensions, this extension does not require the use of a
--- specific handle type (such as a dma_buf) for external memory and
--- provides more explicit control of image creation.
---
--- == Introduction to DRM Format Modifiers
---
--- A /DRM format modifier/ is a 64-bit, vendor-prefixed, semi-opaque
--- unsigned integer. Most /modifiers/ represent a concrete, vendor-specific
--- tiling format for images. Some exceptions are @DRM_FORMAT_MOD_LINEAR@
--- (which is not vendor-specific); @DRM_FORMAT_MOD_NONE@ (which is an alias
--- of @DRM_FORMAT_MOD_LINEAR@ due to historical accident); and
--- @DRM_FORMAT_MOD_INVALID@ (which does not represent a tiling format). The
--- /modifier’s/ vendor prefix consists of the 8 most significant bits. The
--- canonical list of /modifiers/ and vendor prefixes is found in
--- <https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/drm/drm_fourcc.h drm_fourcc.h>
--- in the Linux kernel source. The other dominant source of /modifiers/ are
--- vendor kernel trees.
---
--- One goal of /modifiers/ in the Linux ecosystem is to enumerate for each
--- vendor a reasonably sized set of tiling formats that are appropriate for
--- images shared across processes, APIs, and\/or devices, where each
--- participating component may possibly be from different vendors. A
--- non-goal is to enumerate all tiling formats supported by all vendors.
--- Some tiling formats used internally by vendors are inappropriate for
--- sharing; no /modifiers/ should be assigned to such tiling formats.
---
--- Modifier values typically do not /describe/ memory layouts. More
--- precisely, a /modifier/\'s lower 56 bits usually have no structure.
--- Instead, modifiers /name/ memory layouts; they name a small set of
--- vendor-preferred layouts for image sharing. As a consequence, in each
--- vendor namespace the modifier values are often sequentially allocated
--- starting at 1.
---
--- Each /modifier/ is usually supported by a single vendor and its name
--- matches the pattern @{VENDOR}_FORMAT_MOD_*@ or
--- @DRM_FORMAT_MOD_{VENDOR}_*@. Examples are @I915_FORMAT_MOD_X_TILED@ and
--- @DRM_FORMAT_MOD_BROADCOM_VC4_T_TILED@. An exception is
--- @DRM_FORMAT_MOD_LINEAR@, which is supported by most vendors.
---
--- Many APIs in Linux use /modifiers/ to negotiate and specify the memory
--- layout of shared images. For example, a Wayland compositor and Wayland
--- client may, by relaying /modifiers/ over the Wayland protocol
--- @zwp_linux_dmabuf_v1@, negotiate a vendor-specific tiling format for a
--- shared @wl_buffer@. The client may allocate the underlying memory for
--- the @wl_buffer@ with GBM, providing the chosen /modifier/ to
--- @gbm_bo_create_with_modifiers@. The client may then import the
--- @wl_buffer@ into Vulkan for producing image content, providing the
--- resource’s dma_buf to
--- 'Vulkan.Extensions.VK_KHR_external_memory_fd.ImportMemoryFdInfoKHR' and
--- its /modifier/ to 'ImageDrmFormatModifierExplicitCreateInfoEXT'. The
--- compositor may then import the @wl_buffer@ into OpenGL for sampling,
--- providing the resource’s dma_buf and /modifier/ to @eglCreateImage@. The
--- compositor may also bypass OpenGL and submit the @wl_buffer@ directly to
--- the kernel’s display API, providing the dma_buf and /modifier/ through
--- @drm_mode_fb_cmd2@.
---
--- == Format Translation
---
--- /Modifier/-capable APIs often pair /modifiers/ with DRM formats, which
--- are defined in
--- <https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/drm/drm_fourcc.h drm_fourcc.h>.
--- However, @VK_EXT_image_drm_format_modifier@ uses
--- 'Vulkan.Core10.Enums.Format.Format' instead of DRM formats. The
--- application must convert between 'Vulkan.Core10.Enums.Format.Format' and
--- DRM format when it sends or receives a DRM format to or from an external
--- API.
---
--- The mapping from 'Vulkan.Core10.Enums.Format.Format' to DRM format is
--- lossy. Therefore, when receiving a DRM format from an external API,
--- often the application must use information from the external API to
--- accurately map the DRM format to a 'Vulkan.Core10.Enums.Format.Format'.
--- For example, DRM formats do not distinguish between RGB and sRGB (as of
--- 2018-03-28); external information is required to identify the image’s
--- colorspace.
---
--- The mapping between 'Vulkan.Core10.Enums.Format.Format' and DRM format
--- is also incomplete. For some DRM formats there exist no corresponding
--- Vulkan format, and for some Vulkan formats there exist no corresponding
--- DRM format.
---
--- == Usage Patterns
---
--- Three primary usage patterns are intended for this extension:
---
--- -   __Negotiation.__ The application negotiates with /modifier/-aware,
---     external components to determine sets of image creation parameters
---     supported among all components.
---
---     In the Linux ecosystem, the negotiation usually assumes the image is
---     a 2D, single-sampled, non-mipmapped, non-array image; this extension
---     permits that assumption but does not require it. The result of the
---     negotiation usually resembles a set of tuples such as /(drmFormat,
---     drmFormatModifier)/, where each participating component supports all
---     tuples in the set.
---
---     Many details of this negotiation—such as the protocol used during
---     negotiation, the set of image creation parameters expressable in the
---     protocol, and how the protocol chooses which process and which API
---     will create the image—are outside the scope of this specification.
---
---     In this extension,
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2'
---     with 'DrmFormatModifierPropertiesListEXT' serves a primary role
---     during the negotiation, and
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
---     with 'PhysicalDeviceImageDrmFormatModifierInfoEXT' serves a
---     secondary role.
---
--- -   __Import.__ The application imports an image with a /modifier/.
---
---     In this pattern, the application receives from an external source
---     the image’s memory and its creation parameters, which are often the
---     result of the negotiation described above. Some image creation
---     parameters are implicitly defined by the external source; for
---     example, 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' is often
---     assumed. Some image creation parameters are usually explicit, such
---     as the image’s @format@, @drmFormatModifier@, and @extent@; and each
---     plane’s @offset@ and @rowPitch@.
---
---     Before creating the image, the application first verifies that the
---     physical device supports the received creation parameters by
---     querying
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2'
---     with 'DrmFormatModifierPropertiesListEXT' and
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
---     with 'PhysicalDeviceImageDrmFormatModifierInfoEXT'. Then the
---     application creates the image by chaining
---     'ImageDrmFormatModifierExplicitCreateInfoEXT' and
---     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'
---     onto 'Vulkan.Core10.Image.ImageCreateInfo'.
---
--- -   __Export.__ The application creates an image and allocates its
---     memory. Then the application exports to /modifier/-aware consumers
---     the image’s memory handles; its creation parameters; its /modifier/;
---     and the <VkSubresourceLayout.html offset>,
---     <VkSubresourceLayout.html size>, and
---     <VkSubresourceLayout.html rowPitch> of each /memory plane/.
---
---     In this pattern, the Vulkan device is the authority for the image;
---     it is the allocator of the image’s memory and the decider of the
---     image’s creation parameters. When choosing the image’s creation
---     parameters, the application usually chooses a tuple /(format,
---     drmFormatModifier)/ from the result of the negotiation described
---     above. The negotiation’s result often contains multiple tuples that
---     share the same format but differ in their /modifier/. In this case,
---     the application should defer the choice of the image’s /modifier/ to
---     the Vulkan implementation by providing all such /modifiers/ to
---     'ImageDrmFormatModifierListCreateInfoEXT'::@pDrmFormatModifiers@;
---     and the implementation should choose from @pDrmFormatModifiers@ the
---     optimal /modifier/ in consideration with the other image parameters.
---
---     The application creates the image by chaining
---     'ImageDrmFormatModifierListCreateInfoEXT' and
---     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'
---     onto 'Vulkan.Core10.Image.ImageCreateInfo'. The protocol and APIs by
---     which the application will share the image with external consumers
---     will likely determine the value of
---     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'::@handleTypes@.
---     The implementation chooses for the image an optimal /modifier/ from
---     'ImageDrmFormatModifierListCreateInfoEXT'::@pDrmFormatModifiers@.
---     The application then queries the implementation-chosen /modifier/
---     with 'getImageDrmFormatModifierPropertiesEXT', and queries the
---     memory layout of each plane with
---     'Vulkan.Core10.Image.getImageSubresourceLayout'.
---
---     The application then allocates the image’s memory with
---     'Vulkan.Core10.Memory.MemoryAllocateInfo', adding chained extending
---     structures for external memory; binds it to the image; and exports
---     the memory, for example, with
---     'Vulkan.Extensions.VK_KHR_external_memory_fd.getMemoryFdKHR'.
---
---     Finally, the application sends the image’s creation parameters, its
---     /modifier/, its per-plane memory layout, and the exported memory
---     handle to the external consumers. The details of how the application
---     transmits this information to external consumers is outside the
---     scope of this specification.
---
--- == Prior Art
---
--- Extension
--- @EGL_EXT_image_dma_buf_import@<VK_EXT_image_drm_format_modifier-fn1.html 1>\<\/link>^
--- introduced the ability to create an @EGLImage@ by importing for each
--- plane a dma_buf, offset, and row pitch.
---
--- Later, extension
--- @EGL_EXT_image_dma_buf_import_modifiers@<VK_EXT_image_drm_format_modifier-fn2.html 2>\<\/link>^
--- introduced the ability to query which combination of formats and
--- /modifiers/ the implementation supports and to specify /modifiers/
--- during creation of the @EGLImage@.
---
--- Extension
--- @EGL_MESA_image_dma_buf_export@<VK_EXT_image_drm_format_modifier-fn3.html 3>\<\/link>^
--- is the inverse of @EGL_EXT_image_dma_buf_import_modifiers@.
---
--- The Linux kernel modesetting API (KMS), when configuring the display’s
--- framebuffer with @struct
--- drm_mode_fb_cmd2@<VK_EXT_image_drm_format_modifier-fn4.html 4>\<\/link>^,
--- allows one to specify the frambuffer’s /modifier/ as well as a per-plane
--- memory handle, offset, and row pitch.
---
--- GBM, a graphics buffer manager for Linux, allows creation of a @gbm_bo@
--- (that is, a graphics /buffer object/) by importing data similar to that
--- in
--- @EGL_EXT_image_dma_buf_import_modifiers@<VK_EXT_image_drm_format_modifier-fn1.html 1>\<\/link>^;
--- and symmetrically allows exporting the same data from the @gbm_bo@. See
--- the references to /modifier/ and /plane/ in
--- @gbm.h@<VK_EXT_image_drm_format_modifier-fn5.html 5>\<\/link>^.
---
--- == New Commands
---
--- -   'getImageDrmFormatModifierPropertiesEXT'
---
--- == New Structures
---
--- -   'DrmFormatModifierPropertiesEXT'
---
--- -   'ImageDrmFormatModifierPropertiesEXT'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.FormatProperties2':
---
---     -   'DrmFormatModifierPropertiesListEXT'
---
--- -   Extending 'Vulkan.Core10.Image.ImageCreateInfo':
---
---     -   'ImageDrmFormatModifierExplicitCreateInfoEXT'
---
---     -   'ImageDrmFormatModifierListCreateInfoEXT'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2':
---
---     -   'PhysicalDeviceImageDrmFormatModifierInfoEXT'
---
--- == New Enum Constants
---
--- -   'EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME'
---
--- -   'EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION'
---
--- -   Extending
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits':
---
---     -   'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT'
---
---     -   'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT'
---
---     -   'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT'
---
---     -   'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT'
---
--- -   Extending 'Vulkan.Core10.Enums.ImageTiling.ImageTiling':
---
---     -   'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'
---
--- -   Extending 'Vulkan.Core10.Enums.Result.Result':
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT'
---
--- == Issues
---
--- 1) Should this extension define a single DRM format modifier per
--- 'Vulkan.Core10.Handles.Image'? Or define one per plane?
---
--- +
---
--- __RESOLVED__: There exists a single DRM format modifier per
--- 'Vulkan.Core10.Handles.Image'.
---
--- __DISCUSSION__: Prior art, such as
--- @EGL_EXT_image_dma_buf_import_modifiers@<VK_EXT_image_drm_format_modifier-fn2.html 2>\<\/link>^,
--- @struct drm_mode_fb_cmd2@<VK_EXT_image_drm_format_modifier-fn4.html 4>\<\/link>^,
--- and @struct
--- gbm_import_fd_modifier_data@<VK_EXT_image_drm_format_modifier-fn5.html 5>\<\/link>^,
--- allows defining one /modifier/ per plane. However, developers of the GBM
--- and kernel APIs concede it was a mistake. Beginning in Linux 4.10, the
--- kernel requires that the application provide the same DRM format
--- /modifier/ for each plane. (See Linux commit
--- <https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=bae781b259269590109e8a4a8227331362b88212 bae781b259269590109e8a4a8227331362b88212>).
--- And GBM provides an entry point, @gbm_bo_get_modifier@, for querying the
--- /modifier/ of the image but does not provide one to query the modifier
--- of individual planes.
---
--- 2) When creating an image with
--- 'ImageDrmFormatModifierExplicitCreateInfoEXT', which is typically used
--- when /importing/ an image, should the application explicitly provide the
--- size of each plane?
---
--- +
---
--- __RESOLVED__: No. The application /must/ not provide the size. To
--- enforce this, the API requires that
--- 'ImageDrmFormatModifierExplicitCreateInfoEXT'::@pPlaneLayouts->size@
--- /must/ be 0.
---
--- __DISCUSSION__: Prior art, such as
--- @EGL_EXT_image_dma_buf_import_modifiers@<VK_EXT_image_drm_format_modifier-fn2.html 2>\<\/link>^,
--- @struct drm_mode_fb_cmd2@<VK_EXT_image_drm_format_modifier-fn4.html 4>\<\/link>^,
--- and @struct
--- gbm_import_fd_modifier_data@<VK_EXT_image_drm_format_modifier-fn5.html 5>\<\/link>^,
--- omits from the API the size of each plane. Instead, the APIs infer each
--- plane’s size from the import parameters, which include the image’s pixel
--- format and a dma_buf, offset, and row pitch for each plane.
---
--- However, Vulkan differs from EGL and GBM with regards to image creation
--- in the following ways:
---
--- -   __Undedicated allocation by default.__ When importing or exporting a
---     set of dma_bufs as an @EGLImage@ or @gbm_bo@, common practice
---     mandates that each dma_buf’s memory be dedicated (in the sense of
---     @VK_KHR_dedicated_allocation@) to the image (though not necessarily
---     dedicated to a single plane). In particular, neither the GBM
---     documentation nor the EGL extension specifications explicitly state
---     this requirement, but in light of common practice this is likely due
---     to under-specification rather than intentional omission. In
---     contrast, @VK_EXT_image_drm_format_modifier@ permits, but does not
---     require, the implementation to require dedicated allocations for
---     images created with
---     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'.
---
--- -   __Separation of image creation and memory allocation.__ When
---     importing a set of dma_bufs as an @EGLImage@ or @gbm_bo@, EGL and
---     GBM create the image resource and bind it to memory (the dma_bufs)
---     simultaneously. This allows EGL and GBM to query each dma_buf’s size
---     during image creation. In Vulkan, image creation and memory
---     allocation are independent unless a dedicated allocation is used (as
---     in @VK_KHR_dedicated_allocation@). Therefore, without requiring
---     dedicated allocation, Vulkan cannot query the size of each dma_buf
---     (or other external handle) when calculating the image’s memory
---     layout. Even if dedication allocation were required, Vulkan cannot
---     calculate the image’s memory layout until after the image is bound
---     to its dma_ufs.
---
--- The above differences complicate the potential inference of plane size
--- in Vulkan. Consider the following problematic cases:
---
--- -   __Padding.__ Some plane of the image may require
---     implementation-dependent padding.
---
--- -   __Metadata.__ For some /modifiers/, the image may have a metadata
---     plane which requires a non-trivial calculation to determine its
---     size.
---
--- -   __Mipmapped, array, and 3D images.__ The implementation may support
---     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'
---     for images whose @mipLevels@, @arrayLayers@, or @depth@ is greater
---     than 1. For such images with certain /modifiers/, the calculation of
---     each plane’s size may be non-trivial.
---
--- However, an application-provided plane size solves none of the above
--- problems.
---
--- For simplicity, consider an external image with a single memory plane.
--- The implementation is obviously capable calculating the image’s size
--- when its tiling is
--- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL'. Likewise, any
--- reasonable implementation is capable of calculating the image’s size
--- when its tiling uses a supported /modifier/.
---
--- Suppose that the external image’s size is smaller than the
--- implementation-calculated size. If the application provided the external
--- image’s size to 'Vulkan.Core10.Image.createImage', the implementation
--- would observe the mismatched size and recognize its inability to
--- comprehend the external image’s layout (unless the implementation used
--- the application-provided size to select a refinement of the tiling
--- layout indicated by the /modifier/, which is strongly discouraged). The
--- implementation would observe the conflict, and reject image creation
--- with
--- 'Vulkan.Core10.Enums.Result.ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT'.
--- On the other hand, if the application did not provide the external
--- image’s size to 'Vulkan.Core10.Image.createImage', then the application
--- would observe after calling
--- 'Vulkan.Core10.MemoryManagement.getImageMemoryRequirements' that the
--- external image’s size is less than the size required by the
--- implementation. The application would observe the conflict and refuse to
--- bind the 'Vulkan.Core10.Handles.Image' to the external memory. In both
--- cases, the result is explicit failure.
---
--- Suppose that the external image’s size is larger than the
--- implementation-calculated size. If the application provided the external
--- image’s size to 'Vulkan.Core10.Image.createImage', for reasons similar
--- to above the implementation would observe the mismatched size and
--- recognize its inability to comprehend the image data residing in the
--- extra size. The implementation, however, must assume that image data
--- resides in the entire size provided by the application. The
--- implementation would observe the conflict and reject image creation with
--- 'Vulkan.Core10.Enums.Result.ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT'.
--- On the other hand, if the application did not provide the external
--- image’s size to 'Vulkan.Core10.Image.createImage', then the application
--- would observe after calling
--- 'Vulkan.Core10.MemoryManagement.getImageMemoryRequirements' that the
--- external image’s size is larger than the implementation-usable size. The
--- application would observe the conflict and refuse to bind the
--- 'Vulkan.Core10.Handles.Image' to the external memory. In both cases, the
--- result is explicit failure.
---
--- Therefore, an application-provided size provides no benefit, and this
--- extension should not require it. This decision renders
--- 'Vulkan.Core10.Image.SubresourceLayout'::@size@ an unused field during
--- image creation, and thus introduces a risk that implementations may
--- require applications to submit sideband creation parameters in the
--- unused field. To prevent implementations from relying on sideband data,
--- this extension /requires/ the application to set @size@ to 0.
---
--- === References
---
--- 1.  #VK_EXT_image_drm_format_modifier-fn1#
---     <https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import.txt EGL_EXT_image_dma_buf_import>
---
--- 2.  #VK_EXT_image_drm_format_modifier-fn2#
---     <https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt EGL_EXT_image_dma_buf_import_modifiers>
---
--- 3.  #VK_EXT_image_drm_format_modifier-fn3#
---     <https://www.khronos.org/registry/EGL/extensions/MESA/EGL_MESA_image_dma_buf_export.txt EGL_MESA_image_dma_buf_export>
---
--- 4.  #VK_EXT_image_drm_format_modifier-fn4#
---     <https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/uapi/drm/drm_mode.h?id=refs/tags/v4.10#n392 struct
---     drm_mode_fb_cmd2>
---
--- 5.  #VK_EXT_image_drm_format_modifier-fn5#
---     <https://cgit.freedesktop.org/mesa/mesa/tree/src/gbm/main/gbm.h?id=refs/tags/mesa-18.0.0-rc1 gbm.h>
---
--- === Version History
---
--- -   Revision 1, 2018-08-29 (Chad Versace)
---
---     -   First stable revision
---
--- = See Also
---
--- 'DrmFormatModifierPropertiesEXT', 'DrmFormatModifierPropertiesListEXT',
--- 'ImageDrmFormatModifierExplicitCreateInfoEXT',
--- 'ImageDrmFormatModifierListCreateInfoEXT',
--- 'ImageDrmFormatModifierPropertiesEXT',
--- 'PhysicalDeviceImageDrmFormatModifierInfoEXT',
--- 'getImageDrmFormatModifierPropertiesEXT'
---
--- = Document Notes
---
--- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier Vulkan Specification>
---
--- This page is a generated document. Fixes and changes should be made to
--- the generator scripts, not directly.
+-- @EGL_MESA_image_dma_buf_export@<VK_EXT_image_drm_format_modifier-fn3.html 3>^.
 module Vulkan.Extensions.VK_EXT_image_drm_format_modifier  ( DrmFormatModifierPropertiesEXT
                                                            , DrmFormatModifierPropertiesListEXT
                                                            , ImageDrmFormatModifierExplicitCreateInfoEXT
diff --git a/src/Vulkan/Extensions/VK_EXT_image_robustness.hs b/src/Vulkan/Extensions/VK_EXT_image_robustness.hs
--- a/src/Vulkan/Extensions/VK_EXT_image_robustness.hs
+++ b/src/Vulkan/Extensions/VK_EXT_image_robustness.hs
@@ -143,15 +143,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceImageRobustnessFeaturesEXT' structure
--- describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceImageRobustnessFeaturesEXT' structure is included
--- in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
+-- 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. 'PhysicalDeviceImageRobustnessFeaturesEXT' /can/ also be used
+-- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_index_type_uint8.hs b/src/Vulkan/Extensions/VK_EXT_index_type_uint8.hs
--- a/src/Vulkan/Extensions/VK_EXT_index_type_uint8.hs
+++ b/src/Vulkan/Extensions/VK_EXT_index_type_uint8.hs
@@ -116,18 +116,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceIndexTypeUint8FeaturesEXT' structure
--- describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceIndexTypeUint8FeaturesEXT' structure is included
--- in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceIndexTypeUint8FeaturesEXT' /can/ also be included in the
--- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable
--- features.
+-- 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. 'PhysicalDeviceIndexTypeUint8FeaturesEXT' /can/ also be used
+-- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_inline_uniform_block.hs b/src/Vulkan/Extensions/VK_EXT_inline_uniform_block.hs
--- a/src/Vulkan/Extensions/VK_EXT_inline_uniform_block.hs
+++ b/src/Vulkan/Extensions/VK_EXT_inline_uniform_block.hs
@@ -53,9 +53,9 @@
 -- This extension introduces the ability to back uniform blocks directly
 -- with descriptor sets by storing inline uniform data within descriptor
 -- pool storage. Compared to push constants this new construct allows
--- uniform data to be reused across multiple disjoint sets of draw or
--- dispatch commands and /may/ enable uniform data to be accessed with less
--- indirections compared to uniforms backed by buffer memory.
+-- uniform data to be reused across multiple disjoint sets of drawing or
+-- dispatching commands and /may/ enable uniform data to be accessed with
+-- fewer indirections compared to uniforms backed by buffer memory.
 --
 -- == New Structures
 --
@@ -215,18 +215,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceInlineUniformBlockFeaturesEXT'
--- structure describe the following features:
+-- This structure describes the following features:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceInlineUniformBlockFeaturesEXT' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether each feature is supported.
--- 'PhysicalDeviceInlineUniformBlockFeaturesEXT' /can/ also be included in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable
--- features.
+-- 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. 'PhysicalDeviceInlineUniformBlockFeaturesEXT' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
@@ -296,17 +297,15 @@
 -- inline uniform block properties that can be supported by an
 -- implementation
 --
--- = Members
---
--- The members of the 'PhysicalDeviceInlineUniformBlockPropertiesEXT'
--- structure describe the following implementation-dependent limits:
---
 -- = Description
 --
 -- If the 'PhysicalDeviceInlineUniformBlockPropertiesEXT' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- 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)
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_inline_uniform_block.hs-boot b/src/Vulkan/Extensions/VK_EXT_inline_uniform_block.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_inline_uniform_block.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_inline_uniform_block.hs-boot
@@ -53,9 +53,9 @@
 -- This extension introduces the ability to back uniform blocks directly
 -- with descriptor sets by storing inline uniform data within descriptor
 -- pool storage. Compared to push constants this new construct allows
--- uniform data to be reused across multiple disjoint sets of draw or
--- dispatch commands and /may/ enable uniform data to be accessed with less
--- indirections compared to uniforms backed by buffer memory.
+-- uniform data to be reused across multiple disjoint sets of drawing or
+-- dispatching commands and /may/ enable uniform data to be accessed with
+-- fewer indirections compared to uniforms backed by buffer memory.
 --
 -- == New Structures
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_line_rasterization.hs b/src/Vulkan/Extensions/VK_EXT_line_rasterization.hs
--- a/src/Vulkan/Extensions/VK_EXT_line_rasterization.hs
+++ b/src/Vulkan/Extensions/VK_EXT_line_rasterization.hs
@@ -103,9 +103,8 @@
 -- == Issues
 --
 -- > (1) Do we need to support Bresenham-style and smooth lines with more than
--- >     one rasterization sample? i.e. the equivalent of
--- >     glDisable(GL_MULTISAMPLE) in OpenGL when the framebuffer has more than
--- >     one sample?
+-- > one rasterization sample? i.e. the equivalent of glDisable(GL_MULTISAMPLE)
+-- > in OpenGL when the framebuffer has more than one sample?
 --
 -- > RESOLVED: Yes.
 -- > For simplicity, Bresenham line rasterization carries forward a few
@@ -270,18 +269,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceLineRasterizationFeaturesEXT'
--- structure describe the following features:
+-- This structure describes the following features:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceLineRasterizationFeaturesEXT' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceLineRasterizationFeaturesEXT' /can/ also be included in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable
--- the feature.
+-- 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. 'PhysicalDeviceLineRasterizationFeaturesEXT' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
@@ -382,17 +382,15 @@
 -- | VkPhysicalDeviceLineRasterizationPropertiesEXT - Structure describing
 -- line rasterization properties supported by an implementation
 --
--- = Members
---
--- The members of the 'PhysicalDeviceLineRasterizationPropertiesEXT'
--- structure describe the following implementation-dependent limits:
---
 -- = Description
 --
 -- If the 'PhysicalDeviceLineRasterizationPropertiesEXT' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- 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)
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_line_rasterization.hs-boot b/src/Vulkan/Extensions/VK_EXT_line_rasterization.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_line_rasterization.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_line_rasterization.hs-boot
@@ -103,9 +103,8 @@
 -- == Issues
 --
 -- > (1) Do we need to support Bresenham-style and smooth lines with more than
--- >     one rasterization sample? i.e. the equivalent of
--- >     glDisable(GL_MULTISAMPLE) in OpenGL when the framebuffer has more than
--- >     one sample?
+-- > one rasterization sample? i.e. the equivalent of glDisable(GL_MULTISAMPLE)
+-- > in OpenGL when the framebuffer has more than one sample?
 --
 -- > RESOLVED: Yes.
 -- > For simplicity, Bresenham line rasterization carries forward a few
diff --git a/src/Vulkan/Extensions/VK_EXT_memory_priority.hs b/src/Vulkan/Extensions/VK_EXT_memory_priority.hs
--- a/src/Vulkan/Extensions/VK_EXT_memory_priority.hs
+++ b/src/Vulkan/Extensions/VK_EXT_memory_priority.hs
@@ -131,18 +131,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceMemoryPriorityFeaturesEXT' structure
--- describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceMemoryPriorityFeaturesEXT' structure is included
--- in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceMemoryPriorityFeaturesEXT' /can/ also be included in the
--- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable
--- features.
+-- 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. 'PhysicalDeviceMemoryPriorityFeaturesEXT' /can/ also be used
+-- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_pci_bus_info.hs b/src/Vulkan/Extensions/VK_EXT_pci_bus_info.hs
--- a/src/Vulkan/Extensions/VK_EXT_pci_bus_info.hs
+++ b/src/Vulkan/Extensions/VK_EXT_pci_bus_info.hs
@@ -127,6 +127,18 @@
 -- | VkPhysicalDevicePCIBusInfoPropertiesEXT - Structure containing PCI bus
 -- information of a physical device
 --
+-- = Description
+--
+-- If the 'PhysicalDevicePCIBusInfoPropertiesEXT' 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.
+--
+-- These are properties of the PCI bus information of a physical device.
+--
 -- == Valid Usage (Implicit)
 --
 -- = See Also
diff --git a/src/Vulkan/Extensions/VK_EXT_pipeline_creation_cache_control.hs b/src/Vulkan/Extensions/VK_EXT_pipeline_creation_cache_control.hs
--- a/src/Vulkan/Extensions/VK_EXT_pipeline_creation_cache_control.hs
+++ b/src/Vulkan/Extensions/VK_EXT_pipeline_creation_cache_control.hs
@@ -102,7 +102,7 @@
 -- The job or task based game engines that are being developed to take
 -- advantage of explicit graphics APIs like Vulkan may behave exceptionally
 -- poorly if any of the above scenarios occur. However, most game engines
--- are already built to \"stream\" in assets dynamically as the user plays
+-- are already built to “stream” in assets dynamically as the user plays
 -- the game. By adding control by way of
 -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlags', we can
 -- require an ICD to report back a failure in critical execution paths
@@ -241,19 +241,20 @@
 --
 -- = Members
 --
--- The members of the
--- 'PhysicalDevicePipelineCreationCacheControlFeaturesEXT' structure
--- describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDevicePipelineCreationCacheControlFeaturesEXT' structure
--- is included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDevicePipelineCreationCacheControlFeaturesEXT' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- enable features.
+-- 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. 'PhysicalDevicePipelineCreationCacheControlFeaturesEXT' /can/
+-- also be used in the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
+-- features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_pipeline_creation_cache_control.hs-boot b/src/Vulkan/Extensions/VK_EXT_pipeline_creation_cache_control.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_pipeline_creation_cache_control.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_pipeline_creation_cache_control.hs-boot
@@ -102,7 +102,7 @@
 -- The job or task based game engines that are being developed to take
 -- advantage of explicit graphics APIs like Vulkan may behave exceptionally
 -- poorly if any of the above scenarios occur. However, most game engines
--- are already built to \"stream\" in assets dynamically as the user plays
+-- are already built to “stream” in assets dynamically as the user plays
 -- the game. By adding control by way of
 -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlags', we can
 -- require an ICD to report back a failure in critical execution paths
diff --git a/src/Vulkan/Extensions/VK_EXT_private_data.hs b/src/Vulkan/Extensions/VK_EXT_private_data.hs
--- a/src/Vulkan/Extensions/VK_EXT_private_data.hs
+++ b/src/Vulkan/Extensions/VK_EXT_private_data.hs
@@ -629,17 +629,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDevicePrivateDataFeaturesEXT' structure
--- describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDevicePrivateDataFeaturesEXT' structure is included in
--- the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDevicePrivateDataFeaturesEXT' /can/ also be used in the @pNext@
--- chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable the features.
+-- 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. 'PhysicalDevicePrivateDataFeaturesEXT' /can/ also be used in
+-- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_provoking_vertex.hs b/src/Vulkan/Extensions/VK_EXT_provoking_vertex.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_provoking_vertex.hs
@@ -0,0 +1,530 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_provoking_vertex - device extension
+--
+-- == VK_EXT_provoking_vertex
+--
+-- [__Name String__]
+--     @VK_EXT_provoking_vertex@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     255
+--
+-- [__Revision__]
+--     1
+--
+-- [__Extension and Version Dependencies__]
+--
+--     -   Requires Vulkan 1.0
+--
+--     -   Requires @VK_KHR_get_physical_device_properties2@
+--
+-- [__Special Use__]
+--
+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse OpenGL \/ ES support>
+--
+-- [__Contact__]
+--
+--     -   Jesse Hall
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_provoking_vertex:%20&body=@jessehall%20 >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2021-02-22
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Alexis Hétu, Google
+--
+--     -   Bill Licea-Kane, Qualcomm
+--
+--     -   Daniel Koch, Nvidia
+--
+--     -   Jamie Madill, Google
+--
+--     -   Jan-Harald Fredriksen, Arm
+--
+--     -   Jason Ekstrand, Intel
+--
+--     -   Jeff Bolz, Nvidia
+--
+--     -   Jeff Leger, Qualcomm
+--
+--     -   Jesse Hall, Google
+--
+--     -   Jörg Wagner, Arm
+--
+--     -   Matthew Netsch, Qualcomm
+--
+--     -   Mike Blumenkrantz, Valve
+--
+--     -   Piers Daniell, Nvidia
+--
+--     -   Tobias Hector, AMD
+--
+-- == Description
+--
+-- This extension allows changing the provoking vertex convention between
+-- Vulkan’s default convention (first vertex) and OpenGL’s convention (last
+-- vertex).
+--
+-- This extension is intended for use by API-translation layers that
+-- implement APIs like OpenGL on top of Vulkan, and need to match the
+-- source API’s provoking vertex convention. Applications using Vulkan
+-- directly should use Vulkan’s default convention.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceProvokingVertexFeaturesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceProvokingVertexPropertiesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo':
+--
+--     -   'PipelineRasterizationProvokingVertexStateCreateInfoEXT'
+--
+-- == New Enums
+--
+-- -   'ProvokingVertexModeEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_PROVOKING_VERTEX_EXTENSION_NAME'
+--
+-- -   'EXT_PROVOKING_VERTEX_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT'
+--
+-- == Issues
+--
+-- 1) At what granularity should this state be set?
+--
+-- __RESOLVED__: At pipeline bind, with an optional per-renderpass
+-- restriction.
+--
+-- The most natural place to put this state is in the graphics pipeline
+-- object. Some implementations require it to be known when creating the
+-- pipeline, and pipeline state is convenient for implementing OpenGL 3.2’s
+-- glProvokingVertex, which can change the state between draw calls.
+-- However, some implementations can only change it approximately
+-- renderpass granularity. To accommodate both, provoking vertex will be
+-- pipeline state, but implementations can require that only one mode is
+-- used within a renderpass instance; the renderpass’s mode is chosen
+-- implicitly when the first pipeline is bound.
+--
+-- 2) Does the provoking vertex mode affect the order that vertices are
+-- written to transform feedback buffers?
+--
+-- __RESOLVED__: Yes, to enable layered implementations of OpenGL and D3D.
+--
+-- All of OpenGL, OpenGL ES, and Direct3D 11 require that vertices are
+-- written to transform feedback buffers such that flat-shaded attributes
+-- have the same value when drawing the contents of the transform feedback
+-- buffer as they did in the original drawing when the transform feedback
+-- buffer was written (assuming the provoking vertex mode hasn’t changed,
+-- in APIs that support more than one mode).
+--
+-- == Version History
+--
+-- -   Revision 1(c), 2021-02-22 (Jesse Hall)
+--
+--     -   Added
+--         VkPhysicalDeviceProvokingVertexPropertiesEXT::transformFeedbackPreservesTriangleFanProvokingVertex
+--         to accommodate implementations that can’t change the transform
+--         feedback vertex order for triangle fans.
+--
+-- -   Revision 1(b), 2020-06-14 (Jesse Hall)
+--
+--     -   Added
+--         VkPhysicalDeviceProvokingVertexFeaturesEXT::transformFeedbackPreservesProvokingVertex
+--         and required that transform feedback write vertices so as to
+--         preserve the provoking vertex of each primitive.
+--
+-- -   Revision 1(a), 2019-10-23 (Jesse Hall)
+--
+--     -   Initial draft, based on a proposal by Alexis Hétu
+--
+-- = See Also
+--
+-- 'PhysicalDeviceProvokingVertexFeaturesEXT',
+-- 'PhysicalDeviceProvokingVertexPropertiesEXT',
+-- 'PipelineRasterizationProvokingVertexStateCreateInfoEXT',
+-- 'ProvokingVertexModeEXT'
+--
+-- = Document Notes
+--
+-- For more information, see the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_provoking_vertex Vulkan Specification>
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_EXT_provoking_vertex  ( PhysicalDeviceProvokingVertexFeaturesEXT(..)
+                                                  , PhysicalDeviceProvokingVertexPropertiesEXT(..)
+                                                  , PipelineRasterizationProvokingVertexStateCreateInfoEXT(..)
+                                                  , ProvokingVertexModeEXT( PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT
+                                                                          , PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT
+                                                                          , ..
+                                                                          )
+                                                  , EXT_PROVOKING_VERTEX_SPEC_VERSION
+                                                  , pattern EXT_PROVOKING_VERTEX_SPEC_VERSION
+                                                  , EXT_PROVOKING_VERTEX_EXTENSION_NAME
+                                                  , pattern EXT_PROVOKING_VERTEX_EXTENSION_NAME
+                                                  ) where
+
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import Foreign.Marshal.Alloc (allocaBytesAligned)
+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_PROVOKING_VERTEX_FEATURES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT))
+-- | VkPhysicalDeviceProvokingVertexFeaturesEXT - Structure describing the
+-- provoking vertex features that can be supported by an implementation
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceProvokingVertexFeaturesEXT' 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. 'PhysicalDeviceProvokingVertexFeaturesEXT' /can/ also be used
+-- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
+--
+-- When 'PhysicalDeviceProvokingVertexFeaturesEXT' is in the @pNext@ chain
+-- of 'Vulkan.Core10.Device.DeviceCreateInfo' but the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback feature>
+-- is not enabled, the value of @transformFeedbackPreservesProvokingVertex@
+-- is ignored.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceProvokingVertexFeaturesEXT = PhysicalDeviceProvokingVertexFeaturesEXT
+  { -- | #features-provokingVertexLast# @provokingVertexLast@ indicates whether
+    -- the implementation supports the 'PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT'
+    -- <VkProvokingVertexModeEXT.html provoking vertex mode> for flat shading.
+    provokingVertexLast :: Bool
+  , -- | #features-transformFeedbackPreservesProvokingVertex#
+    -- @transformFeedbackPreservesProvokingVertex@ indicates that the order of
+    -- vertices within each primitive written by transform feedback will
+    -- preserve the provoking vertex. This does not apply to triangle fan
+    -- primitives when
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-transformFeedbackPreservesTriangleFanProvokingVertex transformFeedbackPreservesTriangleFanProvokingVertex>
+    -- is 'Vulkan.Core10.FundamentalTypes.FALSE'.
+    -- @transformFeedbackPreservesProvokingVertex@ /must/ be
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE' when the
+    -- VK_EXT_transform_feedback extension is not supported.
+    transformFeedbackPreservesProvokingVertex :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceProvokingVertexFeaturesEXT)
+#endif
+deriving instance Show PhysicalDeviceProvokingVertexFeaturesEXT
+
+instance ToCStruct PhysicalDeviceProvokingVertexFeaturesEXT where
+  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceProvokingVertexFeaturesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (provokingVertexLast))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (transformFeedbackPreservesProvokingVertex))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceProvokingVertexFeaturesEXT where
+  peekCStruct p = do
+    provokingVertexLast <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    transformFeedbackPreservesProvokingVertex <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    pure $ PhysicalDeviceProvokingVertexFeaturesEXT
+             (bool32ToBool provokingVertexLast) (bool32ToBool transformFeedbackPreservesProvokingVertex)
+
+instance Storable PhysicalDeviceProvokingVertexFeaturesEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceProvokingVertexFeaturesEXT where
+  zero = PhysicalDeviceProvokingVertexFeaturesEXT
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceProvokingVertexPropertiesEXT - Structure describing
+-- provoking vertex properties supported by an implementation
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceProvokingVertexPropertiesEXT' 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
+--
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceProvokingVertexPropertiesEXT = PhysicalDeviceProvokingVertexPropertiesEXT
+  { -- | #limits-provokingVertexModePerPipeline# @provokingVertexModePerPipeline@
+    -- indicates whether the implementation supports graphics pipelines with
+    -- different provoking vertex modes within the same renderpass instance.
+    provokingVertexModePerPipeline :: Bool
+  , -- | #limits-transformFeedbackPreservesTriangleFanProvokingVertex#
+    -- @transformFeedbackPreservesTriangleFanProvokingVertex@ indicates whether
+    -- the implementation can preserve the provoking vertex order when writing
+    -- triangle fan vertices to transform feedback.
+    transformFeedbackPreservesTriangleFanProvokingVertex :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceProvokingVertexPropertiesEXT)
+#endif
+deriving instance Show PhysicalDeviceProvokingVertexPropertiesEXT
+
+instance ToCStruct PhysicalDeviceProvokingVertexPropertiesEXT where
+  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceProvokingVertexPropertiesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (provokingVertexModePerPipeline))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (transformFeedbackPreservesTriangleFanProvokingVertex))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceProvokingVertexPropertiesEXT where
+  peekCStruct p = do
+    provokingVertexModePerPipeline <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    transformFeedbackPreservesTriangleFanProvokingVertex <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    pure $ PhysicalDeviceProvokingVertexPropertiesEXT
+             (bool32ToBool provokingVertexModePerPipeline) (bool32ToBool transformFeedbackPreservesTriangleFanProvokingVertex)
+
+instance Storable PhysicalDeviceProvokingVertexPropertiesEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceProvokingVertexPropertiesEXT where
+  zero = PhysicalDeviceProvokingVertexPropertiesEXT
+           zero
+           zero
+
+
+-- | VkPipelineRasterizationProvokingVertexStateCreateInfoEXT - Structure
+-- specifying provoking vertex mode used by a graphics pipeline
+--
+-- = Description
+--
+-- If this struct is not provided when creating the pipeline, the pipeline
+-- will use the 'PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT' mode.
+--
+-- If the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-provokingVertexModePerPipeline provokingVertexModePerPipeline>
+-- limit is 'Vulkan.Core10.FundamentalTypes.FALSE', then the all pipelines
+-- bound within a renderpass instance /must/ have the same
+-- @provokingVertexMode@.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkPipelineRasterizationProvokingVertexStateCreateInfoEXT-provokingVertexMode-04883#
+--     If @provokingVertexMode@ is 'PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT',
+--     then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-provokingVertexLast provokingVertexLast>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPipelineRasterizationProvokingVertexStateCreateInfoEXT-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT'
+--
+-- -   #VUID-VkPipelineRasterizationProvokingVertexStateCreateInfoEXT-provokingVertexMode-parameter#
+--     @provokingVertexMode@ /must/ be a valid 'ProvokingVertexModeEXT'
+--     value
+--
+-- = See Also
+--
+-- 'ProvokingVertexModeEXT',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PipelineRasterizationProvokingVertexStateCreateInfoEXT = PipelineRasterizationProvokingVertexStateCreateInfoEXT
+  { -- | @provokingVertexMode@ is a 'ProvokingVertexModeEXT' value selecting the
+    -- provoking vertex mode.
+    provokingVertexMode :: ProvokingVertexModeEXT }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PipelineRasterizationProvokingVertexStateCreateInfoEXT)
+#endif
+deriving instance Show PipelineRasterizationProvokingVertexStateCreateInfoEXT
+
+instance ToCStruct PipelineRasterizationProvokingVertexStateCreateInfoEXT where
+  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PipelineRasterizationProvokingVertexStateCreateInfoEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr ProvokingVertexModeEXT)) (provokingVertexMode)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr ProvokingVertexModeEXT)) (zero)
+    f
+
+instance FromCStruct PipelineRasterizationProvokingVertexStateCreateInfoEXT where
+  peekCStruct p = do
+    provokingVertexMode <- peek @ProvokingVertexModeEXT ((p `plusPtr` 16 :: Ptr ProvokingVertexModeEXT))
+    pure $ PipelineRasterizationProvokingVertexStateCreateInfoEXT
+             provokingVertexMode
+
+instance Storable PipelineRasterizationProvokingVertexStateCreateInfoEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PipelineRasterizationProvokingVertexStateCreateInfoEXT where
+  zero = PipelineRasterizationProvokingVertexStateCreateInfoEXT
+           zero
+
+
+-- | VkProvokingVertexModeEXT - Specify which vertex in a primitive is the
+-- provoking vertex
+--
+-- = Description
+--
+-- These modes are described more precisely in
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topologies Primitive Topologies>.
+--
+-- = See Also
+--
+-- 'PipelineRasterizationProvokingVertexStateCreateInfoEXT'
+newtype ProvokingVertexModeEXT = ProvokingVertexModeEXT Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+
+-- | 'PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT' specifies that the provoking
+-- vertex is the first non-adjacency vertex in the list of vertices used by
+-- a primitive.
+pattern PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = ProvokingVertexModeEXT 0
+-- | 'PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT' specifies that the provoking
+-- vertex is the last non-adjacency vertex in the list of vertices used by
+-- a primitive.
+pattern PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT  = ProvokingVertexModeEXT 1
+{-# complete PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT,
+             PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT :: ProvokingVertexModeEXT #-}
+
+conNameProvokingVertexModeEXT :: String
+conNameProvokingVertexModeEXT = "ProvokingVertexModeEXT"
+
+enumPrefixProvokingVertexModeEXT :: String
+enumPrefixProvokingVertexModeEXT = "PROVOKING_VERTEX_MODE_"
+
+showTableProvokingVertexModeEXT :: [(ProvokingVertexModeEXT, String)]
+showTableProvokingVertexModeEXT =
+  [ (PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT, "FIRST_VERTEX_EXT")
+  , (PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT , "LAST_VERTEX_EXT")
+  ]
+
+instance Show ProvokingVertexModeEXT where
+  showsPrec = enumShowsPrec enumPrefixProvokingVertexModeEXT
+                            showTableProvokingVertexModeEXT
+                            conNameProvokingVertexModeEXT
+                            (\(ProvokingVertexModeEXT x) -> x)
+                            (showsPrec 11)
+
+instance Read ProvokingVertexModeEXT where
+  readPrec = enumReadPrec enumPrefixProvokingVertexModeEXT
+                          showTableProvokingVertexModeEXT
+                          conNameProvokingVertexModeEXT
+                          ProvokingVertexModeEXT
+
+
+type EXT_PROVOKING_VERTEX_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_EXT_PROVOKING_VERTEX_SPEC_VERSION"
+pattern EXT_PROVOKING_VERTEX_SPEC_VERSION :: forall a . Integral a => a
+pattern EXT_PROVOKING_VERTEX_SPEC_VERSION = 1
+
+
+type EXT_PROVOKING_VERTEX_EXTENSION_NAME = "VK_EXT_provoking_vertex"
+
+-- No documentation found for TopLevel "VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME"
+pattern EXT_PROVOKING_VERTEX_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern EXT_PROVOKING_VERTEX_EXTENSION_NAME = "VK_EXT_provoking_vertex"
+
diff --git a/src/Vulkan/Extensions/VK_EXT_provoking_vertex.hs-boot b/src/Vulkan/Extensions/VK_EXT_provoking_vertex.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_provoking_vertex.hs-boot
@@ -0,0 +1,214 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_provoking_vertex - device extension
+--
+-- == VK_EXT_provoking_vertex
+--
+-- [__Name String__]
+--     @VK_EXT_provoking_vertex@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     255
+--
+-- [__Revision__]
+--     1
+--
+-- [__Extension and Version Dependencies__]
+--
+--     -   Requires Vulkan 1.0
+--
+--     -   Requires @VK_KHR_get_physical_device_properties2@
+--
+-- [__Special Use__]
+--
+--     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse OpenGL \/ ES support>
+--
+-- [__Contact__]
+--
+--     -   Jesse Hall
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_provoking_vertex:%20&body=@jessehall%20 >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2021-02-22
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Alexis Hétu, Google
+--
+--     -   Bill Licea-Kane, Qualcomm
+--
+--     -   Daniel Koch, Nvidia
+--
+--     -   Jamie Madill, Google
+--
+--     -   Jan-Harald Fredriksen, Arm
+--
+--     -   Jason Ekstrand, Intel
+--
+--     -   Jeff Bolz, Nvidia
+--
+--     -   Jeff Leger, Qualcomm
+--
+--     -   Jesse Hall, Google
+--
+--     -   Jörg Wagner, Arm
+--
+--     -   Matthew Netsch, Qualcomm
+--
+--     -   Mike Blumenkrantz, Valve
+--
+--     -   Piers Daniell, Nvidia
+--
+--     -   Tobias Hector, AMD
+--
+-- == Description
+--
+-- This extension allows changing the provoking vertex convention between
+-- Vulkan’s default convention (first vertex) and OpenGL’s convention (last
+-- vertex).
+--
+-- This extension is intended for use by API-translation layers that
+-- implement APIs like OpenGL on top of Vulkan, and need to match the
+-- source API’s provoking vertex convention. Applications using Vulkan
+-- directly should use Vulkan’s default convention.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceProvokingVertexFeaturesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceProvokingVertexPropertiesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo':
+--
+--     -   'PipelineRasterizationProvokingVertexStateCreateInfoEXT'
+--
+-- == New Enums
+--
+-- -   'ProvokingVertexModeEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_PROVOKING_VERTEX_EXTENSION_NAME'
+--
+-- -   'EXT_PROVOKING_VERTEX_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT'
+--
+-- == Issues
+--
+-- 1) At what granularity should this state be set?
+--
+-- __RESOLVED__: At pipeline bind, with an optional per-renderpass
+-- restriction.
+--
+-- The most natural place to put this state is in the graphics pipeline
+-- object. Some implementations require it to be known when creating the
+-- pipeline, and pipeline state is convenient for implementing OpenGL 3.2’s
+-- glProvokingVertex, which can change the state between draw calls.
+-- However, some implementations can only change it approximately
+-- renderpass granularity. To accommodate both, provoking vertex will be
+-- pipeline state, but implementations can require that only one mode is
+-- used within a renderpass instance; the renderpass’s mode is chosen
+-- implicitly when the first pipeline is bound.
+--
+-- 2) Does the provoking vertex mode affect the order that vertices are
+-- written to transform feedback buffers?
+--
+-- __RESOLVED__: Yes, to enable layered implementations of OpenGL and D3D.
+--
+-- All of OpenGL, OpenGL ES, and Direct3D 11 require that vertices are
+-- written to transform feedback buffers such that flat-shaded attributes
+-- have the same value when drawing the contents of the transform feedback
+-- buffer as they did in the original drawing when the transform feedback
+-- buffer was written (assuming the provoking vertex mode hasn’t changed,
+-- in APIs that support more than one mode).
+--
+-- == Version History
+--
+-- -   Revision 1(c), 2021-02-22 (Jesse Hall)
+--
+--     -   Added
+--         VkPhysicalDeviceProvokingVertexPropertiesEXT::transformFeedbackPreservesTriangleFanProvokingVertex
+--         to accommodate implementations that can’t change the transform
+--         feedback vertex order for triangle fans.
+--
+-- -   Revision 1(b), 2020-06-14 (Jesse Hall)
+--
+--     -   Added
+--         VkPhysicalDeviceProvokingVertexFeaturesEXT::transformFeedbackPreservesProvokingVertex
+--         and required that transform feedback write vertices so as to
+--         preserve the provoking vertex of each primitive.
+--
+-- -   Revision 1(a), 2019-10-23 (Jesse Hall)
+--
+--     -   Initial draft, based on a proposal by Alexis Hétu
+--
+-- = See Also
+--
+-- 'PhysicalDeviceProvokingVertexFeaturesEXT',
+-- 'PhysicalDeviceProvokingVertexPropertiesEXT',
+-- 'PipelineRasterizationProvokingVertexStateCreateInfoEXT',
+-- 'ProvokingVertexModeEXT'
+--
+-- = Document Notes
+--
+-- For more information, see the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_provoking_vertex Vulkan Specification>
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_EXT_provoking_vertex  ( PhysicalDeviceProvokingVertexFeaturesEXT
+                                                  , PhysicalDeviceProvokingVertexPropertiesEXT
+                                                  , PipelineRasterizationProvokingVertexStateCreateInfoEXT
+                                                  ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceProvokingVertexFeaturesEXT
+
+instance ToCStruct PhysicalDeviceProvokingVertexFeaturesEXT
+instance Show PhysicalDeviceProvokingVertexFeaturesEXT
+
+instance FromCStruct PhysicalDeviceProvokingVertexFeaturesEXT
+
+
+data PhysicalDeviceProvokingVertexPropertiesEXT
+
+instance ToCStruct PhysicalDeviceProvokingVertexPropertiesEXT
+instance Show PhysicalDeviceProvokingVertexPropertiesEXT
+
+instance FromCStruct PhysicalDeviceProvokingVertexPropertiesEXT
+
+
+data PipelineRasterizationProvokingVertexStateCreateInfoEXT
+
+instance ToCStruct PipelineRasterizationProvokingVertexStateCreateInfoEXT
+instance Show PipelineRasterizationProvokingVertexStateCreateInfoEXT
+
+instance FromCStruct PipelineRasterizationProvokingVertexStateCreateInfoEXT
+
diff --git a/src/Vulkan/Extensions/VK_EXT_robustness2.hs b/src/Vulkan/Extensions/VK_EXT_robustness2.hs
--- a/src/Vulkan/Extensions/VK_EXT_robustness2.hs
+++ b/src/Vulkan/Extensions/VK_EXT_robustness2.hs
@@ -55,7 +55,7 @@
 -- These additional requirements /may/ be expensive on some
 -- implementations, and should only be enabled when truly necessary.
 --
--- This extension also adds support for \"null descriptors\", where
+-- This extension also adds support for “null descriptors”, where
 -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /can/ be used instead of a
 -- valid handle. Accesses to null descriptors have well-defined behavior,
 -- and don’t rely on robustness.
@@ -93,14 +93,14 @@
 --     'PhysicalDeviceRobustness2PropertiesEXT'::@robustStorageBufferAccessSizeAlignment@
 --     exist?
 --
--- RESOLVED: Some implementations can’t efficiently tightly bounds-check
--- all buffer accesses. Rather, the size of the bound range is padded to
--- some power of two multiple, up to 256 bytes for uniform buffers and up
--- to 4 bytes for storage buffers, and that padded size is bounds-checked.
--- This is sufficient to implement D3D-like behavior, because D3D only
--- allows binding whole uniform buffers or ranges that are a multiple of
--- 256 bytes, and D3D raw and structured buffers only support 32-bit
--- accesses.
+-- __RESOLVED__: Some implementations can’t efficiently tightly
+-- bounds-check all buffer accesses. Rather, the size of the bound range is
+-- padded to some power of two multiple, up to 256 bytes for uniform
+-- buffers and up to 4 bytes for storage buffers, and that padded size is
+-- bounds-checked. This is sufficient to implement D3D-like behavior,
+-- because D3D only allows binding whole uniform buffers or ranges that are
+-- a multiple of 256 bytes, and D3D raw and structured buffers only support
+-- 32-bit accesses.
 --
 -- == Examples
 --
@@ -161,11 +161,15 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceRobustness2FeaturesEXT' structure
--- describe the following features:
+-- This structure describes the following features:
 --
 -- = Description
 --
+-- -   @sType@ is the type of this structure.
+--
+-- -   @pNext@ is @NULL@ or a pointer to a structure extending this
+--     structure.
+--
 -- -   #features-robustBufferAccess2# @robustBufferAccess2@ indicates
 --     whether buffer accesses are tightly bounds-checked against the range
 --     of the descriptor. Uniform buffers /must/ be bounds-checked to the
@@ -193,9 +197,14 @@
 --     to nothing.
 --
 -- If the 'PhysicalDeviceRobustness2FeaturesEXT' structure is included in
--- the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether each feature is supported.
+-- 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. 'PhysicalDeviceRobustness2FeaturesEXT' /can/ also be used in
+-- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage
 --
@@ -271,17 +280,15 @@
 -- | VkPhysicalDeviceRobustness2PropertiesEXT - Structure describing robust
 -- buffer access properties supported by an implementation
 --
--- = Members
---
--- The members of the 'PhysicalDeviceRobustness2PropertiesEXT' structure
--- describe the following implementation-dependent limits:
---
 -- = Description
 --
 -- If the 'PhysicalDeviceRobustness2PropertiesEXT' structure is included in
--- the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- 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)
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_robustness2.hs-boot b/src/Vulkan/Extensions/VK_EXT_robustness2.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_robustness2.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_robustness2.hs-boot
@@ -55,7 +55,7 @@
 -- These additional requirements /may/ be expensive on some
 -- implementations, and should only be enabled when truly necessary.
 --
--- This extension also adds support for \"null descriptors\", where
+-- This extension also adds support for “null descriptors”, where
 -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /can/ be used instead of a
 -- valid handle. Accesses to null descriptors have well-defined behavior,
 -- and don’t rely on robustness.
@@ -93,14 +93,14 @@
 --     'PhysicalDeviceRobustness2PropertiesEXT'::@robustStorageBufferAccessSizeAlignment@
 --     exist?
 --
--- RESOLVED: Some implementations can’t efficiently tightly bounds-check
--- all buffer accesses. Rather, the size of the bound range is padded to
--- some power of two multiple, up to 256 bytes for uniform buffers and up
--- to 4 bytes for storage buffers, and that padded size is bounds-checked.
--- This is sufficient to implement D3D-like behavior, because D3D only
--- allows binding whole uniform buffers or ranges that are a multiple of
--- 256 bytes, and D3D raw and structured buffers only support 32-bit
--- accesses.
+-- __RESOLVED__: Some implementations can’t efficiently tightly
+-- bounds-check all buffer accesses. Rather, the size of the bound range is
+-- padded to some power of two multiple, up to 256 bytes for uniform
+-- buffers and up to 4 bytes for storage buffers, and that padded size is
+-- bounds-checked. This is sufficient to implement D3D-like behavior,
+-- because D3D only allows binding whole uniform buffers or ranges that are
+-- a multiple of 256 bytes, and D3D raw and structured buffers only support
+-- 32-bit accesses.
 --
 -- == Examples
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_sample_locations.hs b/src/Vulkan/Extensions/VK_EXT_sample_locations.hs
--- a/src/Vulkan/Extensions/VK_EXT_sample_locations.hs
+++ b/src/Vulkan/Extensions/VK_EXT_sample_locations.hs
@@ -355,7 +355,9 @@
                                              -- @physicalDevice@ /must/ be a valid
                                              -- 'Vulkan.Core10.Handles.PhysicalDevice' handle
                                              PhysicalDevice
-                                          -> -- | @samples@ is the sample count to query the capabilities for.
+                                          -> -- | @samples@ is a
+                                             -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
+                                             -- specifying the sample count to query capabilities for.
                                              --
                                              -- #VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-samples-parameter#
                                              -- @samples@ /must/ be a valid
@@ -384,10 +386,8 @@
 -- The values specified in a 'SampleLocationEXT' structure are always
 -- clamped to the implementation-dependent sample location coordinate range
 -- [@sampleLocationCoordinateRange@[0],@sampleLocationCoordinateRange@[1]]
--- that /can/ be queried by adding a
--- 'PhysicalDeviceSampleLocationsPropertiesEXT' structure to the @pNext@
--- chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'.
+-- that /can/ be queried using
+-- 'PhysicalDeviceSampleLocationsPropertiesEXT'.
 --
 -- = See Also
 --
@@ -846,17 +846,15 @@
 -- | VkPhysicalDeviceSampleLocationsPropertiesEXT - Structure describing
 -- sample location limits that can be supported by an implementation
 --
--- = Members
---
--- The members of the 'PhysicalDeviceSampleLocationsPropertiesEXT'
--- structure describe the following implementation-dependent limits:
---
 -- = Description
 --
 -- If the 'PhysicalDeviceSampleLocationsPropertiesEXT' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- 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)
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_atomic_float.hs b/src/Vulkan/Extensions/VK_EXT_shader_atomic_float.hs
--- a/src/Vulkan/Extensions/VK_EXT_shader_atomic_float.hs
+++ b/src/Vulkan/Extensions/VK_EXT_shader_atomic_float.hs
@@ -132,6 +132,22 @@
 -- | VkPhysicalDeviceShaderAtomicFloatFeaturesEXT - Structure describing
 -- features supported by VK_EXT_shader_atomic_float
 --
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShaderAtomicFloatFeaturesEXT' 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. 'PhysicalDeviceShaderAtomicFloatFeaturesEXT' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
+--
 -- == Valid Usage (Implicit)
 --
 -- = See Also
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_demote_to_helper_invocation.hs b/src/Vulkan/Extensions/VK_EXT_shader_demote_to_helper_invocation.hs
--- a/src/Vulkan/Extensions/VK_EXT_shader_demote_to_helper_invocation.hs
+++ b/src/Vulkan/Extensions/VK_EXT_shader_demote_to_helper_invocation.hs
@@ -50,13 +50,13 @@
 -- This extension adds Vulkan support for the
 -- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_demote_to_helper_invocation.html SPV_EXT_demote_to_helper_invocation>
 -- SPIR-V extension. That SPIR-V extension provides a new instruction
--- @OpDemoteToHelperInvocationEXT@ allowing shaders to \"demote\" a
--- fragment shader invocation to behave like a helper invocation for its
--- duration. The demoted invocation will have no further side effects and
--- will not output to the framebuffer, but remains active and can
--- participate in computing derivatives and in
+-- @OpDemoteToHelperInvocationEXT@ allowing shaders to “demote” a fragment
+-- shader invocation to behave like a helper invocation for its duration.
+-- The demoted invocation will have no further side effects and will not
+-- output to the framebuffer, but remains active and can participate in
+-- computing derivatives and in
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operations group operations>.
--- This is a better match for the \"discard\" instruction in HLSL.
+-- This is a better match for the “discard” instruction in HLSL.
 --
 -- == New Structures
 --
@@ -132,19 +132,20 @@
 --
 -- = Members
 --
--- The members of the
--- 'PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT' structure
--- describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT'
--- structure is included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT' /can/ also be
--- included in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to enable the feature.
+-- 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. 'PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT'
+-- /can/ also be used in the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
+-- features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_demote_to_helper_invocation.hs-boot b/src/Vulkan/Extensions/VK_EXT_shader_demote_to_helper_invocation.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_shader_demote_to_helper_invocation.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_shader_demote_to_helper_invocation.hs-boot
@@ -50,13 +50,13 @@
 -- This extension adds Vulkan support for the
 -- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_demote_to_helper_invocation.html SPV_EXT_demote_to_helper_invocation>
 -- SPIR-V extension. That SPIR-V extension provides a new instruction
--- @OpDemoteToHelperInvocationEXT@ allowing shaders to \"demote\" a
--- fragment shader invocation to behave like a helper invocation for its
--- duration. The demoted invocation will have no further side effects and
--- will not output to the framebuffer, but remains active and can
--- participate in computing derivatives and in
+-- @OpDemoteToHelperInvocationEXT@ allowing shaders to “demote” a fragment
+-- shader invocation to behave like a helper invocation for its duration.
+-- The demoted invocation will have no further side effects and will not
+-- output to the framebuffer, but remains active and can participate in
+-- computing derivatives and in
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operations group operations>.
--- This is a better match for the \"discard\" instruction in HLSL.
+-- This is a better match for the “discard” instruction in HLSL.
 --
 -- == New Structures
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_image_atomic_int64.hs b/src/Vulkan/Extensions/VK_EXT_shader_image_atomic_int64.hs
--- a/src/Vulkan/Extensions/VK_EXT_shader_image_atomic_int64.hs
+++ b/src/Vulkan/Extensions/VK_EXT_shader_image_atomic_int64.hs
@@ -140,6 +140,22 @@
 -- | VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT - Structure describing
 -- features supported by VK_EXT_shader_image_atomic_int64
 --
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the @VkPhysicalDeviceShaderAtomicInt64FeaturesEXT@ 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. @VkPhysicalDeviceShaderAtomicInt64FeaturesEXT@ /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
+--
 -- == Valid Usage (Implicit)
 --
 -- = See Also
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_subgroup_ballot.hs b/src/Vulkan/Extensions/VK_EXT_shader_subgroup_ballot.hs
--- a/src/Vulkan/Extensions/VK_EXT_shader_subgroup_ballot.hs
+++ b/src/Vulkan/Extensions/VK_EXT_shader_subgroup_ballot.hs
@@ -130,7 +130,7 @@
 -- Most of the functionality in this extension is superseded by the core
 -- Vulkan 1.1
 -- <VkPhysicalDeviceSubgroupProperties.html subgroup operations>. However,
--- Vulkan 1.1 required the @OpGroupNonUniformBroadcast@ \"Id\" to be
+-- Vulkan 1.1 required the @OpGroupNonUniformBroadcast@ “Id” to be
 -- constant. This restriction was removed in Vulkan 1.2 with the addition
 -- of the
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subgroupBroadcastDynamicId subgroupBroadcastDynamicId>
diff --git a/src/Vulkan/Extensions/VK_EXT_subgroup_size_control.hs b/src/Vulkan/Extensions/VK_EXT_subgroup_size_control.hs
--- a/src/Vulkan/Extensions/VK_EXT_subgroup_size_control.hs
+++ b/src/Vulkan/Extensions/VK_EXT_subgroup_size_control.hs
@@ -202,18 +202,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceSubgroupSizeControlFeaturesEXT'
--- structure describe the following features:
+-- This structure describes the following features:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceSubgroupSizeControlFeaturesEXT' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceSubgroupSizeControlFeaturesEXT' /can/ also be included in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable
--- the feature.
+-- 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. 'PhysicalDeviceSubgroupSizeControlFeaturesEXT' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- Note
 --
@@ -297,17 +298,15 @@
 -- | VkPhysicalDeviceSubgroupSizeControlPropertiesEXT - Structure describing
 -- the control subgroup size properties of an implementation
 --
--- = Members
---
--- The members of the 'PhysicalDeviceSubgroupSizeControlPropertiesEXT'
--- structure describe the following properties:
---
 -- = Description
 --
 -- If the 'PhysicalDeviceSubgroupSizeControlPropertiesEXT' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- 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.
 --
 -- If
 -- 'Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup.PhysicalDeviceSubgroupProperties'::@supportedOperations@
diff --git a/src/Vulkan/Extensions/VK_EXT_texel_buffer_alignment.hs b/src/Vulkan/Extensions/VK_EXT_texel_buffer_alignment.hs
--- a/src/Vulkan/Extensions/VK_EXT_texel_buffer_alignment.hs
+++ b/src/Vulkan/Extensions/VK_EXT_texel_buffer_alignment.hs
@@ -128,18 +128,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceTexelBufferAlignmentFeaturesEXT'
--- structure describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceTexelBufferAlignmentFeaturesEXT' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceTexelBufferAlignmentFeaturesEXT' /can/ also be included
--- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- enable the feature.
+-- 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. 'PhysicalDeviceTexelBufferAlignmentFeaturesEXT' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
@@ -194,17 +195,15 @@
 -- | VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT - Structure describing
 -- the texel buffer alignment requirements supported by an implementation
 --
--- = Members
---
--- The members of the 'PhysicalDeviceTexelBufferAlignmentPropertiesEXT'
--- structure describe the following implementation-dependent limits:
---
 -- = Description
 --
 -- If the 'PhysicalDeviceTexelBufferAlignmentPropertiesEXT' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- 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.
 --
 -- If the single texel alignment property is
 -- 'Vulkan.Core10.FundamentalTypes.FALSE', then the buffer view’s offset
diff --git a/src/Vulkan/Extensions/VK_EXT_texture_compression_astc_hdr.hs b/src/Vulkan/Extensions/VK_EXT_texture_compression_astc_hdr.hs
--- a/src/Vulkan/Extensions/VK_EXT_texture_compression_astc_hdr.hs
+++ b/src/Vulkan/Extensions/VK_EXT_texture_compression_astc_hdr.hs
@@ -174,18 +174,20 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT'
--- structure describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether each feature is supported.
--- 'PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT' /can/ also be
--- included in the @pNext@ chain of 'Vulkan.Core10.Device.createDevice' to
--- enable features.
+-- 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. 'PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT' /can/
+-- also be used in the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
+-- features.
 --
 -- == Valid Usage (Implicit)
 --
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
@@ -452,12 +452,13 @@
                                       ("buffers" ::: Vector Buffer)
                                    -> -- | @pOffsets@ is a pointer to an array of buffer offsets.
                                       ("offsets" ::: Vector DeviceSize)
-                                   -> -- | @pSizes@ is an optional array of buffer sizes, specifying the maximum
-                                      -- number of bytes to capture to the corresponding transform feedback
-                                      -- buffer. If @pSizes@ is @NULL@, or the value of the @pSizes@ array
-                                      -- element is 'Vulkan.Core10.APIConstants.WHOLE_SIZE', then the maximum
-                                      -- bytes captured will be the size of the corresponding buffer minus the
-                                      -- buffer offset.
+                                   -> -- | @pSizes@ is @NULL@ or a pointer to an array of
+                                      -- 'Vulkan.Core10.FundamentalTypes.DeviceSize' buffer sizes, specifying the
+                                      -- maximum number of bytes to capture to the corresponding transform
+                                      -- feedback buffer. If @pSizes@ is @NULL@, or the value of the @pSizes@
+                                      -- array element is 'Vulkan.Core10.APIConstants.WHOLE_SIZE', then the
+                                      -- maximum number of bytes captured will be the size of the corresponding
+                                      -- buffer minus the buffer offset.
                                       ("sizes" ::: Vector DeviceSize)
                                    -> io ()
 cmdBindTransformFeedbackBuffersEXT commandBuffer firstBinding buffers offsets sizes = liftIO . evalContT $ do
@@ -608,26 +609,28 @@
                              -> -- | @firstCounterBuffer@ is the index of the first transform feedback buffer
                                 -- corresponding to @pCounterBuffers@[0] and @pCounterBufferOffsets@[0].
                                 ("firstCounterBuffer" ::: Word32)
-                             -> -- | @pCounterBuffers@ is an optional array of buffer handles to the counter
-                                -- buffers which contain a 4 byte integer value representing the byte
-                                -- offset from the start of the corresponding transform feedback buffer
-                                -- from where to start capturing vertex data. If the byte offset stored to
-                                -- the counter buffer location was done using 'cmdEndTransformFeedbackEXT'
-                                -- it can be used to resume transform feedback from the previous location.
-                                -- If @pCounterBuffers@ is @NULL@, then transform feedback will start
+                             -> -- | @pCounterBuffers@ is @NULL@ or a pointer to an array of
+                                -- 'Vulkan.Core10.Handles.Buffer' handles to counter buffers. Each buffer
+                                -- contains a 4 byte integer value representing the byte offset from the
+                                -- start of the corresponding transform feedback buffer from where to start
+                                -- capturing vertex data. If the byte offset stored to the counter buffer
+                                -- location was done using 'cmdEndTransformFeedbackEXT' it can be used to
+                                -- resume transform feedback from the previous location. If
+                                -- @pCounterBuffers@ is @NULL@, then transform feedback will start
                                 -- capturing vertex data to byte offset zero in all bound transform
                                 -- feedback buffers. For each element of @pCounterBuffers@ that is
                                 -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', transform feedback will start
                                 -- capturing vertex data to byte zero in the corresponding bound transform
                                 -- feedback buffer.
                                 ("counterBuffers" ::: Vector Buffer)
-                             -> -- | @pCounterBufferOffsets@ is an optional array of offsets within each of
-                                -- the @pCounterBuffers@ where the counter values were previously written.
-                                -- The location in each counter buffer at these offsets /must/ be large
-                                -- enough to contain 4 bytes of data. This data is the number of bytes
-                                -- captured by the previous transform feedback to this buffer. If
-                                -- @pCounterBufferOffsets@ is @NULL@, then it is assumed the offsets are
-                                -- zero.
+                             -> -- | @pCounterBufferOffsets@ is @NULL@ or a pointer to an array of
+                                -- 'Vulkan.Core10.FundamentalTypes.DeviceSize' values specifying offsets
+                                -- within each of the @pCounterBuffers@ where the counter values were
+                                -- previously written. The location in each counter buffer at these offsets
+                                -- /must/ be large enough to contain 4 bytes of data. This data is the
+                                -- number of bytes captured by the previous transform feedback to this
+                                -- buffer. If @pCounterBufferOffsets@ is @NULL@, then it is assumed the
+                                -- offsets are zero.
                                 ("counterBufferOffsets" ::: Vector DeviceSize)
                              -> io ()
 cmdBeginTransformFeedbackEXT commandBuffer firstCounterBuffer counterBuffers counterBufferOffsets = liftIO . evalContT $ do
@@ -768,21 +771,24 @@
                            -> -- | @firstCounterBuffer@ is the index of the first transform feedback buffer
                               -- corresponding to @pCounterBuffers@[0] and @pCounterBufferOffsets@[0].
                               ("firstCounterBuffer" ::: Word32)
-                           -> -- | @pCounterBuffers@ is an optional array of buffer handles to the counter
-                              -- buffers used to record the current byte positions of each transform
+                           -> -- | @pCounterBuffers@ is @NULL@ or a pointer to an array of
+                              -- 'Vulkan.Core10.Handles.Buffer' handles to counter buffers. The counter
+                              -- buffers are used to record the current byte positions of each transform
                               -- feedback buffer where the next vertex output data would be captured.
                               -- This /can/ be used by a subsequent 'cmdBeginTransformFeedbackEXT' call
                               -- to resume transform feedback capture from this position. It can also be
                               -- used by 'cmdDrawIndirectByteCountEXT' to determine the vertex count of
                               -- the draw call.
                               ("counterBuffers" ::: Vector Buffer)
-                           -> -- | @pCounterBufferOffsets@ is an optional array of offsets within each of
-                              -- the @pCounterBuffers@ where the counter values can be written. The
-                              -- location in each counter buffer at these offsets /must/ be large enough
-                              -- to contain 4 bytes of data. The data stored at this location is the byte
-                              -- offset from the start of the transform feedback buffer binding where the
-                              -- next vertex data would be written. If @pCounterBufferOffsets@ is @NULL@,
-                              -- then it is assumed the offsets are zero.
+                           -> -- | @pCounterBufferOffsets@ is @NULL@ or a pointer to an array of
+                              -- 'Vulkan.Core10.FundamentalTypes.DeviceSize' values specifying offsets
+                              -- within each of the @pCounterBuffers@ where the counter values can be
+                              -- written. The location in each counter buffer at these offsets /must/ be
+                              -- large enough to contain 4 bytes of data. The data stored at this
+                              -- location is the byte offset from the start of the transform feedback
+                              -- buffer binding where the next vertex data would be written. If
+                              -- @pCounterBufferOffsets@ is @NULL@, then it is assumed the offsets are
+                              -- zero.
                               ("counterBufferOffsets" ::: Vector DeviceSize)
                            -> io ()
 cmdEndTransformFeedbackEXT commandBuffer firstCounterBuffer counterBuffers counterBufferOffsets = liftIO . evalContT $ do
@@ -1159,8 +1165,9 @@
   "dynamic" mkVkCmdDrawIndirectByteCountEXT
   :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()
 
--- | vkCmdDrawIndirectByteCountEXT - Draw primitives where the vertex count
--- is derived from the counter byte value in the counter buffer
+-- | vkCmdDrawIndirectByteCountEXT - Draw primitives with indirect parameters
+-- where the vertex count is derived from the counter byte value in the
+-- counter buffer
 --
 -- = Description
 --
@@ -1279,9 +1286,9 @@
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02701# If the
 --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
 --     point used by this command requires any dynamic state, that state
---     /must/ have been set for @commandBuffer@, and done so after any
---     previously bound pipeline with the corresponding state not specified
---     as dynamic
+--     /must/ have been set or inherited for @commandBuffer@, and done so
+--     after any previously bound pipeline with the corresponding state not
+--     specified as dynamic
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-02859# There /must/ not
 --     have been any calls to dynamic state setting commands for any state
@@ -1451,7 +1458,7 @@
 --     dynamic state enabled, then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
@@ -1465,7 +1472,7 @@
 --     dynamic state enabled, then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @scissorCount@ parameter of
+--     drawing command, and the @scissorCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
@@ -1481,7 +1488,7 @@
 --     and
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ match the @scissorCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
@@ -1564,7 +1571,7 @@
 --     dynamic state enabled then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @primitiveTopology@ parameter of
+--     drawing command, and the @primitiveTopology@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
 --     /must/ be of the same
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
@@ -1572,6 +1579,47 @@
 --     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
 --     state
 --
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-04875# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-04876# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-04877# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-logicOp-04878# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command and the @logicOp@ /must/ be a valid
+--     'Vulkan.Core10.Enums.LogicOp.LogicOp' value
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-04879# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-primitiveFragmentShadingRateWithMultipleViewports-04552#
 --     If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
@@ -1583,7 +1631,7 @@
 --     then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ be @1@
 --
@@ -1605,6 +1653,16 @@
 --     /must/ be the same as the current subpass color and\/or
 --     depth\/stencil attachments
 --
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-pStrides-04884# If the bound
+--     graphics pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @pStrides@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
+--     /must/ not be @NULL@
+--
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-04007# All vertex input
 --     bindings accessed via vertex input variables declared in the vertex
 --     shader entry point’s interface /must/ have either valid or
@@ -1735,18 +1793,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceTransformFeedbackFeaturesEXT'
--- structure describe the following features:
+-- This structure describes the following features:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceTransformFeedbackFeaturesEXT' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether each feature is supported.
--- 'PhysicalDeviceTransformFeedbackFeaturesEXT' /can/ also be included in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable
--- features.
+-- 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. 'PhysicalDeviceTransformFeedbackFeaturesEXT' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
@@ -1808,17 +1867,15 @@
 -- | VkPhysicalDeviceTransformFeedbackPropertiesEXT - Structure describing
 -- transform feedback properties that can be supported by an implementation
 --
--- = Members
---
--- The members of the 'PhysicalDeviceTransformFeedbackPropertiesEXT'
--- structure describe the following implementation-dependent limits:
---
 -- = Description
 --
 -- If the 'PhysicalDeviceTransformFeedbackPropertiesEXT' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits and properties.
+-- 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)
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_validation_cache.hs b/src/Vulkan/Extensions/VK_EXT_validation_cache.hs
--- a/src/Vulkan/Extensions/VK_EXT_validation_cache.hs
+++ b/src/Vulkan/Extensions/VK_EXT_validation_cache.hs
@@ -420,15 +420,16 @@
 -- @pDataSize@. Otherwise, @pDataSize@ /must/ point to a variable set by
 -- the user to the size of the buffer, in bytes, pointed to by @pData@, and
 -- on return the variable is overwritten with the amount of data actually
--- written to @pData@.
+-- written to @pData@. If @pDataSize@ is less than the maximum size that
+-- /can/ be retrieved by the validation cache, at most @pDataSize@ bytes
+-- will be written to @pData@, and 'getValidationCacheDataEXT' will return
+-- 'Vulkan.Core10.Enums.Result.INCOMPLETE' instead of
+-- 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate that not all of the
+-- validation cache was returned.
 --
--- If @pDataSize@ is less than the maximum size that /can/ be retrieved by
--- the validation cache, at most @pDataSize@ bytes will be written to
--- @pData@, and 'getValidationCacheDataEXT' will return
--- 'Vulkan.Core10.Enums.Result.INCOMPLETE'. Any data written to @pData@ is
--- valid and /can/ be provided as the @pInitialData@ member of the
--- 'ValidationCacheCreateInfoEXT' structure passed to
--- 'createValidationCacheEXT'.
+-- Any data written to @pData@ is valid and /can/ be provided as the
+-- @pInitialData@ member of the 'ValidationCacheCreateInfoEXT' structure
+-- passed to 'createValidationCacheEXT'.
 --
 -- Two calls to 'getValidationCacheDataEXT' with the same parameters /must/
 -- retrieve the same data unless a command that modifies the contents of
diff --git a/src/Vulkan/Extensions/VK_EXT_vertex_attribute_divisor.hs b/src/Vulkan/Extensions/VK_EXT_vertex_attribute_divisor.hs
--- a/src/Vulkan/Extensions/VK_EXT_vertex_attribute_divisor.hs
+++ b/src/Vulkan/Extensions/VK_EXT_vertex_attribute_divisor.hs
@@ -356,17 +356,15 @@
 -- describing max value of vertex attribute divisor that can be supported
 -- by an implementation
 --
--- = Members
---
--- The members of the 'PhysicalDeviceVertexAttributeDivisorPropertiesEXT'
--- structure describe the following implementation-dependent limits:
---
 -- = Description
 --
 -- If the 'PhysicalDeviceVertexAttributeDivisorPropertiesEXT' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- 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)
 --
@@ -419,15 +417,21 @@
 -- | VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT - Structure describing
 -- if fetching of vertex attribute may be repeated for instanced rendering
 --
+-- = Members
+--
+-- This structure describes the following features:
+--
 -- = Description
 --
 -- If the 'PhysicalDeviceVertexAttributeDivisorFeaturesEXT' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating the implementation-dependent
--- behavior. 'PhysicalDeviceVertexAttributeDivisorFeaturesEXT' /can/ also
--- be included in @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to enable the feature.
+-- 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. 'PhysicalDeviceVertexAttributeDivisorFeaturesEXT' /can/ also
+-- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
+-- to selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_vertex_input_dynamic_state.hs b/src/Vulkan/Extensions/VK_EXT_vertex_input_dynamic_state.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_vertex_input_dynamic_state.hs
@@ -0,0 +1,601 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_vertex_input_dynamic_state - device extension
+--
+-- == VK_EXT_vertex_input_dynamic_state
+--
+-- [__Name String__]
+--     @VK_EXT_vertex_input_dynamic_state@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     353
+--
+-- [__Revision__]
+--     2
+--
+-- [__Extension and Version Dependencies__]
+--
+--     -   Requires Vulkan 1.0
+--
+--     -   Requires @VK_KHR_get_physical_device_properties2@
+--
+-- [__Contact__]
+--
+--     -   Piers Daniell
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_vertex_input_dynamic_state:%20&body=@pdaniell-nv%20 >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2020-08-21
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Jeff Bolz, NVIDIA
+--
+--     -   Spencer Fricke, Samsung
+--
+--     -   Stu Smith, AMD
+--
+-- == Description
+--
+-- One of the states that contributes to the combinatorial explosion of
+-- pipeline state objects that need to be created, is the vertex input
+-- binding and attribute descriptions. By allowing them to be dynamic
+-- applications may reduce the number of pipeline objects they need to
+-- create.
+--
+-- This extension adds dynamic state support for what is normally static
+-- state in 'Vulkan.Core10.Pipeline.PipelineVertexInputStateCreateInfo'.
+--
+-- == New Commands
+--
+-- -   'cmdSetVertexInputEXT'
+--
+-- == New Structures
+--
+-- -   'VertexInputAttributeDescription2EXT'
+--
+-- -   'VertexInputBindingDescription2EXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceVertexInputDynamicStateFeaturesEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME'
+--
+-- -   'EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':
+--
+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT'
+--
+-- == Version History
+--
+-- -   Revision 2, 2020-11-05 (Piers Daniell)
+--
+--     -   Make 'VertexInputBindingDescription2EXT' extensible
+--
+--     -   Add new 'VertexInputAttributeDescription2EXT' struct for the
+--         @pVertexAttributeDescriptions@ parameter to
+--         'cmdSetVertexInputEXT' so it is also extensible
+--
+-- -   Revision 1, 2020-08-21 (Piers Daniell)
+--
+--     -   Internal revisions
+--
+-- = See Also
+--
+-- 'PhysicalDeviceVertexInputDynamicStateFeaturesEXT',
+-- 'VertexInputAttributeDescription2EXT',
+-- 'VertexInputBindingDescription2EXT', 'cmdSetVertexInputEXT'
+--
+-- = Document Notes
+--
+-- For more information, see the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_vertex_input_dynamic_state Vulkan Specification>
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state  ( cmdSetVertexInputEXT
+                                                            , PhysicalDeviceVertexInputDynamicStateFeaturesEXT(..)
+                                                            , VertexInputBindingDescription2EXT(..)
+                                                            , VertexInputAttributeDescription2EXT(..)
+                                                            , EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION
+                                                            , pattern EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION
+                                                            , EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME
+                                                            , pattern EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME
+                                                            ) where
+
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Foreign.Marshal.Alloc (allocaBytesAligned)
+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_T)
+import Vulkan.Dynamic (DeviceCmds(pVkCmdSetVertexInputEXT))
+import Vulkan.Core10.Enums.Format (Format)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.VertexInputRate (VertexInputRate)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetVertexInputEXT
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr VertexInputBindingDescription2EXT -> Word32 -> Ptr VertexInputAttributeDescription2EXT -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr VertexInputBindingDescription2EXT -> Word32 -> Ptr VertexInputAttributeDescription2EXT -> IO ()
+
+-- | vkCmdSetVertexInputEXT - Set the dynamic vertex input state
+--
+-- = Description
+--
+-- This command sets the vertex input attribute and vertex input binding
+-- descriptions state for subsequent drawing commands.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetVertexInputEXT-None-04790# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexInputDynamicState vertexInputDynamicState>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdSetVertexInputEXT-vertexBindingDescriptionCount-04791#
+--     @vertexBindingDescriptionCount@ /must/ be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@
+--
+-- -   #VUID-vkCmdSetVertexInputEXT-vertexAttributeDescriptionCount-04792#
+--     @vertexAttributeDescriptionCount@ /must/ be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputAttributes@
+--
+-- -   #VUID-vkCmdSetVertexInputEXT-binding-04793# For every @binding@
+--     specified by each element of @pVertexAttributeDescriptions@, a
+--     'VertexInputBindingDescription2EXT' /must/ exist in
+--     @pVertexBindingDescriptions@ with the same value of @binding@
+--
+-- -   #VUID-vkCmdSetVertexInputEXT-pVertexBindingDescriptions-04794# All
+--     elements of @pVertexBindingDescriptions@ /must/ describe distinct
+--     binding numbers
+--
+-- -   #VUID-vkCmdSetVertexInputEXT-pVertexAttributeDescriptions-04795# All
+--     elements of @pVertexAttributeDescriptions@ /must/ describe distinct
+--     attribute locations
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetVertexInputEXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetVertexInputEXT-pVertexBindingDescriptions-parameter#
+--     If @vertexBindingDescriptionCount@ is not @0@,
+--     @pVertexBindingDescriptions@ /must/ be a valid pointer to an array
+--     of @vertexBindingDescriptionCount@ valid
+--     'VertexInputBindingDescription2EXT' structures
+--
+-- -   #VUID-vkCmdSetVertexInputEXT-pVertexAttributeDescriptions-parameter#
+--     If @vertexAttributeDescriptionCount@ is not @0@,
+--     @pVertexAttributeDescriptions@ /must/ be a valid pointer to an array
+--     of @vertexAttributeDescriptionCount@ valid
+--     'VertexInputAttributeDescription2EXT' structures
+--
+-- -   #VUID-vkCmdSetVertexInputEXT-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-vkCmdSetVertexInputEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == 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#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |                                                                                                                                     |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'VertexInputAttributeDescription2EXT',
+-- 'VertexInputBindingDescription2EXT'
+cmdSetVertexInputEXT :: forall io
+                      . (MonadIO io)
+                     => -- | @commandBuffer@ is the command buffer into which the command will be
+                        -- recorded.
+                        CommandBuffer
+                     -> -- | @pVertexBindingDescriptions@ is a pointer to an array of
+                        -- 'VertexInputBindingDescription2EXT' structures.
+                        ("vertexBindingDescriptions" ::: Vector VertexInputBindingDescription2EXT)
+                     -> -- | @pVertexAttributeDescriptions@ is a pointer to an array of
+                        -- 'VertexInputAttributeDescription2EXT' structures.
+                        ("vertexAttributeDescriptions" ::: Vector VertexInputAttributeDescription2EXT)
+                     -> io ()
+cmdSetVertexInputEXT commandBuffer vertexBindingDescriptions vertexAttributeDescriptions = liftIO . evalContT $ do
+  let vkCmdSetVertexInputEXTPtr = pVkCmdSetVertexInputEXT (deviceCmds (commandBuffer :: CommandBuffer))
+  lift $ unless (vkCmdSetVertexInputEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetVertexInputEXT is null" Nothing Nothing
+  let vkCmdSetVertexInputEXT' = mkVkCmdSetVertexInputEXT vkCmdSetVertexInputEXTPtr
+  pPVertexBindingDescriptions <- ContT $ allocaBytesAligned @VertexInputBindingDescription2EXT ((Data.Vector.length (vertexBindingDescriptions)) * 32) 8
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPVertexBindingDescriptions `plusPtr` (32 * (i)) :: Ptr VertexInputBindingDescription2EXT) (e)) (vertexBindingDescriptions)
+  pPVertexAttributeDescriptions <- ContT $ allocaBytesAligned @VertexInputAttributeDescription2EXT ((Data.Vector.length (vertexAttributeDescriptions)) * 32) 8
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPVertexAttributeDescriptions `plusPtr` (32 * (i)) :: Ptr VertexInputAttributeDescription2EXT) (e)) (vertexAttributeDescriptions)
+  lift $ traceAroundEvent "vkCmdSetVertexInputEXT" (vkCmdSetVertexInputEXT' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (vertexBindingDescriptions)) :: Word32)) (pPVertexBindingDescriptions) ((fromIntegral (Data.Vector.length $ (vertexAttributeDescriptions)) :: Word32)) (pPVertexAttributeDescriptions))
+  pure $ ()
+
+
+-- | VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT - Structure
+-- describing whether the dynamic vertex input state can be used
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceVertexInputDynamicStateFeaturesEXT' 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. 'PhysicalDeviceVertexInputDynamicStateFeaturesEXT' /can/ also
+-- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
+-- to selectively enable these features.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceVertexInputDynamicStateFeaturesEXT = PhysicalDeviceVertexInputDynamicStateFeaturesEXT
+  { -- | #features-vertexInputDynamicState# @vertexInputDynamicState@ indicates
+    -- that the implementation supports the following dynamic states:
+    --
+    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+    vertexInputDynamicState :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceVertexInputDynamicStateFeaturesEXT)
+#endif
+deriving instance Show PhysicalDeviceVertexInputDynamicStateFeaturesEXT
+
+instance ToCStruct PhysicalDeviceVertexInputDynamicStateFeaturesEXT where
+  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceVertexInputDynamicStateFeaturesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (vertexInputDynamicState))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceVertexInputDynamicStateFeaturesEXT where
+  peekCStruct p = do
+    vertexInputDynamicState <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceVertexInputDynamicStateFeaturesEXT
+             (bool32ToBool vertexInputDynamicState)
+
+instance Storable PhysicalDeviceVertexInputDynamicStateFeaturesEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceVertexInputDynamicStateFeaturesEXT where
+  zero = PhysicalDeviceVertexInputDynamicStateFeaturesEXT
+           zero
+
+
+-- | VkVertexInputBindingDescription2EXT - Structure specifying the extended
+-- vertex input binding description
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkVertexInputBindingDescription2EXT-binding-04796# @binding@
+--     /must/ be less than
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@
+--
+-- -   #VUID-VkVertexInputBindingDescription2EXT-stride-04797# @stride@
+--     /must/ be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindingStride@
+--
+-- -   #VUID-VkVertexInputBindingDescription2EXT-divisor-04798# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeInstanceRateZeroDivisor vertexAttributeInstanceRateZeroDivisor>
+--     feature is not enabled, @divisor@ /must/ not be @0@
+--
+-- -   #VUID-VkVertexInputBindingDescription2EXT-divisor-04799# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeInstanceRateDivisor vertexAttributeInstanceRateDivisor>
+--     feature is not enabled, @divisor@ /must/ be @1@
+--
+-- -   #VUID-VkVertexInputBindingDescription2EXT-divisor-04800# @divisor@
+--     /must/ be a value between @0@ and
+--     'Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorPropertiesEXT'::@maxVertexAttribDivisor@,
+--     inclusive
+--
+-- -   #VUID-VkVertexInputBindingDescription2EXT-divisor-04801# If
+--     @divisor@ is not @1@ then @inputRate@ /must/ be of type
+--     'Vulkan.Core10.Enums.VertexInputRate.VERTEX_INPUT_RATE_INSTANCE'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkVertexInputBindingDescription2EXT-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT'
+--
+-- -   #VUID-VkVertexInputBindingDescription2EXT-inputRate-parameter#
+--     @inputRate@ /must/ be a valid
+--     'Vulkan.Core10.Enums.VertexInputRate.VertexInputRate' value
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'Vulkan.Core10.Enums.VertexInputRate.VertexInputRate',
+-- 'cmdSetVertexInputEXT'
+data VertexInputBindingDescription2EXT = VertexInputBindingDescription2EXT
+  { -- | @binding@ is the binding number that this structure describes.
+    binding :: Word32
+  , -- | @stride@ is the distance in bytes between two consecutive elements
+    -- within the buffer.
+    stride :: Word32
+  , -- | @inputRate@ is a 'Vulkan.Core10.Enums.VertexInputRate.VertexInputRate'
+    -- value specifying whether vertex attribute addressing is a function of
+    -- the vertex index or of the instance index.
+    inputRate :: VertexInputRate
+  , -- | @divisor@ is the number of successive instances that will use the same
+    -- value of the vertex attribute when instanced rendering is enabled. This
+    -- member /can/ be set to a value other than @1@ if the
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeInstanceRateDivisor vertexAttributeInstanceRateDivisor>
+    -- feature is enabled. For example, if the divisor is N, the same vertex
+    -- attribute will be applied to N successive instances before moving on to
+    -- the next vertex attribute. The maximum value of divisor is
+    -- implementation dependent and can be queried using
+    -- 'Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorPropertiesEXT'::@maxVertexAttribDivisor@.
+    -- A value of @0@ /can/ be used for the divisor if the
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeInstanceRateZeroDivisor vertexAttributeInstanceRateZeroDivisor>
+    -- feature is enabled. In this case, the same vertex attribute will be
+    -- applied to all instances.
+    divisor :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (VertexInputBindingDescription2EXT)
+#endif
+deriving instance Show VertexInputBindingDescription2EXT
+
+instance ToCStruct VertexInputBindingDescription2EXT where
+  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p VertexInputBindingDescription2EXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (binding)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (stride)
+    poke ((p `plusPtr` 24 :: Ptr VertexInputRate)) (inputRate)
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (divisor)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr VertexInputRate)) (zero)
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct VertexInputBindingDescription2EXT where
+  peekCStruct p = do
+    binding <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    stride <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    inputRate <- peek @VertexInputRate ((p `plusPtr` 24 :: Ptr VertexInputRate))
+    divisor <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
+    pure $ VertexInputBindingDescription2EXT
+             binding stride inputRate divisor
+
+instance Storable VertexInputBindingDescription2EXT where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero VertexInputBindingDescription2EXT where
+  zero = VertexInputBindingDescription2EXT
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkVertexInputAttributeDescription2EXT - Structure specifying the
+-- extended vertex input attribute description
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkVertexInputAttributeDescription2EXT-location-04802#
+--     @location@ /must/ be less than
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputAttributes@
+--
+-- -   #VUID-VkVertexInputAttributeDescription2EXT-binding-04803# @binding@
+--     /must/ be less than
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@
+--
+-- -   #VUID-VkVertexInputAttributeDescription2EXT-offset-04804# @offset@
+--     /must/ be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputAttributeOffset@
+--
+-- -   #VUID-VkVertexInputAttributeDescription2EXT-format-04805# @format@
+--     /must/ be allowed as a vertex buffer format, as specified by the
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_VERTEX_BUFFER_BIT'
+--     flag in
+--     'Vulkan.Core10.DeviceInitialization.FormatProperties'::@bufferFeatures@
+--     returned by
+--     'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFormatProperties'
+--
+-- -   #VUID-VkVertexInputAttributeDescription2EXT-vertexAttributeAccessBeyondStride-04806#
+--     If the @VK_KHR_portability_subset@ extension is enabled, and
+--     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR'::@vertexAttributeAccessBeyondStride@
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', the sum of @offset@ plus
+--     the size of the vertex attribute data described by @format@ /must/
+--     not be greater than @stride@ in the
+--     'VertexInputBindingDescription2EXT' referenced in @binding@.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkVertexInputAttributeDescription2EXT-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT'
+--
+-- -   #VUID-VkVertexInputAttributeDescription2EXT-format-parameter#
+--     @format@ /must/ be a valid 'Vulkan.Core10.Enums.Format.Format' value
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.Enums.Format.Format',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdSetVertexInputEXT'
+data VertexInputAttributeDescription2EXT = VertexInputAttributeDescription2EXT
+  { -- | @location@ is the shader input location number for this attribute.
+    location :: Word32
+  , -- | @binding@ is the binding number which this attribute takes its data
+    -- from.
+    binding :: Word32
+  , -- | @format@ is the size and type of the vertex attribute data.
+    format :: Format
+  , -- | @offset@ is a byte offset of this attribute relative to the start of an
+    -- element in the vertex input binding.
+    offset :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (VertexInputAttributeDescription2EXT)
+#endif
+deriving instance Show VertexInputAttributeDescription2EXT
+
+instance ToCStruct VertexInputAttributeDescription2EXT where
+  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p VertexInputAttributeDescription2EXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (location)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (binding)
+    poke ((p `plusPtr` 24 :: Ptr Format)) (format)
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (offset)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Format)) (zero)
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct VertexInputAttributeDescription2EXT where
+  peekCStruct p = do
+    location <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    binding <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    format <- peek @Format ((p `plusPtr` 24 :: Ptr Format))
+    offset <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
+    pure $ VertexInputAttributeDescription2EXT
+             location binding format offset
+
+instance Storable VertexInputAttributeDescription2EXT where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero VertexInputAttributeDescription2EXT where
+  zero = VertexInputAttributeDescription2EXT
+           zero
+           zero
+           zero
+           zero
+
+
+type EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION = 2
+
+-- No documentation found for TopLevel "VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION"
+pattern EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION :: forall a . Integral a => a
+pattern EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION = 2
+
+
+type EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_vertex_input_dynamic_state"
+
+-- No documentation found for TopLevel "VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME"
+pattern EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_vertex_input_dynamic_state"
+
diff --git a/src/Vulkan/Extensions/VK_EXT_vertex_input_dynamic_state.hs-boot b/src/Vulkan/Extensions/VK_EXT_vertex_input_dynamic_state.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_vertex_input_dynamic_state.hs-boot
@@ -0,0 +1,150 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_vertex_input_dynamic_state - device extension
+--
+-- == VK_EXT_vertex_input_dynamic_state
+--
+-- [__Name String__]
+--     @VK_EXT_vertex_input_dynamic_state@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     353
+--
+-- [__Revision__]
+--     2
+--
+-- [__Extension and Version Dependencies__]
+--
+--     -   Requires Vulkan 1.0
+--
+--     -   Requires @VK_KHR_get_physical_device_properties2@
+--
+-- [__Contact__]
+--
+--     -   Piers Daniell
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_vertex_input_dynamic_state:%20&body=@pdaniell-nv%20 >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2020-08-21
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Jeff Bolz, NVIDIA
+--
+--     -   Spencer Fricke, Samsung
+--
+--     -   Stu Smith, AMD
+--
+-- == Description
+--
+-- One of the states that contributes to the combinatorial explosion of
+-- pipeline state objects that need to be created, is the vertex input
+-- binding and attribute descriptions. By allowing them to be dynamic
+-- applications may reduce the number of pipeline objects they need to
+-- create.
+--
+-- This extension adds dynamic state support for what is normally static
+-- state in 'Vulkan.Core10.Pipeline.PipelineVertexInputStateCreateInfo'.
+--
+-- == New Commands
+--
+-- -   'cmdSetVertexInputEXT'
+--
+-- == New Structures
+--
+-- -   'VertexInputAttributeDescription2EXT'
+--
+-- -   'VertexInputBindingDescription2EXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceVertexInputDynamicStateFeaturesEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME'
+--
+-- -   'EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':
+--
+--     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT'
+--
+-- == Version History
+--
+-- -   Revision 2, 2020-11-05 (Piers Daniell)
+--
+--     -   Make 'VertexInputBindingDescription2EXT' extensible
+--
+--     -   Add new 'VertexInputAttributeDescription2EXT' struct for the
+--         @pVertexAttributeDescriptions@ parameter to
+--         'cmdSetVertexInputEXT' so it is also extensible
+--
+-- -   Revision 1, 2020-08-21 (Piers Daniell)
+--
+--     -   Internal revisions
+--
+-- = See Also
+--
+-- 'PhysicalDeviceVertexInputDynamicStateFeaturesEXT',
+-- 'VertexInputAttributeDescription2EXT',
+-- 'VertexInputBindingDescription2EXT', 'cmdSetVertexInputEXT'
+--
+-- = Document Notes
+--
+-- For more information, see the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_vertex_input_dynamic_state Vulkan Specification>
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state  ( PhysicalDeviceVertexInputDynamicStateFeaturesEXT
+                                                            , VertexInputAttributeDescription2EXT
+                                                            , VertexInputBindingDescription2EXT
+                                                            ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceVertexInputDynamicStateFeaturesEXT
+
+instance ToCStruct PhysicalDeviceVertexInputDynamicStateFeaturesEXT
+instance Show PhysicalDeviceVertexInputDynamicStateFeaturesEXT
+
+instance FromCStruct PhysicalDeviceVertexInputDynamicStateFeaturesEXT
+
+
+data VertexInputAttributeDescription2EXT
+
+instance ToCStruct VertexInputAttributeDescription2EXT
+instance Show VertexInputAttributeDescription2EXT
+
+instance FromCStruct VertexInputAttributeDescription2EXT
+
+
+data VertexInputBindingDescription2EXT
+
+instance ToCStruct VertexInputBindingDescription2EXT
+instance Show VertexInputBindingDescription2EXT
+
+instance FromCStruct VertexInputBindingDescription2EXT
+
diff --git a/src/Vulkan/Extensions/VK_EXT_ycbcr_2plane_444_formats.hs b/src/Vulkan/Extensions/VK_EXT_ycbcr_2plane_444_formats.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_ycbcr_2plane_444_formats.hs
@@ -0,0 +1,214 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_ycbcr_2plane_444_formats - device extension
+--
+-- == VK_EXT_ycbcr_2plane_444_formats
+--
+-- [__Name String__]
+--     @VK_EXT_ycbcr_2plane_444_formats@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     331
+--
+-- [__Revision__]
+--     1
+--
+-- [__Extension and Version Dependencies__]
+--
+--     -   Requires Vulkan 1.0
+--
+--     -   Requires @VK_KHR_sampler_ycbcr_conversion@
+--
+-- [__Contact__]
+--
+--     -   Tony Zlatinski
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_ycbcr_2plane_444_formats:%20&body=@tzlatinski%20 >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2020-07-28
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Ping Liu, Intel
+--
+-- == Description
+--
+-- This extension adds some Y′CBCR formats that are in common use for video
+-- encode and decode, but were not part of the
+-- <VK_KHR_sampler_ycbcr_conversion.html VK_KHR_sampler_ycbcr_conversion>
+-- extension.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME'
+--
+-- -   'EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.Format.Format':
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT'
+--
+-- == Version History
+--
+-- -   Revision 1, 2020-03-08 (Piers Daniell)
+--
+--     -   Initial draft
+--
+-- = See Also
+--
+-- 'PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT'
+--
+-- = Document Notes
+--
+-- For more information, see the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_ycbcr_2plane_444_formats Vulkan Specification>
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_EXT_ycbcr_2plane_444_formats  ( PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(..)
+                                                          , EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION
+                                                          , pattern EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION
+                                                          , EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME
+                                                          , pattern EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME
+                                                          ) where
+
+import Foreign.Marshal.Alloc (allocaBytesAligned)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+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 Foreign.Ptr (Ptr)
+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_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT))
+-- | VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT - Structure describing
+-- whether the implementation supports additional 2-plane 444 Y′CBCR
+-- formats
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT' 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. 'PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT' /can/ also
+-- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
+-- to selectively enable these features.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT
+  { -- | #features-ycbcr2plane444Formats# @ycbcr2plane444Formats@ indicates that
+    -- the implementation supports the following 2-plane 444 Y′CBCR formats:
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT'
+    ycbcr2plane444Formats :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT)
+#endif
+deriving instance Show PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT
+
+instance ToCStruct PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT where
+  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (ycbcr2plane444Formats))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT where
+  peekCStruct p = do
+    ycbcr2plane444Formats <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT
+             (bool32ToBool ycbcr2plane444Formats)
+
+instance Storable PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT where
+  zero = PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT
+           zero
+
+
+type EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION"
+pattern EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION :: forall a . Integral a => a
+pattern EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION = 1
+
+
+type EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME = "VK_EXT_ycbcr_2plane_444_formats"
+
+-- No documentation found for TopLevel "VK_EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME"
+pattern EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME = "VK_EXT_ycbcr_2plane_444_formats"
+
diff --git a/src/Vulkan/Extensions/VK_EXT_ycbcr_2plane_444_formats.hs-boot b/src/Vulkan/Extensions/VK_EXT_ycbcr_2plane_444_formats.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_ycbcr_2plane_444_formats.hs-boot
@@ -0,0 +1,109 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_ycbcr_2plane_444_formats - device extension
+--
+-- == VK_EXT_ycbcr_2plane_444_formats
+--
+-- [__Name String__]
+--     @VK_EXT_ycbcr_2plane_444_formats@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     331
+--
+-- [__Revision__]
+--     1
+--
+-- [__Extension and Version Dependencies__]
+--
+--     -   Requires Vulkan 1.0
+--
+--     -   Requires @VK_KHR_sampler_ycbcr_conversion@
+--
+-- [__Contact__]
+--
+--     -   Tony Zlatinski
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_EXT_ycbcr_2plane_444_formats:%20&body=@tzlatinski%20 >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2020-07-28
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Ping Liu, Intel
+--
+-- == Description
+--
+-- This extension adds some Y′CBCR formats that are in common use for video
+-- encode and decode, but were not part of the
+-- <VK_KHR_sampler_ycbcr_conversion.html VK_KHR_sampler_ycbcr_conversion>
+-- extension.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME'
+--
+-- -   'EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.Format.Format':
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT'
+--
+--     -   'Vulkan.Core10.Enums.Format.FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT'
+--
+-- == Version History
+--
+-- -   Revision 1, 2020-03-08 (Piers Daniell)
+--
+--     -   Initial draft
+--
+-- = See Also
+--
+-- 'PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT'
+--
+-- = Document Notes
+--
+-- For more information, see the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_ycbcr_2plane_444_formats Vulkan Specification>
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_EXT_ycbcr_2plane_444_formats  (PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT
+
+instance ToCStruct PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT
+instance Show PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT
+
+instance FromCStruct PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT
+
diff --git a/src/Vulkan/Extensions/VK_EXT_ycbcr_image_arrays.hs b/src/Vulkan/Extensions/VK_EXT_ycbcr_image_arrays.hs
--- a/src/Vulkan/Extensions/VK_EXT_ycbcr_image_arrays.hs
+++ b/src/Vulkan/Extensions/VK_EXT_ycbcr_image_arrays.hs
@@ -108,23 +108,24 @@
 import Vulkan.Core10.Enums.StructureType (StructureType)
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT))
 -- | VkPhysicalDeviceYcbcrImageArraysFeaturesEXT - Structure describing
--- extended Y’CbCr image creation features that can be supported by an
+-- extended Y′CBCR image creation features that can be supported by an
 -- implementation
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceYcbcrImageArraysFeaturesEXT' structure
--- describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceYcbcrImageArraysFeaturesEXT' structure is included
--- in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceYcbcrImageArraysFeaturesEXT' /can/ also be included in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable
--- features.
+-- 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. 'PhysicalDeviceYcbcrImageArraysFeaturesEXT' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_FUCHSIA_external_memory.hs b/src/Vulkan/Extensions/VK_FUCHSIA_external_memory.hs
--- a/src/Vulkan/Extensions/VK_FUCHSIA_external_memory.hs
+++ b/src/Vulkan/Extensions/VK_FUCHSIA_external_memory.hs
@@ -207,7 +207,7 @@
 -- 'Vulkan.Core10.Handles.Device', 'MemoryGetZirconHandleInfoFUCHSIA'
 getMemoryZirconHandleFUCHSIA :: forall io
                               . (MonadIO io)
-                             => -- | @device@ is the VkDevice.
+                             => -- | @device@ is the 'Vulkan.Core10.Handles.Device'.
                                 --
                                 -- #VUID-vkGetMemoryZirconHandleFUCHSIA-device-parameter# @device@ /must/
                                 -- be a valid 'Vulkan.Core10.Handles.Device' handle
@@ -260,12 +260,14 @@
 -- 'MemoryZirconHandlePropertiesFUCHSIA'
 getMemoryZirconHandlePropertiesFUCHSIA :: forall io
                                         . (MonadIO io)
-                                       => -- | @device@ is the VkDevice.
+                                       => -- | @device@ is the 'Vulkan.Core10.Handles.Device'.
                                           --
                                           -- #VUID-vkGetMemoryZirconHandlePropertiesFUCHSIA-device-parameter#
                                           -- @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
                                           Device
-                                       -> -- | @handleType@ is the type of @zirconHandle@
+                                       -> -- | @handleType@ is a
+                                          -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'
+                                          -- value specifying the type of @zirconHandle@
                                           --
                                           -- #VUID-vkGetMemoryZirconHandlePropertiesFUCHSIA-handleType-04773#
                                           -- @handleType@ /must/ be
@@ -323,7 +325,9 @@
 -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data ImportMemoryZirconHandleInfoFUCHSIA = ImportMemoryZirconHandleInfoFUCHSIA
-  { -- | @handleType@ is the type of @handle@.
+  { -- | @handleType@ is a
+    -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'
+    -- value specifying the type of @handle@.
     handleType :: ExternalMemoryHandleTypeFlagBits
   , -- | @handle@ is a @zx_handle_t@ (Zircon) handle to the external memory.
     handle :: Zx_handle_t
@@ -436,8 +440,10 @@
     -- #VUID-VkMemoryGetZirconHandleInfoFUCHSIA-memory-parameter# @memory@
     -- /must/ be a valid 'Vulkan.Core10.Handles.DeviceMemory' handle
     memory :: DeviceMemory
-  , -- | @handleType@ is the type of the handle pointed to by @pZirconHandle@ as
-    -- retrieved by the call to 'getMemoryZirconHandleFUCHSIA'.
+  , -- | @handleType@ is a
+    -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'
+    -- value specifying the type of the handle pointed to by
+    -- 'getMemoryZirconHandleFUCHSIA'::@pZirconHandle@.
     --
     -- #VUID-VkMemoryGetZirconHandleInfoFUCHSIA-handleType-04775# @handleType@
     -- /must/ be
diff --git a/src/Vulkan/Extensions/VK_FUCHSIA_external_semaphore.hs b/src/Vulkan/Extensions/VK_FUCHSIA_external_semaphore.hs
--- a/src/Vulkan/Extensions/VK_FUCHSIA_external_semaphore.hs
+++ b/src/Vulkan/Extensions/VK_FUCHSIA_external_semaphore.hs
@@ -391,7 +391,9 @@
     -- specifying additional parameters for the semaphore payload import
     -- operation.
     flags :: SemaphoreImportFlags
-  , -- | @handleType@ specifies the type of @zirconHandle@.
+  , -- | @handleType@ is a
+    -- 'Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits'
+    -- value specifying the type of @zirconHandle@.
     handleType :: ExternalSemaphoreHandleTypeFlagBits
   , -- | @zirconHandle@ is the external handle to import.
     zirconHandle :: Zx_handle_t
@@ -518,7 +520,9 @@
 data SemaphoreGetZirconHandleInfoFUCHSIA = SemaphoreGetZirconHandleInfoFUCHSIA
   { -- | @semaphore@ is the semaphore from which state will be exported.
     semaphore :: Semaphore
-  , -- | @handleType@ is the type of handle requested.
+  , -- | @handleType@ is a
+    -- 'Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits'
+    -- value specifying the type of handle requested.
     handleType :: ExternalSemaphoreHandleTypeFlagBits
   }
   deriving (Typeable, Eq)
diff --git a/src/Vulkan/Extensions/VK_FUCHSIA_imagepipe_surface.hs b/src/Vulkan/Extensions/VK_FUCHSIA_imagepipe_surface.hs
--- a/src/Vulkan/Extensions/VK_FUCHSIA_imagepipe_surface.hs
+++ b/src/Vulkan/Extensions/VK_FUCHSIA_imagepipe_surface.hs
@@ -254,7 +254,7 @@
   , -- | @imagePipeHandle@ is a @zx_handle_t@ referring to the ImagePipe to
     -- associate with the surface.
     --
-    -- #VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-imagePipeHandle-00000#
+    -- #VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-imagePipeHandle-04863#
     -- @imagePipeHandle@ /must/ be a valid @zx_handle_t@
     imagePipeHandle :: Zx_handle_t
   }
diff --git a/src/Vulkan/Extensions/VK_GOOGLE_display_timing.hs b/src/Vulkan/Extensions/VK_GOOGLE_display_timing.hs
--- a/src/Vulkan/Extensions/VK_GOOGLE_display_timing.hs
+++ b/src/Vulkan/Extensions/VK_GOOGLE_display_timing.hs
@@ -279,12 +279,10 @@
 -- with the number of structures actually written to
 -- @pPresentationTimings@. If the value of @pPresentationTimingCount@ is
 -- less than the number of newly-available timing records, at most
--- @pPresentationTimingCount@ structures will be written. If
--- @pPresentationTimingCount@ is smaller than the number of newly-available
--- timing records for the given @swapchain@,
+-- @pPresentationTimingCount@ structures will be written, and
 -- 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned instead of
--- 'Vulkan.Core10.Enums.Result.SUCCESS' to indicate that not all the
--- available values were returned.
+-- 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate that not all the
+-- available timing records were returned.
 --
 -- == Valid Usage (Implicit)
 --
@@ -602,6 +600,10 @@
 
 -- | VkPresentTimeGOOGLE - The earliest time image should be presented
 --
+-- = Description
+--
+-- > but does not need a specific pname:desiredPresentTime.
+--
 -- = See Also
 --
 -- 'PresentTimesInfoGOOGLE'
@@ -618,7 +620,7 @@
     -- (e.g. @CLOCK_MONOTONIC@ (see clock_gettime(2)) on Android and Linux). A
     -- value of zero specifies that the presentation engine /may/ display the
     -- image at any time. This is useful when the application desires to
-    -- provide @presentID@, but does not need a specific @desiredPresentTime@.
+    -- provide @presentID@,
     desiredPresentTime :: Word64
   }
   deriving (Typeable, Eq)
diff --git a/src/Vulkan/Extensions/VK_INTEL_performance_query.hs b/src/Vulkan/Extensions/VK_INTEL_performance_query.hs
--- a/src/Vulkan/Extensions/VK_INTEL_performance_query.hs
+++ b/src/Vulkan/Extensions/VK_INTEL_performance_query.hs
@@ -1310,7 +1310,7 @@
            zero
 
 
--- | VkPerformanceOverrideInfoINTEL - Performance override info
+-- | VkPerformanceOverrideInfoINTEL - Performance override information
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_INTEL_shader_integer_functions2.hs b/src/Vulkan/Extensions/VK_INTEL_shader_integer_functions2.hs
--- a/src/Vulkan/Extensions/VK_INTEL_shader_integer_functions2.hs
+++ b/src/Vulkan/Extensions/VK_INTEL_shader_integer_functions2.hs
@@ -127,18 +127,21 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL'
--- structure describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
--- If the 'PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL' /can/ also be
--- included in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to enable features.
+-- If the @VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTELfeatures@.
+-- 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.
+-- @VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTELfeatures@. /can/
+-- also be used in the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
+-- features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_acceleration_structure.hs b/src/Vulkan/Extensions/VK_KHR_acceleration_structure.hs
--- a/src/Vulkan/Extensions/VK_KHR_acceleration_structure.hs
+++ b/src/Vulkan/Extensions/VK_KHR_acceleration_structure.hs
@@ -466,7 +466,7 @@
 --
 --     -   'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV'
 --         → 'AccelerationStructureCreateInfoKHR' (reshuffle geometry
---         layout\/info)
+--         layout\/information)
 --
 --     -   'Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV'
 --         → 'PhysicalDeviceAccelerationStructurePropertiesKHR' (for
@@ -486,7 +486,7 @@
 --
 --     -   'Vulkan.Extensions.VK_NV_ray_tracing.createAccelerationStructureNV'
 --         → 'createAccelerationStructureKHR' (device address, different
---         geometry layout\/info)
+--         geometry layout\/information)
 --
 --     -   'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureMemoryRequirementsNV'
 --         (deleted - replaced by allocating on top of
@@ -755,7 +755,7 @@
 --
 --     -   add a new
 --         'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR'
---         buffer usage such buffers
+--         buffer usage for such buffers
 --
 --     -   add a new 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR' acceleration
 --         structure type for layering
@@ -786,12 +786,12 @@
 --
 -- (5) What is 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR' for?
 --
--- RESOLVED: It is primarily intended for API layering. In DXR, the
+-- __RESOLVED__: It is primarily intended for API layering. In DXR, the
 -- acceleration structure is basically just a buffer in a special layout,
 -- and you don’t know at creation time whether it will be used as a top or
 -- bottom level acceleration structure. We thus added a generic
 -- acceleration structure type whose type is unknown at creation time, but
--- is specified at build type instead. Applications which are written
+-- is specified at build time instead. Applications which are written
 -- directly for Vulkan should not use it.
 --
 -- == Version History
@@ -815,7 +815,7 @@
 --         better match its type (!3523)
 --
 --     -   Allow VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS for pipeline
---         creation if shader group handles cannot be re-used. (!3523)
+--         creation if shader group handles cannot be reused (!3523)
 --
 --     -   update documentation for the
 --         VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS error code and add
@@ -1429,7 +1429,7 @@
 -- 'Vulkan.Core10.Handles.Device'
 destroyAccelerationStructureKHR :: forall io
                                  . (MonadIO io)
-                                => -- | @device@ is the logical device that destroys the buffer.
+                                => -- | @device@ is the logical device that destroys the acceleration structure.
                                    Device
                                 -> -- | @accelerationStructure@ is the acceleration structure to destroy.
                                    AccelerationStructureKHR
@@ -1461,7 +1461,7 @@
 --
 -- = Description
 --
--- Accesses to @pInfo@->@src@ and @pInfo@->@dst@ /must/ be
+-- Accesses to @pInfo->src@ and @pInfo->dst@ /must/ be
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized>
 -- with the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
@@ -1477,10 +1477,10 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkCmdCopyAccelerationStructureKHR-buffer-03737# The @buffer@
---     used to create @pInfo@->@src@ /must/ be bound to device memory
+--     used to create @pInfo->src@ /must/ be bound to device memory
 --
 -- -   #VUID-vkCmdCopyAccelerationStructureKHR-buffer-03738# The @buffer@
---     used to create @pInfo@->@dst@ /must/ be bound to device memory
+--     used to create @pInfo->dst@ /must/ be bound to device memory
 --
 -- == Valid Usage (Implicit)
 --
@@ -1571,12 +1571,10 @@
 --     @deferredOperation@ /must/ be complete
 --
 -- -   #VUID-vkCopyAccelerationStructureKHR-buffer-03727# The @buffer@ used
---     to create @pInfo@->@src@ /must/ be bound to host-visible device
---     memory
+--     to create @pInfo->src@ /must/ be bound to host-visible device memory
 --
 -- -   #VUID-vkCopyAccelerationStructureKHR-buffer-03728# The @buffer@ used
---     to create @pInfo@->@dst@ /must/ be bound to host-visible device
---     memory
+--     to create @pInfo->dst@ /must/ be bound to host-visible device memory
 --
 -- -   #VUID-vkCopyAccelerationStructureKHR-accelerationStructureHostCommands-03582#
 --     The
@@ -1584,11 +1582,11 @@
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCopyAccelerationStructureKHR-buffer-03780# The @buffer@ used
---     to create @pInfo@->@src@ /must/ be bound to memory that was not
+--     to create @pInfo->src@ /must/ be bound to memory that was not
 --     allocated with multiple instances
 --
 -- -   #VUID-vkCopyAccelerationStructureKHR-buffer-03781# The @buffer@ used
---     to create @pInfo@->@dst@ /must/ be bound to memory that was not
+--     to create @pInfo->dst@ /must/ be bound to memory that was not
 --     allocated with multiple instances
 --
 -- == Valid Usage (Implicit)
@@ -1666,7 +1664,7 @@
 --
 -- = Description
 --
--- Accesses to @pInfo@->@src@ /must/ be
+-- Accesses to @pInfo->src@ /must/ be
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized>
 -- with the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
@@ -1675,8 +1673,8 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type>
 -- of
 -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'.
--- Accesses to the buffer indicated by @pInfo@->@dst.deviceAddress@ /must/
--- be synchronized with the
+-- Accesses to the buffer indicated by @pInfo->dst.deviceAddress@ /must/ be
+-- synchronized with the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
 -- pipeline stage and an access type of
 -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFER_WRITE_BIT'.
@@ -1722,19 +1720,19 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-03739#
---     @pInfo@->@dst.deviceAddress@ /must/ be a valid device address for a
---     buffer bound to device memory.
+--     @pInfo->dst.deviceAddress@ /must/ be a valid device address for a
+--     buffer bound to device memory
 --
 -- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-03740#
---     @pInfo@->@dst.deviceAddress@ /must/ be aligned to @256@ bytes
+--     @pInfo->dst.deviceAddress@ /must/ be aligned to @256@ bytes
 --
 -- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-03741# If the
---     buffer pointed to by @pInfo@->@dst.deviceAddress@ is non-sparse then
+--     buffer pointed to by @pInfo->dst.deviceAddress@ is non-sparse then
 --     it /must/ be bound completely and contiguously to a single
 --     'Vulkan.Core10.Handles.DeviceMemory' object
 --
 -- -   #VUID-vkCmdCopyAccelerationStructureToMemoryKHR-None-03559# The
---     @buffer@ used to create @pInfo@->@src@ /must/ be bound to device
+--     @buffer@ used to create @pInfo->src@ /must/ be bound to device
 --     memory
 --
 -- == Valid Usage (Implicit)
@@ -1834,14 +1832,14 @@
 --     @deferredOperation@ /must/ be complete
 --
 -- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-buffer-03731# The
---     @buffer@ used to create @pInfo@->@src@ /must/ be bound to
---     host-visible device memory
+--     @buffer@ used to create @pInfo->src@ /must/ be bound to host-visible
+--     device memory
 --
 -- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-03732#
---     @pInfo@->@dst.hostAddress@ /must/ be a valid host pointer
+--     @pInfo->dst.hostAddress@ /must/ be a valid host pointer
 --
 -- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-03751#
---     @pInfo@->@dst.hostAddress@ /must/ be aligned to 16 bytes
+--     @pInfo->dst.hostAddress@ /must/ be aligned to 16 bytes
 --
 -- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-accelerationStructureHostCommands-03584#
 --     The
@@ -1849,8 +1847,8 @@
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-buffer-03783# The
---     @buffer@ used to create @pInfo@->@src@ /must/ be bound to memory
---     that was not allocated with multiple instances
+--     @buffer@ used to create @pInfo->src@ /must/ be bound to memory that
+--     was not allocated with multiple instances
 --
 -- == Valid Usage (Implicit)
 --
@@ -1893,7 +1891,7 @@
 -- 'Vulkan.Core10.Handles.Device'
 copyAccelerationStructureToMemoryKHR :: forall io
                                       . (MonadIO io)
-                                     => -- | @device@ is the device which owns @pInfo@->@src@.
+                                     => -- | @device@ is the device which owns @pInfo->src@.
                                         Device
                                      -> -- | @deferredOperation@ is an optional
                                         -- 'Vulkan.Extensions.Handles.DeferredOperationKHR' to
@@ -1927,7 +1925,7 @@
 --
 -- = Description
 --
--- Accesses to @pInfo@->@dst@ /must/ be
+-- Accesses to @pInfo->dst@ /must/ be
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized>
 -- with the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
@@ -1936,8 +1934,8 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type>
 -- of
 -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'.
--- Accesses to the buffer indicated by @pInfo@->@src.deviceAddress@ /must/
--- be synchronized with the
+-- Accesses to the buffer indicated by @pInfo->src.deviceAddress@ /must/ be
+-- synchronized with the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
 -- pipeline stage and an access type of
 -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFER_READ_BIT'.
@@ -1955,19 +1953,19 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03742#
---     @pInfo@->@src.deviceAddress@ /must/ be a valid device address for a
+--     @pInfo->src.deviceAddress@ /must/ be a valid device address for a
 --     buffer bound to device memory.
 --
 -- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03743#
---     @pInfo@->@src.deviceAddress@ /must/ be aligned to @256@ bytes
+--     @pInfo->src.deviceAddress@ /must/ be aligned to @256@ bytes
 --
 -- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03744# If the
---     buffer pointed to by @pInfo@->@src.deviceAddress@ is non-sparse then
+--     buffer pointed to by @pInfo->src.deviceAddress@ is non-sparse then
 --     it /must/ be bound completely and contiguously to a single
 --     'Vulkan.Core10.Handles.DeviceMemory' object
 --
 -- -   #VUID-vkCmdCopyMemoryToAccelerationStructureKHR-buffer-03745# The
---     @buffer@ used to create @pInfo@->@dst@ /must/ be bound to device
+--     @buffer@ used to create @pInfo->dst@ /must/ be bound to device
 --     memory
 --
 -- == Valid Usage (Implicit)
@@ -2063,14 +2061,14 @@
 --     @deferredOperation@ /must/ be complete
 --
 -- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-03729#
---     @pInfo@->@src.hostAddress@ /must/ be a valid host pointer
+--     @pInfo->src.hostAddress@ /must/ be a valid host pointer
 --
 -- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-03750#
---     @pInfo@->@src.hostAddress@ /must/ be aligned to 16 bytes
+--     @pInfo->src.hostAddress@ /must/ be aligned to 16 bytes
 --
 -- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-buffer-03730# The
---     @buffer@ used to create @pInfo@->@dst@ /must/ be bound to
---     host-visible device memory
+--     @buffer@ used to create @pInfo->dst@ /must/ be bound to host-visible
+--     device memory
 --
 -- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-accelerationStructureHostCommands-03583#
 --     The
@@ -2078,8 +2076,8 @@
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-buffer-03782# The
---     @buffer@ used to create @pInfo@->@dst@ /must/ be bound to memory
---     that was not allocated with multiple instances
+--     @buffer@ used to create @pInfo->dst@ /must/ be bound to memory that
+--     was not allocated with multiple instances
 --
 -- == Valid Usage (Implicit)
 --
@@ -2181,6 +2179,10 @@
 --     The @buffer@ used to create each acceleration structure in
 --     @pAccelerationStructures@ /must/ be bound to device memory
 --
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-query-04880# The
+--     sum of @query@ plus @accelerationStructureCount@ /must/ be less than
+--     or equal to the number of queries in @queryPool@
+--
 -- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructures-03431#
 --     All acceleration structures in @pAccelerationStructures@ /must/ have
 --     been built with
@@ -2407,8 +2409,8 @@
                                          => -- | @device@ is the device which owns the acceleration structures in
                                             -- @pAccelerationStructures@.
                                             Device
-                                         -> -- | @pAccelerationStructures@ points to an array of existing previously
-                                            -- built acceleration structures.
+                                         -> -- | @pAccelerationStructures@ is a pointer to an array of existing
+                                            -- previously built acceleration structures.
                                             ("accelerationStructures" ::: Vector AccelerationStructureKHR)
                                          -> -- | @queryType@ is a 'Vulkan.Core10.Enums.QueryType.QueryType' value
                                             -- specifying the property to be queried.
@@ -2473,8 +2475,8 @@
                                                 . (MonadIO io)
                                                => -- | @device@ is the device to check the version against.
                                                   Device
-                                               -> -- | @pVersionInfo@ points to the 'AccelerationStructureVersionInfoKHR'
-                                                  -- version information to check against the device.
+                                               -> -- | @pVersionInfo@ is a pointer to a 'AccelerationStructureVersionInfoKHR'
+                                                  -- structure specifying version information to check against the device.
                                                   AccelerationStructureVersionInfoKHR
                                                -> io (AccelerationStructureCompatibilityKHR)
 getDeviceAccelerationStructureCompatibilityKHR device versionInfo = liftIO . evalContT $ do
@@ -2643,7 +2645,7 @@
 -- the builds.
 --
 -- Accesses to the acceleration structure scratch buffers as identified by
--- the 'AccelerationStructureBuildGeometryInfoKHR'→@scratchData@ buffer
+-- the 'AccelerationStructureBuildGeometryInfoKHR'::@scratchData@ buffer
 -- device addresses /must/ be
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized>
 -- with the
@@ -2656,16 +2658,16 @@
 -- or
 -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'.
 -- Similarly for accesses to each
--- 'AccelerationStructureBuildGeometryInfoKHR'→@srcAccelerationStructure@
+-- 'AccelerationStructureBuildGeometryInfoKHR'::@srcAccelerationStructure@
 -- and
--- 'AccelerationStructureBuildGeometryInfoKHR'→@dstAccelerationStructure@.
+-- 'AccelerationStructureBuildGeometryInfoKHR'::@dstAccelerationStructure@.
 --
 -- Accesses to other input buffers as identified by any used values of
--- 'AccelerationStructureGeometryTrianglesDataKHR'→@vertexData@,
--- 'AccelerationStructureGeometryTrianglesDataKHR'→@indexData@,
--- 'AccelerationStructureGeometryTrianglesDataKHR'→@transformData@,
--- 'AccelerationStructureGeometryAabbsDataKHR'→@data@, and
--- 'AccelerationStructureGeometryInstancesDataKHR'→@data@ /must/ be
+-- 'AccelerationStructureGeometryTrianglesDataKHR'::@vertexData@,
+-- 'AccelerationStructureGeometryTrianglesDataKHR'::@indexData@,
+-- 'AccelerationStructureGeometryTrianglesDataKHR'::@transformData@,
+-- 'AccelerationStructureGeometryAabbsDataKHR'::@data@, and
+-- 'AccelerationStructureGeometryInstancesDataKHR'::@data@ /must/ be
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized>
 -- with the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
@@ -2785,12 +2787,6 @@
 --     'GEOMETRY_TYPE_INSTANCES_KHR' in any other element of @pInfos@,
 --     which is accessed by this command
 --
--- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03666# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its
---     @srcAccelerationStructure@ member /must/ not be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
 -- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03667# For each
 --     element of @pInfos@, if its @mode@ member is
 --     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its
@@ -2811,19 +2807,19 @@
 --     element of @pInfos@, if its @mode@ member is
 --     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @geometryCount@
 --     member /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built.
+--     @srcAccelerationStructure@ was last built
 --
 -- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03759# For each
 --     element of @pInfos@, if its @mode@ member is
 --     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @flags@ member
 --     /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built.
+--     @srcAccelerationStructure@ was last built
 --
 -- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03760# For each
 --     element of @pInfos@, if its @mode@ member is
 --     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @type@ member
 --     /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built.
+--     @srcAccelerationStructure@ was last built
 --
 -- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03761# For each
 --     element of @pInfos@, if its @mode@ member is
@@ -2831,7 +2827,7 @@
 --     'AccelerationStructureGeometryKHR' structure referred to by its
 --     @pGeometries@ or @ppGeometries@ members, its @geometryType@ member
 --     /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built.
+--     @srcAccelerationStructure@ was last built
 --
 -- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03762# For each
 --     element of @pInfos@, if its @mode@ member is
@@ -2839,7 +2835,7 @@
 --     'AccelerationStructureGeometryKHR' structure referred to by its
 --     @pGeometries@ or @ppGeometries@ members, its @flags@ member /must/
 --     have the same value which was specified when
---     @srcAccelerationStructure@ was last built.
+--     @srcAccelerationStructure@ was last built
 --
 -- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03763# For each
 --     element of @pInfos@, if its @mode@ member is
@@ -2848,7 +2844,7 @@
 --     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
 --     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.vertexFormat@
 --     member /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built.
+--     @srcAccelerationStructure@ was last built
 --
 -- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03764# For each
 --     element of @pInfos@, if its @mode@ member is
@@ -2857,7 +2853,7 @@
 --     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
 --     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.maxVertex@
 --     member /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built.
+--     @srcAccelerationStructure@ was last built
 --
 -- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03765# For each
 --     element of @pInfos@, if its @mode@ member is
@@ -2866,7 +2862,7 @@
 --     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
 --     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.indexType@
 --     member /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built.
+--     @srcAccelerationStructure@ was last built
 --
 -- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03766# For each
 --     element of @pInfos@, if its @mode@ member is
@@ -2875,7 +2871,7 @@
 --     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
 --     'GEOMETRY_TYPE_TRIANGLES_KHR', if its
 --     @geometry.triangles.transformData@ member was NULL when
---     @srcAccelerationStructure@ was last built, then it must be NULL.
+--     @srcAccelerationStructure@ was last built, then it /must/ be NULL
 --
 -- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03767# For each
 --     element of @pInfos@, if its @mode@ member is
@@ -2884,7 +2880,7 @@
 --     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
 --     'GEOMETRY_TYPE_TRIANGLES_KHR', if its
 --     @geometry.triangles.transformData@ member was not NULL when
---     @srcAccelerationStructure@ was last built, then it may not be NULL.
+--     @srcAccelerationStructure@ was last built, then it may not be NULL
 --
 -- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03768# For each
 --     element of @pInfos@, if its @mode@ member is
@@ -2893,20 +2889,20 @@
 --     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
 --     'GEOMETRY_TYPE_TRIANGLES_KHR', and @geometry.triangles.indexType@ is
 --     not 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then the
---     value of each index referenced index must be the same as the
+--     value of each index referenced /must/ be the same as the
 --     corresponding index value when @srcAccelerationStructure@ was last
---     built.
+--     built
 --
 -- -   #VUID-vkCmdBuildAccelerationStructuresKHR-primitiveCount-03769# For
 --     each 'AccelerationStructureBuildRangeInfoKHR' referenced by this
 --     command, its @primitiveCount@ member /must/ have the same value
---     which was specified when @srcAccelerationStructure@ was last built.
+--     which was specified when @srcAccelerationStructure@ was last built
 --
 -- -   #VUID-vkCmdBuildAccelerationStructuresKHR-firstVertex-03770# For
 --     each 'AccelerationStructureBuildRangeInfoKHR' referenced by this
 --     command, if the corresponding geometry uses indices, its
 --     @firstVertex@ member /must/ have the same value which was specified
---     when @srcAccelerationStructure@ was last built.
+--     when @srcAccelerationStructure@ was last built
 --
 -- -   #VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03801# For each
 --     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
@@ -2959,7 +2955,8 @@
 --     @geometry.triangles.vertexData@, @geometry.triangles.indexData@,
 --     @geometry.triangles.transformData@, @geometry.aabbs.data@, and
 --     @geometry.instances.data@ members of all @pInfos@[i].@pGeometries@
---     and @pInfos@[i].@ppGeometries@ /must/ have been created with the
+--     and @pInfos@[i].@ppGeometries@ are queried /must/ have been created
+--     with the
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR'
 --     usage flag
 --
@@ -3186,16 +3183,16 @@
                                   => -- | @commandBuffer@ is the command buffer into which the command will be
                                      -- recorded.
                                      CommandBuffer
-                                  -> -- | @pInfos@ is an array of @infoCount@
+                                  -> -- | @pInfos@ is a pointer to an array of @infoCount@
                                      -- 'AccelerationStructureBuildGeometryInfoKHR' structures defining the
                                      -- geometry used to build each acceleration structure.
                                      ("infos" ::: Vector AccelerationStructureBuildGeometryInfoKHR)
-                                  -> -- | @ppBuildRangeInfos@ is an array of @infoCount@ pointers to arrays of
-                                     -- 'AccelerationStructureBuildRangeInfoKHR' structures. Each
-                                     -- @ppBuildRangeInfos@[i] is an array of @pInfos@[i].@geometryCount@
-                                     -- 'AccelerationStructureBuildRangeInfoKHR' structures defining dynamic
-                                     -- offsets to the addresses where geometry data is stored, as defined by
-                                     -- @pInfos@[i].
+                                  -> -- | @ppBuildRangeInfos@ is a pointer to an array of @infoCount@ pointers to
+                                     -- arrays of 'AccelerationStructureBuildRangeInfoKHR' structures. Each
+                                     -- @ppBuildRangeInfos@[i] is a pointer to an array of
+                                     -- @pInfos@[i].@geometryCount@ 'AccelerationStructureBuildRangeInfoKHR'
+                                     -- structures defining dynamic offsets to the addresses where geometry data
+                                     -- is stored, as defined by @pInfos@[i].
                                      ("buildRangeInfos" ::: Vector (Vector AccelerationStructureBuildRangeInfoKHR))
                                   -> io ()
 cmdBuildAccelerationStructuresKHR commandBuffer infos buildRangeInfos = liftIO . evalContT $ do
@@ -3354,12 +3351,6 @@
 --     'GEOMETRY_TYPE_INSTANCES_KHR' in any other element of @pInfos@,
 --     which is accessed by this command
 --
--- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03666# For
---     each element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its
---     @srcAccelerationStructure@ member /must/ not be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
 -- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03667# For
 --     each element of @pInfos@, if its @mode@ member is
 --     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its
@@ -3380,19 +3371,19 @@
 --     each element of @pInfos@, if its @mode@ member is
 --     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @geometryCount@
 --     member /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built.
+--     @srcAccelerationStructure@ was last built
 --
 -- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03759# For
 --     each element of @pInfos@, if its @mode@ member is
 --     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @flags@ member
 --     /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built.
+--     @srcAccelerationStructure@ was last built
 --
 -- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03760# For
 --     each element of @pInfos@, if its @mode@ member is
 --     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @type@ member
 --     /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built.
+--     @srcAccelerationStructure@ was last built
 --
 -- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03761# For
 --     each element of @pInfos@, if its @mode@ member is
@@ -3400,7 +3391,7 @@
 --     'AccelerationStructureGeometryKHR' structure referred to by its
 --     @pGeometries@ or @ppGeometries@ members, its @geometryType@ member
 --     /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built.
+--     @srcAccelerationStructure@ was last built
 --
 -- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03762# For
 --     each element of @pInfos@, if its @mode@ member is
@@ -3408,7 +3399,7 @@
 --     'AccelerationStructureGeometryKHR' structure referred to by its
 --     @pGeometries@ or @ppGeometries@ members, its @flags@ member /must/
 --     have the same value which was specified when
---     @srcAccelerationStructure@ was last built.
+--     @srcAccelerationStructure@ was last built
 --
 -- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03763# For
 --     each element of @pInfos@, if its @mode@ member is
@@ -3417,7 +3408,7 @@
 --     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
 --     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.vertexFormat@
 --     member /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built.
+--     @srcAccelerationStructure@ was last built
 --
 -- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03764# For
 --     each element of @pInfos@, if its @mode@ member is
@@ -3426,7 +3417,7 @@
 --     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
 --     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.maxVertex@
 --     member /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built.
+--     @srcAccelerationStructure@ was last built
 --
 -- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03765# For
 --     each element of @pInfos@, if its @mode@ member is
@@ -3435,7 +3426,7 @@
 --     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
 --     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.indexType@
 --     member /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built.
+--     @srcAccelerationStructure@ was last built
 --
 -- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03766# For
 --     each element of @pInfos@, if its @mode@ member is
@@ -3444,7 +3435,7 @@
 --     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
 --     'GEOMETRY_TYPE_TRIANGLES_KHR', if its
 --     @geometry.triangles.transformData@ member was NULL when
---     @srcAccelerationStructure@ was last built, then it must be NULL.
+--     @srcAccelerationStructure@ was last built, then it /must/ be NULL
 --
 -- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03767# For
 --     each element of @pInfos@, if its @mode@ member is
@@ -3453,7 +3444,7 @@
 --     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
 --     'GEOMETRY_TYPE_TRIANGLES_KHR', if its
 --     @geometry.triangles.transformData@ member was not NULL when
---     @srcAccelerationStructure@ was last built, then it may not be NULL.
+--     @srcAccelerationStructure@ was last built, then it may not be NULL
 --
 -- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03768# For
 --     each element of @pInfos@, if its @mode@ member is
@@ -3462,20 +3453,20 @@
 --     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
 --     'GEOMETRY_TYPE_TRIANGLES_KHR', and @geometry.triangles.indexType@ is
 --     not 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then the
---     value of each index referenced index must be the same as the
+--     value of each index referenced /must/ be the same as the
 --     corresponding index value when @srcAccelerationStructure@ was last
---     built.
+--     built
 --
 -- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-primitiveCount-03769#
 --     For each 'AccelerationStructureBuildRangeInfoKHR' referenced by this
 --     command, its @primitiveCount@ member /must/ have the same value
---     which was specified when @srcAccelerationStructure@ was last built.
+--     which was specified when @srcAccelerationStructure@ was last built
 --
 -- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-firstVertex-03770#
 --     For each 'AccelerationStructureBuildRangeInfoKHR' referenced by this
 --     command, if the corresponding geometry uses indices, its
 --     @firstVertex@ member /must/ have the same value which was specified
---     when @srcAccelerationStructure@ was last built.
+--     when @srcAccelerationStructure@ was last built
 --
 -- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03801# For
 --     each element of @pInfos@[i].@pGeometries@ or
@@ -3529,7 +3520,8 @@
 --     @geometry.triangles.vertexData@, @geometry.triangles.indexData@,
 --     @geometry.triangles.transformData@, @geometry.aabbs.data@, and
 --     @geometry.instances.data@ members of all @pInfos@[i].@pGeometries@
---     and @pInfos@[i].@ppGeometries@ /must/ have been created with the
+--     and @pInfos@[i].@ppGeometries@ are queried /must/ have been created
+--     with the
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR'
 --     usage flag
 --
@@ -3709,7 +3701,7 @@
 -- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03646#
 --     For any element of @pIndirectDeviceAddresses@[i], all device
 --     addresses between @pIndirectDeviceAddresses@[i] and
---     @pIndirectDeviceAddresses@[i] + (@pInfos@[i]→geometryCount ×
+--     @pIndirectDeviceAddresses@[i] + (@pInfos@[i].@geometryCount@ ×
 --     @pIndirectStrides@[i]) - 1 /must/ be in the buffer device address
 --     range of the same buffer
 --
@@ -3817,22 +3809,23 @@
                                           => -- | @commandBuffer@ is the command buffer into which the command will be
                                              -- recorded.
                                              CommandBuffer
-                                          -> -- | @pInfos@ is an array of @infoCount@
+                                          -> -- | @pInfos@ is a pointer to an array of @infoCount@
                                              -- 'AccelerationStructureBuildGeometryInfoKHR' structures defining the
                                              -- geometry used to build each acceleration structure.
                                              ("infos" ::: Vector AccelerationStructureBuildGeometryInfoKHR)
-                                          -> -- | @pIndirectDeviceAddresses@ is an array of @infoCount@ buffer device
-                                             -- addresses which point to @pInfos@[i]→@geometryCount@
+                                          -> -- | @pIndirectDeviceAddresses@ is a pointer to an array of @infoCount@
+                                             -- buffer device addresses which point to @pInfos@[i].@geometryCount@
                                              -- 'AccelerationStructureBuildRangeInfoKHR' structures defining dynamic
                                              -- offsets to the addresses where geometry data is stored, as defined by
                                              -- @pInfos@[i].
                                              ("indirectDeviceAddresses" ::: Vector DeviceAddress)
-                                          -> -- | @pIndirectStrides@ is an array of @infoCount@ byte strides between
-                                             -- elements of @pIndirectDeviceAddresses@.
+                                          -> -- | @pIndirectStrides@ is a pointer to an array of @infoCount@ byte strides
+                                             -- between elements of @pIndirectDeviceAddresses@.
                                              ("indirectStrides" ::: Vector Word32)
-                                          -> -- | @ppMaxPrimitiveCounts@ is an array of @infoCount@ arrays of
-                                             -- @pInfo@[i]→@geometryCount@ values indicating the maximum number of
-                                             -- primitives that will be built by this command for each geometry.
+                                          -> -- | @ppMaxPrimitiveCounts@ is a pointer to an array of @infoCount@ pointers
+                                             -- to arrays of @pInfos@[i].@geometryCount@ values indicating the maximum
+                                             -- number of primitives that will be built by this command for each
+                                             -- geometry.
                                              ("maxPrimitiveCounts" ::: Vector (Vector Word32))
                                           -> io ()
 cmdBuildAccelerationStructuresIndirectKHR commandBuffer infos indirectDeviceAddresses indirectStrides maxPrimitiveCounts = liftIO . evalContT $ do
@@ -4002,12 +3995,6 @@
 --     'GEOMETRY_TYPE_INSTANCES_KHR' in any other element of @pInfos@,
 --     which is accessed by this command
 --
--- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03666# For each
---     element of @pInfos@, if its @mode@ member is
---     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its
---     @srcAccelerationStructure@ member /must/ not be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
 -- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03667# For each
 --     element of @pInfos@, if its @mode@ member is
 --     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its
@@ -4028,19 +4015,19 @@
 --     element of @pInfos@, if its @mode@ member is
 --     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @geometryCount@
 --     member /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built.
+--     @srcAccelerationStructure@ was last built
 --
 -- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03759# For each
 --     element of @pInfos@, if its @mode@ member is
 --     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @flags@ member
 --     /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built.
+--     @srcAccelerationStructure@ was last built
 --
 -- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03760# For each
 --     element of @pInfos@, if its @mode@ member is
 --     'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR', its @type@ member
 --     /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built.
+--     @srcAccelerationStructure@ was last built
 --
 -- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03761# For each
 --     element of @pInfos@, if its @mode@ member is
@@ -4048,7 +4035,7 @@
 --     'AccelerationStructureGeometryKHR' structure referred to by its
 --     @pGeometries@ or @ppGeometries@ members, its @geometryType@ member
 --     /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built.
+--     @srcAccelerationStructure@ was last built
 --
 -- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03762# For each
 --     element of @pInfos@, if its @mode@ member is
@@ -4056,7 +4043,7 @@
 --     'AccelerationStructureGeometryKHR' structure referred to by its
 --     @pGeometries@ or @ppGeometries@ members, its @flags@ member /must/
 --     have the same value which was specified when
---     @srcAccelerationStructure@ was last built.
+--     @srcAccelerationStructure@ was last built
 --
 -- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03763# For each
 --     element of @pInfos@, if its @mode@ member is
@@ -4065,7 +4052,7 @@
 --     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
 --     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.vertexFormat@
 --     member /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built.
+--     @srcAccelerationStructure@ was last built
 --
 -- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03764# For each
 --     element of @pInfos@, if its @mode@ member is
@@ -4074,7 +4061,7 @@
 --     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
 --     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.maxVertex@
 --     member /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built.
+--     @srcAccelerationStructure@ was last built
 --
 -- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03765# For each
 --     element of @pInfos@, if its @mode@ member is
@@ -4083,7 +4070,7 @@
 --     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
 --     'GEOMETRY_TYPE_TRIANGLES_KHR', its @geometry.triangles.indexType@
 --     member /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built.
+--     @srcAccelerationStructure@ was last built
 --
 -- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03766# For each
 --     element of @pInfos@, if its @mode@ member is
@@ -4092,7 +4079,7 @@
 --     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
 --     'GEOMETRY_TYPE_TRIANGLES_KHR', if its
 --     @geometry.triangles.transformData@ member was NULL when
---     @srcAccelerationStructure@ was last built, then it must be NULL.
+--     @srcAccelerationStructure@ was last built, then it /must/ be NULL
 --
 -- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03767# For each
 --     element of @pInfos@, if its @mode@ member is
@@ -4101,7 +4088,7 @@
 --     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
 --     'GEOMETRY_TYPE_TRIANGLES_KHR', if its
 --     @geometry.triangles.transformData@ member was not NULL when
---     @srcAccelerationStructure@ was last built, then it may not be NULL.
+--     @srcAccelerationStructure@ was last built, then it may not be NULL
 --
 -- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03768# For each
 --     element of @pInfos@, if its @mode@ member is
@@ -4110,20 +4097,20 @@
 --     @pGeometries@ or @ppGeometries@ members, if @geometryType@ is
 --     'GEOMETRY_TYPE_TRIANGLES_KHR', and @geometry.triangles.indexType@ is
 --     not 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then the
---     value of each index referenced index must be the same as the
+--     value of each index referenced /must/ be the same as the
 --     corresponding index value when @srcAccelerationStructure@ was last
---     built.
+--     built
 --
 -- -   #VUID-vkBuildAccelerationStructuresKHR-primitiveCount-03769# For
 --     each 'AccelerationStructureBuildRangeInfoKHR' referenced by this
 --     command, its @primitiveCount@ member /must/ have the same value
---     which was specified when @srcAccelerationStructure@ was last built.
+--     which was specified when @srcAccelerationStructure@ was last built
 --
 -- -   #VUID-vkBuildAccelerationStructuresKHR-firstVertex-03770# For each
 --     'AccelerationStructureBuildRangeInfoKHR' referenced by this command,
 --     if the corresponding geometry uses indices, its @firstVertex@ member
 --     /must/ have the same value which was specified when
---     @srcAccelerationStructure@ was last built.
+--     @srcAccelerationStructure@ was last built
 --
 -- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03801# For each
 --     element of @pInfos@[i].@pGeometries@ or @pInfos@[i].@ppGeometries@
@@ -4316,12 +4303,12 @@
                                   -- 'AccelerationStructureBuildGeometryInfoKHR' structures defining the
                                   -- geometry used to build each acceleration structure.
                                   ("infos" ::: Vector AccelerationStructureBuildGeometryInfoKHR)
-                               -> -- | @ppBuildRangeInfos@ is an array of @infoCount@ pointers to arrays of
-                                  -- 'AccelerationStructureBuildRangeInfoKHR' structures. Each
-                                  -- @ppBuildRangeInfos@[i] is an array of @pInfos@[i].@geometryCount@
-                                  -- 'AccelerationStructureBuildRangeInfoKHR' structures defining dynamic
-                                  -- offsets to the addresses where geometry data is stored, as defined by
-                                  -- @pInfos@[i].
+                               -> -- | @ppBuildRangeInfos@ is a pointer to an array of @infoCount@ pointers to
+                                  -- arrays of 'AccelerationStructureBuildRangeInfoKHR' structures. Each
+                                  -- @ppBuildRangeInfos@[i] is a pointer to an array of
+                                  -- @pInfos@[i].@geometryCount@ 'AccelerationStructureBuildRangeInfoKHR'
+                                  -- structures defining dynamic offsets to the addresses where geometry data
+                                  -- is stored, as defined by @pInfos@[i].
                                   ("buildRangeInfos" ::: Vector (Vector AccelerationStructureBuildRangeInfoKHR))
                                -> io (Result)
 buildAccelerationStructuresKHR device deferredOperation infos buildRangeInfos = liftIO . evalContT $ do
@@ -4362,13 +4349,13 @@
 -- structure building.
 --
 -- If the acceleration structure was created with a non-zero value of
--- 'AccelerationStructureCreateInfoKHR'::@deviceAddress@ the return value
+-- 'AccelerationStructureCreateInfoKHR'::@deviceAddress@, the return value
 -- will be the same address.
 --
 -- If the acceleration structure was created with a @type@ of
--- 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR' the returned address /must/ be
--- consistent with the relative offset to other acceleration structures of
--- @type@ of 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR' allocated with the
+-- 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR', the returned address /must/
+-- be consistent with the relative offset to other acceleration structures
+-- with @type@ 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR' allocated with the
 -- same 'Vulkan.Core10.Handles.Buffer'. That is, the difference in returned
 -- addresses between the two /must/ be the same as the difference in
 -- offsets provided at acceleration structure creation.
@@ -4402,7 +4389,7 @@
 -- 'Vulkan.Core10.Handles.Device'
 getAccelerationStructureDeviceAddressKHR :: forall io
                                           . (MonadIO io)
-                                         => -- | @device@ is the logical device that the accelerationStructure was
+                                         => -- | @device@ is the logical device that the acceleration structure was
                                             -- created on.
                                             Device
                                          -> -- | @pInfo@ is a pointer to a 'AccelerationStructureDeviceAddressInfoKHR'
@@ -4585,7 +4572,7 @@
 
 
 -- | VkWriteDescriptorSetAccelerationStructureKHR - Structure specifying
--- acceleration structure descriptor info
+-- acceleration structure descriptor information
 --
 -- == Valid Usage
 --
@@ -4602,7 +4589,7 @@
 -- -   #VUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-03580#
 --     If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
---     feature is not enabled, each member of @pAccelerationStructures@
+--     feature is not enabled, each element of @pAccelerationStructures@
 --     /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
 --
 -- == Valid Usage (Implicit)
@@ -4625,7 +4612,9 @@
 -- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data WriteDescriptorSetAccelerationStructureKHR = WriteDescriptorSetAccelerationStructureKHR
-  { -- | @pAccelerationStructures@ are the acceleration structures to update.
+  { -- | @pAccelerationStructures@ is a pointer to an array of
+    -- 'Vulkan.Extensions.Handles.AccelerationStructureKHR' structures
+    -- specifying the acceleration structures to update.
     accelerationStructures :: Vector AccelerationStructureKHR }
   deriving (Typeable)
 #if defined(GENERIC_INSTANCES)
@@ -4669,18 +4658,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceAccelerationStructureFeaturesKHR'
--- structure describe the following features:
+-- This structure describes the following features:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceAccelerationStructureFeaturesKHR' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceAccelerationStructureFeaturesKHR' /can/ also be used in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable
--- the features.
+-- 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. 'PhysicalDeviceAccelerationStructureFeaturesKHR' /can/ also
+-- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
+-- to selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
@@ -4781,9 +4771,12 @@
 -- = Description
 --
 -- If the 'PhysicalDeviceAccelerationStructurePropertiesKHR' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- 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.
 --
 -- Limits specified by this structure /must/ match those specified with the
 -- same name in
@@ -5136,23 +5129,6 @@
 -- | VkAccelerationStructureGeometryKHR - Structure specifying geometries to
 -- be built into an acceleration structure
 --
--- == Valid Usage
---
--- -   #VUID-VkAccelerationStructureGeometryKHR-geometryType-03541# If
---     @geometryType@ is 'GEOMETRY_TYPE_AABBS_KHR', the @aabbs@ member of
---     @geometry@ /must/ be a valid
---     'AccelerationStructureGeometryAabbsDataKHR' structure
---
--- -   #VUID-VkAccelerationStructureGeometryKHR-geometryType-03542# If
---     @geometryType@ is 'GEOMETRY_TYPE_TRIANGLES_KHR', the @triangles@
---     member of @geometry@ /must/ be a valid
---     'AccelerationStructureGeometryTrianglesDataKHR' structure
---
--- -   #VUID-VkAccelerationStructureGeometryKHR-geometryType-03543# If
---     @geometryType@ is 'GEOMETRY_TYPE_INSTANCES_KHR', the @instances@
---     member of @geometry@ /must/ be a valid
---     'AccelerationStructureGeometryInstancesDataKHR' structure
---
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkAccelerationStructureGeometryKHR-sType-sType# @sType@ /must/
@@ -5356,12 +5332,12 @@
   , -- | @mode@ is a 'BuildAccelerationStructureModeKHR' value specifying the
     -- type of operation to perform.
     mode :: BuildAccelerationStructureModeKHR
-  , -- | @srcAccelerationStructure@ points to an existing acceleration structure
-    -- that is to be used to update the @dst@ acceleration structure when
-    -- @mode@ is 'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR'.
+  , -- | @srcAccelerationStructure@ is a pointer to an existing acceleration
+    -- structure that is to be used to update the @dst@ acceleration structure
+    -- when @mode@ is 'BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR'.
     srcAccelerationStructure :: AccelerationStructureKHR
-  , -- | @dstAccelerationStructure@ points to the target acceleration structure
-    -- for the build.
+  , -- | @dstAccelerationStructure@ is a pointer to the target acceleration
+    -- structure for the build.
     dstAccelerationStructure :: AccelerationStructureKHR
   , -- | @pGeometries@ is a pointer to an array of
     -- 'AccelerationStructureGeometryKHR' structures.
@@ -5470,7 +5446,7 @@
 --
 -- -   #VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03657#
 --     For geometries of type 'GEOMETRY_TYPE_TRIANGLES_KHR', if the
---     geometry doesn’t use indices, the offset @primitiveOffset@ from
+--     geometry does not use indices, the offset @primitiveOffset@ from
 --     'AccelerationStructureGeometryTrianglesDataKHR'::@vertexData@ /must/
 --     be a multiple of the component size of
 --     'AccelerationStructureGeometryTrianglesDataKHR'::@vertexFormat@
@@ -5581,7 +5557,7 @@
 -- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT'
 -- flag to all buffers that use
 -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT',
--- and
+-- and will add
 -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT'
 -- to all buffers used as storage for an acceleration structure where
 -- @deviceAddress@ is not zero. During capture the tool will save the
@@ -5921,8 +5897,8 @@
 --
 -- = Description
 --
--- The C language spec does not define the ordering of bit-fields, but in
--- practice, this struct produces the correct layout with existing
+-- The C language specification does not define the ordering of bit-fields,
+-- but in practice, this struct produces the correct layout with existing
 -- compilers. The intended bit pattern is for the following:
 --
 -- If a compiler produces code that diverges from that pattern,
@@ -5942,7 +5918,7 @@
     -- to ray shaders in the @InstanceCustomIndexKHR@ built-in.
     --
     -- @instanceCustomIndex@ and @mask@ occupy the same memory as if a single
-    -- @int32_t@ was specified in their place
+    -- @uint32_t@ was specified in their place
     --
     -- -   @instanceCustomIndex@ occupies the 24 least significant bits of that
     --     memory
@@ -5956,7 +5932,7 @@
     -- calculating the hit shader binding table index.
     --
     -- @instanceShaderBindingTableRecordOffset@ and @flags@ occupy the same
-    -- memory as if a single @int32_t@ was specified in their place
+    -- memory as if a single @uint32_t@ was specified in their place
     --
     -- -   @instanceShaderBindingTableRecordOffset@ occupies the 24 least
     --     significant bits of that memory
@@ -6703,8 +6679,8 @@
 pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = BuildAccelerationStructureFlagBitsKHR 0x00000008
 -- | 'BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR' indicates that this
 -- acceleration structure /should/ minimize the size of the scratch memory
--- and the final result build, potentially at the expense of build time or
--- trace performance.
+-- and the final result acceleration structure, potentially at the expense
+-- of build time or trace performance.
 pattern BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR        = BuildAccelerationStructureFlagBitsKHR 0x00000010
 
 conNameBuildAccelerationStructureFlagBitsKHR :: String
@@ -7043,11 +7019,12 @@
 newtype AccelerationStructureCompatibilityKHR = AccelerationStructureCompatibilityKHR Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
--- | 'ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR' when the
--- @pVersion@ version acceleration structure is compatibile with @device@.
+-- | 'ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR' if the
+-- @pVersionData@ version acceleration structure is compatible with
+-- @device@.
 pattern ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR   = AccelerationStructureCompatibilityKHR 0
--- | 'ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR' when the
--- @pVersion@ version acceleration structure is not compatibile with
+-- | 'ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR' if the
+-- @pVersionData@ version acceleration structure is not compatible with
 -- @device@.
 pattern ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = AccelerationStructureCompatibilityKHR 1
 {-# complete ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR,
diff --git a/src/Vulkan/Extensions/VK_KHR_acceleration_structure.hs-boot b/src/Vulkan/Extensions/VK_KHR_acceleration_structure.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_acceleration_structure.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_acceleration_structure.hs-boot
@@ -466,7 +466,7 @@
 --
 --     -   'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV'
 --         → 'AccelerationStructureCreateInfoKHR' (reshuffle geometry
---         layout\/info)
+--         layout\/information)
 --
 --     -   'Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV'
 --         → 'PhysicalDeviceAccelerationStructurePropertiesKHR' (for
@@ -486,7 +486,7 @@
 --
 --     -   'Vulkan.Extensions.VK_NV_ray_tracing.createAccelerationStructureNV'
 --         → 'createAccelerationStructureKHR' (device address, different
---         geometry layout\/info)
+--         geometry layout\/information)
 --
 --     -   'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureMemoryRequirementsNV'
 --         (deleted - replaced by allocating on top of
@@ -755,7 +755,7 @@
 --
 --     -   add a new
 --         'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR'
---         buffer usage such buffers
+--         buffer usage for such buffers
 --
 --     -   add a new 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR' acceleration
 --         structure type for layering
@@ -786,12 +786,12 @@
 --
 -- (5) What is 'ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR' for?
 --
--- RESOLVED: It is primarily intended for API layering. In DXR, the
+-- __RESOLVED__: It is primarily intended for API layering. In DXR, the
 -- acceleration structure is basically just a buffer in a special layout,
 -- and you don’t know at creation time whether it will be used as a top or
 -- bottom level acceleration structure. We thus added a generic
 -- acceleration structure type whose type is unknown at creation time, but
--- is specified at build type instead. Applications which are written
+-- is specified at build time instead. Applications which are written
 -- directly for Vulkan should not use it.
 --
 -- == Version History
@@ -815,7 +815,7 @@
 --         better match its type (!3523)
 --
 --     -   Allow VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS for pipeline
---         creation if shader group handles cannot be re-used. (!3523)
+--         creation if shader group handles cannot be reused (!3523)
 --
 --     -   update documentation for the
 --         VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS error code and add
diff --git a/src/Vulkan/Extensions/VK_KHR_buffer_device_address.hs b/src/Vulkan/Extensions/VK_KHR_buffer_device_address.hs
--- a/src/Vulkan/Extensions/VK_KHR_buffer_device_address.hs
+++ b/src/Vulkan/Extensions/VK_KHR_buffer_device_address.hs
@@ -79,8 +79,8 @@
 -- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_physical_storage_buffer.html SPV_KHR_physical_storage_buffer>
 -- SPIR-V extension.
 --
--- Another way to describe this extension is that it adds \"pointers to
--- buffer memory in shaders\". By calling
+-- Another way to describe this extension is that it adds “pointers to
+-- buffer memory in shaders”. By calling
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'
 -- with a 'Vulkan.Core10.Handles.Buffer', it will return a
 -- 'Vulkan.Core10.FundamentalTypes.DeviceAddress' value which represents
diff --git a/src/Vulkan/Extensions/VK_KHR_copy_commands2.hs b/src/Vulkan/Extensions/VK_KHR_copy_commands2.hs
--- a/src/Vulkan/Extensions/VK_KHR_copy_commands2.hs
+++ b/src/Vulkan/Extensions/VK_KHR_copy_commands2.hs
@@ -28,14 +28,14 @@
 --
 -- == Other Extension Metadata
 --
--- [Last Modified Date]
+-- [__Last Modified Date__]
 --     2020-07-06
 --
 -- [__Interactions and External Dependencies__]
 --
 --     -   None
 --
--- [Contributors]
+-- [__Contributors__]
 --
 --     -   Jeff Leger, Qualcomm
 --
@@ -56,10 +56,10 @@
 -- The following extensible copy commands are introduced with this
 -- extension: 'cmdCopyBuffer2KHR', 'cmdCopyImage2KHR',
 -- 'cmdCopyBufferToImage2KHR', 'cmdCopyImageToBuffer2KHR',
--- 'cmdBlitImage2KHR', and 'cmdResolveImage2KHR'. Each command
--- contain@*Info2KHR@ structure parameter that includes @sType@\/@pNext@
--- members. Lower level structures that describe each region to be copied
--- are also extended with @sType@\/@pNext@ members.
+-- 'cmdBlitImage2KHR', and 'cmdResolveImage2KHR'. Each command contains an
+-- @*Info2KHR@ structure parameter that includes @sType@\/@pNext@ members.
+-- Lower level structures that describe each region to be copied are also
+-- extended with @sType@\/@pNext@ members.
 --
 -- == New Commands
 --
@@ -701,7 +701,7 @@
                          => -- | @commandBuffer@ is the command buffer into which the command will be
                             -- recorded.
                             CommandBuffer
-                         -> -- | @pCopyImageToBufferInfo@ is a pointer to a 'cmdCopyImageToBuffer2KHR'
+                         -> -- | @pCopyImageToBufferInfo@ is a pointer to a 'CopyImageToBufferInfo2KHR'
                             -- structure describing the copy parameters.
                             CopyImageToBufferInfo2KHR
                          -> io ()
@@ -1672,12 +1672,12 @@
 --
 -- -   #VUID-VkCopyImageInfo2KHR-srcImage-04443# If @srcImage@ is of type
 --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element
---     of @pRegions@, @srcSubresource.baseArrayLayer@ /must/ be @0@ and and
+--     of @pRegions@, @srcSubresource.baseArrayLayer@ /must/ be @0@ and
 --     @srcSubresource.layerCount@ /must/ be @1@
 --
 -- -   #VUID-VkCopyImageInfo2KHR-dstImage-04444# If @dstImage@ is of type
 --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element
---     of @pRegions@, @dstSubresource.baseArrayLayer@ /must/ be @0@ and and
+--     of @pRegions@, @dstSubresource.baseArrayLayer@ /must/ be @0@ and
 --     @dstSubresource.layerCount@ /must/ be @1@
 --
 -- -   #VUID-VkCopyImageInfo2KHR-aspectMask-00142# For each element of
@@ -2080,55 +2080,55 @@
 --     present in @dstImage@
 --
 -- -   #VUID-VkBlitImageInfo2KHR-srcOffset-00243# For each element of
---     @pRegions@, @srcOffset@[0].x and @srcOffset@[1].x /must/ both be
+--     @pRegions@, @srcOffsets@[0].x and @srcOffsets@[1].x /must/ both be
 --     greater than or equal to @0@ and less than or equal to the width of
 --     the specified @srcSubresource@ of @srcImage@
 --
 -- -   #VUID-VkBlitImageInfo2KHR-srcOffset-00244# For each element of
---     @pRegions@, @srcOffset@[0].y and @srcOffset@[1].y /must/ both be
+--     @pRegions@, @srcOffsets@[0].y and @srcOffsets@[1].y /must/ both be
 --     greater than or equal to @0@ and less than or equal to the height of
 --     the specified @srcSubresource@ of @srcImage@
 --
 -- -   #VUID-VkBlitImageInfo2KHR-srcImage-00245# If @srcImage@ is of type
 --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
---     of @pRegions@, @srcOffset@[0].y /must/ be @0@ and @srcOffset@[1].y
+--     of @pRegions@, @srcOffsets@[0].y /must/ be @0@ and @srcOffsets@[1].y
 --     /must/ be @1@
 --
 -- -   #VUID-VkBlitImageInfo2KHR-srcOffset-00246# For each element of
---     @pRegions@, @srcOffset@[0].z and @srcOffset@[1].z /must/ both be
+--     @pRegions@, @srcOffsets@[0].z and @srcOffsets@[1].z /must/ both be
 --     greater than or equal to @0@ and less than or equal to the depth of
 --     the specified @srcSubresource@ of @srcImage@
 --
 -- -   #VUID-VkBlitImageInfo2KHR-srcImage-00247# If @srcImage@ is of type
 --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or
 --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
---     of @pRegions@, @srcOffset@[0].z /must/ be @0@ and @srcOffset@[1].z
+--     of @pRegions@, @srcOffsets@[0].z /must/ be @0@ and @srcOffsets@[1].z
 --     /must/ be @1@
 --
 -- -   #VUID-VkBlitImageInfo2KHR-dstOffset-00248# For each element of
---     @pRegions@, @dstOffset@[0].x and @dstOffset@[1].x /must/ both be
+--     @pRegions@, @dstOffsets@[0].x and @dstOffsets@[1].x /must/ both be
 --     greater than or equal to @0@ and less than or equal to the width of
 --     the specified @dstSubresource@ of @dstImage@
 --
 -- -   #VUID-VkBlitImageInfo2KHR-dstOffset-00249# For each element of
---     @pRegions@, @dstOffset@[0].y and @dstOffset@[1].y /must/ both be
+--     @pRegions@, @dstOffsets@[0].y and @dstOffsets@[1].y /must/ both be
 --     greater than or equal to @0@ and less than or equal to the height of
 --     the specified @dstSubresource@ of @dstImage@
 --
 -- -   #VUID-VkBlitImageInfo2KHR-dstImage-00250# If @dstImage@ is of type
 --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
---     of @pRegions@, @dstOffset@[0].y /must/ be @0@ and @dstOffset@[1].y
+--     of @pRegions@, @dstOffsets@[0].y /must/ be @0@ and @dstOffsets@[1].y
 --     /must/ be @1@
 --
 -- -   #VUID-VkBlitImageInfo2KHR-dstOffset-00251# For each element of
---     @pRegions@, @dstOffset@[0].z and @dstOffset@[1].z /must/ both be
+--     @pRegions@, @dstOffsets@[0].z and @dstOffsets@[1].z /must/ both be
 --     greater than or equal to @0@ and less than or equal to the depth of
 --     the specified @dstSubresource@ of @dstImage@
 --
 -- -   #VUID-VkBlitImageInfo2KHR-dstImage-00252# If @dstImage@ is of type
 --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or
 --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
---     of @pRegions@, @dstOffset@[0].z /must/ be @0@ and @dstOffset@[1].z
+--     of @pRegions@, @dstOffsets@[0].z /must/ be @0@ and @dstOffsets@[1].z
 --     /must/ be @1@
 --
 -- -   #VUID-VkBlitImageInfo2KHR-pRegions-04561# If any element of
@@ -2376,7 +2376,7 @@
 -- -   #VUID-VkCopyBufferToImageInfo2KHR-imageOffset-00197# For each
 --     element of @pRegions@ not containing
 --     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
---     in its @pNext@ chain, , @imageOffset.x@ and (@imageExtent.width@ +
+--     in its @pNext@ chain, @imageOffset.x@ and (@imageExtent.width@ +
 --     @imageOffset.x@) /must/ both be greater than or equal to @0@ and
 --     less than or equal to the width of the specified @imageSubresource@
 --     of @dstImage@ where this refers to the width of the /plane/ of the
@@ -2386,7 +2386,7 @@
 -- -   #VUID-VkCopyBufferToImageInfo2KHR-imageOffset-00198# For each
 --     element of @pRegions@ not containing
 --     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
---     in its @pNext@ chain, , @imageOffset.y@ and (imageExtent.height +
+--     in its @pNext@ chain, @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 @imageSubresource@
 --     of @dstImage@ where this refers to the height of the /plane/ of the
@@ -2413,7 +2413,7 @@
 --     @imageExtent.height@ /must/ be @1@
 --
 -- -   #VUID-VkCopyBufferToImageInfo2KHR-imageOffset-00200# For each
---     element of @pRegions@, @imageOffset.z@ and (imageExtent.depth +
+--     element of @pRegions@, @imageOffset.z@ and (@imageExtent.depth@ +
 --     @imageOffset.z@) /must/ both be greater than or equal to @0@ and
 --     less than or equal to the depth of the specified @imageSubresource@
 --     of @dstImage@
@@ -2734,7 +2734,7 @@
 -- -   #VUID-VkCopyImageToBufferInfo2KHR-imageOffset-00198# For each
 --     element of @pRegions@ not containing
 --     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
---     in its @pNext@ chain, , @imageOffset.y@ and (imageExtent.height +
+--     in its @pNext@ chain, , @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 @imageSubresource@
 --     of @srcImage@ where this refers to the height of the /plane/ of the
@@ -2761,7 +2761,7 @@
 --     @imageExtent.height@ /must/ be @1@
 --
 -- -   #VUID-VkCopyImageToBufferInfo2KHR-imageOffset-00200# For each
---     element of @pRegions@, @imageOffset.z@ and (imageExtent.depth +
+--     element of @pRegions@, @imageOffset.z@ and (@imageExtent.depth@ +
 --     @imageOffset.z@) /must/ both be greater than or equal to @0@ and
 --     less than or equal to the depth of the specified @imageSubresource@
 --     of {imageparam}
diff --git a/src/Vulkan/Extensions/VK_KHR_copy_commands2.hs-boot b/src/Vulkan/Extensions/VK_KHR_copy_commands2.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_copy_commands2.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_copy_commands2.hs-boot
@@ -28,14 +28,14 @@
 --
 -- == Other Extension Metadata
 --
--- [Last Modified Date]
+-- [__Last Modified Date__]
 --     2020-07-06
 --
 -- [__Interactions and External Dependencies__]
 --
 --     -   None
 --
--- [Contributors]
+-- [__Contributors__]
 --
 --     -   Jeff Leger, Qualcomm
 --
@@ -56,10 +56,10 @@
 -- The following extensible copy commands are introduced with this
 -- extension: 'cmdCopyBuffer2KHR', 'cmdCopyImage2KHR',
 -- 'cmdCopyBufferToImage2KHR', 'cmdCopyImageToBuffer2KHR',
--- 'cmdBlitImage2KHR', and 'cmdResolveImage2KHR'. Each command
--- contain@*Info2KHR@ structure parameter that includes @sType@\/@pNext@
--- members. Lower level structures that describe each region to be copied
--- are also extended with @sType@\/@pNext@ members.
+-- 'cmdBlitImage2KHR', and 'cmdResolveImage2KHR'. Each command contains an
+-- @*Info2KHR@ structure parameter that includes @sType@\/@pNext@ members.
+-- Lower level structures that describe each region to be copied are also
+-- extended with @sType@\/@pNext@ members.
 --
 -- == New Commands
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_create_renderpass2.hs b/src/Vulkan/Extensions/VK_KHR_create_renderpass2.hs
--- a/src/Vulkan/Extensions/VK_KHR_create_renderpass2.hs
+++ b/src/Vulkan/Extensions/VK_KHR_create_renderpass2.hs
@@ -37,14 +37,14 @@
 --
 -- == Other Extension Metadata
 --
--- [Last Modified Date]
+-- [__Last Modified Date__]
 --     2018-02-07
 --
 -- [__Interactions and External Dependencies__]
 --
 --     -   Promoted to Vulkan 1.2 Core
 --
--- [Contributors]
+-- [__Contributors__]
 --
 --     -   Tobias Hector
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_dedicated_allocation.hs b/src/Vulkan/Extensions/VK_KHR_dedicated_allocation.hs
--- a/src/Vulkan/Extensions/VK_KHR_dedicated_allocation.hs
+++ b/src/Vulkan/Extensions/VK_KHR_dedicated_allocation.hs
@@ -200,7 +200,7 @@
 --
 -- -   Revision 3, 2017-07-31 (Jason Ekstrand)
 --
---     -   Clarify that memory objects created with
+--     -   Clarify that memory objects allocated with
 --         VkMemoryDedicatedAllocateInfoKHR can only have the specified
 --         resource bound and no others.
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_deferred_host_operations.hs b/src/Vulkan/Extensions/VK_KHR_deferred_host_operations.hs
--- a/src/Vulkan/Extensions/VK_KHR_deferred_host_operations.hs
+++ b/src/Vulkan/Extensions/VK_KHR_deferred_host_operations.hs
@@ -137,6 +137,43 @@
 -- >     }
 -- > );
 --
+-- The following example illustrates extracting concurrency from a single
+-- deferred operation:
+--
+-- > // create a deferred operation
+-- > VkDeferredOperationKHR hOp;
+-- > VkResult result = vkCreateDeferredOperationKHR(device, pCallbacks, &hOp);
+-- > assert(result == VK_SUCCESS);
+-- >
+-- > result = vkDoSomethingExpensive(device, hOp, ...);
+-- > assert( result == VK_OPERATION_DEFERRED_KHR );
+-- >
+-- > // Query the maximum amount of concurrency and clamp to the desired maximum
+-- > uint32_t numLaunches = std::min(vkGetDeferredOperationMaxConcurrencyKHR(device, hOp), maxThreads);
+-- >
+-- > std::vector<std::future<void> > joins;
+-- >
+-- > for (uint32_t i = 0; i < numLaunches; i++) {
+-- >   joins.emplace_back(std::async::launch(
+-- >     [ hOp ] ( )
+-- >     {
+-- >         vkDeferredOperationJoinKHR(device, hOp);
+-- > 		// in a job system, a return of VK_THREAD_IDLE_KHR should queue another
+-- > 		// job, but it's not functionally required
+-- >     }
+-- >   );
+-- > }
+-- >
+-- > for (auto &f : joins) {
+-- >   f.get();
+-- > }
+-- >
+-- > result = vkGetDeferredOperationResultKHR(device, hOp);
+-- >
+-- > // deferred operation is now complete.  'result' indicates success or failure
+-- >
+-- > vkDestroyDeferredOperationKHR(device, hOp, pCallbacks);
+--
 -- The following example shows a subroutine which guarantees completion of
 -- a deferred operation, in the presence of multiple worker threads, and
 -- returns the result of the operation.
@@ -183,13 +220,13 @@
 --
 -- == Issues
 --
--- 1.  Should this entension have a VkPhysicalDevice*FeaturesKHR structure?
+-- 1.  Should this extension have a VkPhysicalDevice*FeaturesKHR structure?
 --
--- RESOLVED: No. This extension does not add any functionality on its own
--- and requires a dependent extension to actually enable functionality and
--- thus there is no value in adding a feature structure. If necessary, any
--- dependent extension could add a feature boolean if it wanted to indicate
--- that it is adding optional deferral support.
+-- __RESOLVED__: No. This extension does not add any functionality on its
+-- own and requires a dependent extension to actually enable functionality
+-- and thus there is no value in adding a feature structure. If necessary,
+-- any dependent extension could add a feature boolean if it wanted to
+-- indicate that it is adding optional deferral support.
 --
 -- == Version History
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_descriptor_update_template.hs b/src/Vulkan/Extensions/VK_KHR_descriptor_update_template.hs
--- a/src/Vulkan/Extensions/VK_KHR_descriptor_update_template.hs
+++ b/src/Vulkan/Extensions/VK_KHR_descriptor_update_template.hs
@@ -54,7 +54,7 @@
 -- == Description
 --
 -- Applications may wish to update a fixed set of descriptors in a large
--- number of descriptors sets very frequently, i.e. during initializaton
+-- number of descriptor sets very frequently, i.e. during initializaton
 -- phase or if it is required to rebuild descriptor sets for each frame.
 -- For those cases it is also not unlikely that all information required to
 -- update a single descriptor set is stored in a single struct. This
diff --git a/src/Vulkan/Extensions/VK_KHR_device_group.hs b/src/Vulkan/Extensions/VK_KHR_device_group.hs
--- a/src/Vulkan/Extensions/VK_KHR_device_group.hs
+++ b/src/Vulkan/Extensions/VK_KHR_device_group.hs
@@ -342,8 +342,8 @@
 --
 -- -   Revision 4, 2017-10-10 (Jeff Bolz)
 --
---     -   Rename \"SFR\" bits and structure members to use the phrase
---         \"split instance bind regions\".
+--     -   Rename “SFR” bits and structure members to use the phrase “split
+--         instance bind regions”.
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_display.hs b/src/Vulkan/Extensions/VK_KHR_display.hs
--- a/src/Vulkan/Extensions/VK_KHR_display.hs
+++ b/src/Vulkan/Extensions/VK_KHR_display.hs
@@ -126,9 +126,9 @@
 --
 -- == Issues
 --
--- 1) Which properties of a mode should be fixed in the mode info vs.
--- settable in some other function when setting the mode? E.g., do we need
--- to double the size of the mode pool to include both stereo and
+-- 1) Which properties of a mode should be fixed in the mode information
+-- vs. settable in some other function when setting the mode? E.g., do we
+-- need to double the size of the mode pool to include both stereo and
 -- non-stereo modes? YUV and RGB scanout even if they both take RGB input
 -- images? BGR vs. RGB input? etc.
 --
@@ -181,9 +181,9 @@
 -- monitor side or in the GPU display engine, making “modes” something of a
 -- relic\/compatibility construct).
 --
--- __PROPOSED RESOLUTION__: Expose both. Display info structures will
--- expose a set of predefined modes, as well as any attributes necessary to
--- construct a customized mode.
+-- __PROPOSED RESOLUTION__: Expose both. Display information structures
+-- will expose a set of predefined modes, as well as any attributes
+-- necessary to construct a customized mode.
 --
 -- 6) Is it fine if we return the display and display mode handles in the
 -- structure used to query their properties?
@@ -204,12 +204,11 @@
 -- __PROPOSED RESOLUTION__: Require specifying a plane explicitly.
 --
 -- 9) Should displays have an associated window system display, such as an
--- @HDC@ or 'Vulkan.Extensions.VK_KHR_xlib_surface.Display'*?
+-- @HDC@ or @Display*@?
 --
 -- __PROPOSED RESOLUTION__: No. Displays are independent of any windowing
--- system in use on the system. Further, neither @HDC@ nor
--- 'Vulkan.Extensions.VK_KHR_xlib_surface.Display'* refer to a physical
--- display object.
+-- system in use on the system. Further, neither @HDC@ nor @Display*@ refer
+-- to a physical display object.
 --
 -- 10) Are displays queried from a physical GPU or from a device instance?
 --
@@ -312,7 +311,7 @@
 --
 --     -   Added functions to query count of display, mode and overlay.
 --
---     -   Added native display handle, which is maybe needed on some
+--     -   Added native display handle, which may be needed on some
 --         platforms to create a native Window.
 --
 -- -   Revision 4, 2015-03-18 (Norbert Nopper)
@@ -320,7 +319,7 @@
 --     -   Removed primary and virtualPostion members (see comment of James
 --         Jones in Bugzilla).
 --
---     -   Added native overlay handle to info structure.
+--     -   Added native overlay handle to information structure.
 --
 --     -   Replaced , with ; in struct.
 --
@@ -328,7 +327,7 @@
 --
 --     -   Added WSI extension suffix to all items.
 --
---     -   Made the whole API more \"Vulkanish\".
+--     -   Made the whole API more “Vulkanish”.
 --
 --     -   Replaced all functions with a single vkGetDisplayInfoKHR
 --         function to better match the rest of the API.
@@ -340,8 +339,8 @@
 --     -   Renamed *Info structures to *Properties.
 --
 --     -   Removed overlayIndex field from VkOverlayProperties as there is
---         an implicit index already as a result of moving to a
---         \"Vulkanish\" API.
+--         an implicit index already as a result of moving to a “Vulkanish”
+--         API.
 --
 --     -   Displays are not get through device, but through physical GPU to
 --         match the rest of the Vulkan API. Also this is something ISVs
@@ -392,14 +391,14 @@
 --         swapchain specifications and the latest Vulkan API.
 --
 --     -   Address overlay planes by their index rather than an object
---         handle and refer to them as \"planes\" rather than \"overlays\"
---         to make it slightly clearer that even a display with no
---         \"overlays\" still has at least one base \"plane\" that images
---         can be displayed on.
+--         handle and refer to them as “planes” rather than “overlays” to
+--         make it slightly clearer that even a display with no “overlays”
+--         still has at least one base “plane” that images can be displayed
+--         on.
 --
 --     -   Updated most of the issues.
 --
---     -   Added an \"extension type\" section to the specification header.
+--     -   Added an “extension type” section to the specification header.
 --
 --     -   Re-used the VK_EXT_KHR_surface surface transform enumerations
 --         rather than redefining them here.
@@ -412,7 +411,7 @@
 --         functions, etc. This makes it compliant with the proposed
 --         standard for Vulkan extensions.
 --
---     -   Switched from \"revision\" to \"version\", including use of the
+--     -   Switched from “revision” to “version”, including use of the
 --         VK_MAKE_VERSION macro in the header file.
 --
 -- -   Revision 14, 2015-09-01 (James Jones)
@@ -443,7 +442,7 @@
 --
 --     -   Removed detailed mode timing data. It was agreed that the mode
 --         extents and refresh rate are sufficient for current use cases.
---         Other information could be added back2 in as an extension if it
+--         Other information could be added back in as an extension if it
 --         is needed in the future.
 --
 --     -   Added support for smart\/persistent\/buffered display devices.
@@ -477,7 +476,7 @@
 --
 -- -   Revision 22, 2015-12-18 (James Jones)
 --
---     -   Added missing \"planeIndex\" parameter to
+--     -   Added missing “planeIndex” parameter to
 --         vkGetDisplayPlaneSupportedDisplaysKHR()
 --
 -- -   Revision 23, 2017-03-13 (James Jones)
@@ -660,11 +659,9 @@
 -- variable is overwritten with the number of structures actually written
 -- to @pProperties@. If the value of @pPropertyCount@ is less than the
 -- number of display devices for @physicalDevice@, at most @pPropertyCount@
--- structures will be written. If @pPropertyCount@ is smaller than the
--- number of display devices available for @physicalDevice@,
--- 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned instead of
--- 'Vulkan.Core10.Enums.Result.SUCCESS' to indicate that not all the
--- available values were returned.
+-- structures will be written, and 'Vulkan.Core10.Enums.Result.INCOMPLETE'
+-- will be returned instead of 'Vulkan.Core10.Enums.Result.SUCCESS', to
+-- indicate that not all the available properties were returned.
 --
 -- == Valid Usage (Implicit)
 --
@@ -816,12 +813,11 @@
 -- set by the user to the number of elements in the @pDisplays@ array, and
 -- on return the variable is overwritten with the number of handles
 -- actually written to @pDisplays@. If the value of @pDisplayCount@ is less
--- than the number of display planes for @physicalDevice@, at most
--- @pDisplayCount@ handles will be written. If @pDisplayCount@ is smaller
--- than the number of displays usable with the specified @planeIndex@ for
--- @physicalDevice@, 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be
--- returned instead of 'Vulkan.Core10.Enums.Result.SUCCESS' to indicate
--- that not all the available values were returned.
+-- than the number of usable display-plane pairs for @physicalDevice@, at
+-- most @pDisplayCount@ handles will be written, and
+-- 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned instead of
+-- 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate that not all the
+-- available pairs were returned.
 --
 -- == Valid Usage
 --
@@ -907,11 +903,10 @@
 -- and on return the variable is overwritten with the number of structures
 -- actually written to @pProperties@. If the value of @pPropertyCount@ is
 -- less than the number of display modes for @physicalDevice@, at most
--- @pPropertyCount@ structures will be written. If @pPropertyCount@ is
--- smaller than the number of display modes available on the specified
--- @display@ for @physicalDevice@, 'Vulkan.Core10.Enums.Result.INCOMPLETE'
--- will be returned instead of 'Vulkan.Core10.Enums.Result.SUCCESS' to
--- indicate that not all the available values were returned.
+-- @pPropertyCount@ structures will be written, and
+-- 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned instead of
+-- 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate that not all the
+-- available display modes were returned.
 --
 -- == Valid Usage (Implicit)
 --
@@ -1039,8 +1034,8 @@
                         PhysicalDevice
                      -> -- | @display@ is the display to create an additional mode for.
                         DisplayKHR
-                     -> -- | @pCreateInfo@ is a 'DisplayModeCreateInfoKHR' structure describing the
-                        -- new mode to create.
+                     -> -- | @pCreateInfo@ is a pointer to a 'DisplayModeCreateInfoKHR' structure
+                        -- describing the new mode to create.
                         DisplayModeCreateInfoKHR
                      -> -- | @pAllocator@ is the allocator used for host memory allocated for the
                         -- display mode object when there is no more specific allocator available
@@ -1109,7 +1104,8 @@
 -- 'DisplayPlaneCapabilitiesKHR', 'Vulkan.Core10.Handles.PhysicalDevice'
 getDisplayPlaneCapabilitiesKHR :: forall io
                                 . (MonadIO io)
-                               => -- | @physicalDevice@ is the physical device associated with @display@
+                               => -- | @physicalDevice@ is the physical device associated with the display
+                                  -- specified by @mode@
                                   PhysicalDevice
                                -> -- | @mode@ is the display mode the application intends to program when using
                                   -- the specified plane. Note this parameter also implicitly specifies a
@@ -1236,11 +1232,11 @@
   { -- | @display@ is a handle that is used to refer to the display described
     -- here. This handle will be valid for the lifetime of the Vulkan instance.
     display :: DisplayKHR
-  , -- | @displayName@ is a pointer to a null-terminated UTF-8 string containing
-    -- the name of the display. Generally, this will be the name provided by
-    -- the display’s EDID. It /can/ be @NULL@ if no suitable name is available.
-    -- If not @NULL@, the memory it points to /must/ remain accessible as long
-    -- as @display@ is valid.
+  , -- | @displayName@ is @NULL@ or a pointer to a null-terminated UTF-8 string
+    -- containing the name of the display. Generally, this will be the name
+    -- provided by the display’s EDID. If @NULL@, no suitable name is
+    -- available. If not @NULL@, the string pointed to /must/ remain accessible
+    -- and unmodified as long as @display@ is valid.
     displayName :: ByteString
   , -- | @physicalDimensions@ describes the physical width and height of the
     -- visible portion of the display, in millimeters.
@@ -1573,16 +1569,16 @@
 -- swapchain’s presentable images on the specified display plane. This is
 -- expressed by returning @minSrcPosition@, @maxSrcPosition@,
 -- @minSrcExtent@, and @maxSrcExtent@ values that indicate a range of
--- possible positions and sizes /may/ be used to specify the region within
--- the presentable images that source pixels will be read from when
+-- possible positions and sizes which /may/ be used to specify the region
+-- within the presentable images that source pixels will be read from when
 -- creating a swapchain on the specified display mode and plane.
 --
 -- Vendors /may/ also support mapping the presentable images’ content to a
 -- subset or superset of the visible region in the specified display mode.
 -- This is expressed by returning @minDstPosition@, @maxDstPosition@,
 -- @minDstExtent@ and @maxDstExtent@ values that indicate a range of
--- possible positions and sizes /may/ be used to describe the region within
--- the display mode that the source pixels will be mapped to.
+-- possible positions and sizes which /may/ be used to describe the region
+-- within the display mode that the source pixels will be mapped to.
 --
 -- Other vendors /may/ support only a 1-1 mapping between pixels in the
 -- presentable images and the display mode. This /may/ be indicated by
@@ -1799,7 +1795,7 @@
   , -- | @alphaMode@ is a 'DisplayPlaneAlphaFlagBitsKHR' value specifying the
     -- type of alpha blending to use.
     alphaMode :: DisplayPlaneAlphaFlagBitsKHR
-  , -- | @imageExtent@ The size of the presentable images to use with the
+  , -- | @imageExtent@ is the size of the presentable images to use with the
     -- surface.
     imageExtent :: Extent2D
   }
diff --git a/src/Vulkan/Extensions/VK_KHR_display.hs-boot b/src/Vulkan/Extensions/VK_KHR_display.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_display.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_display.hs-boot
@@ -126,9 +126,9 @@
 --
 -- == Issues
 --
--- 1) Which properties of a mode should be fixed in the mode info vs.
--- settable in some other function when setting the mode? E.g., do we need
--- to double the size of the mode pool to include both stereo and
+-- 1) Which properties of a mode should be fixed in the mode information
+-- vs. settable in some other function when setting the mode? E.g., do we
+-- need to double the size of the mode pool to include both stereo and
 -- non-stereo modes? YUV and RGB scanout even if they both take RGB input
 -- images? BGR vs. RGB input? etc.
 --
@@ -181,9 +181,9 @@
 -- monitor side or in the GPU display engine, making “modes” something of a
 -- relic\/compatibility construct).
 --
--- __PROPOSED RESOLUTION__: Expose both. Display info structures will
--- expose a set of predefined modes, as well as any attributes necessary to
--- construct a customized mode.
+-- __PROPOSED RESOLUTION__: Expose both. Display information structures
+-- will expose a set of predefined modes, as well as any attributes
+-- necessary to construct a customized mode.
 --
 -- 6) Is it fine if we return the display and display mode handles in the
 -- structure used to query their properties?
@@ -204,12 +204,11 @@
 -- __PROPOSED RESOLUTION__: Require specifying a plane explicitly.
 --
 -- 9) Should displays have an associated window system display, such as an
--- @HDC@ or 'Vulkan.Extensions.VK_KHR_xlib_surface.Display'*?
+-- @HDC@ or @Display*@?
 --
 -- __PROPOSED RESOLUTION__: No. Displays are independent of any windowing
--- system in use on the system. Further, neither @HDC@ nor
--- 'Vulkan.Extensions.VK_KHR_xlib_surface.Display'* refer to a physical
--- display object.
+-- system in use on the system. Further, neither @HDC@ nor @Display*@ refer
+-- to a physical display object.
 --
 -- 10) Are displays queried from a physical GPU or from a device instance?
 --
@@ -312,7 +311,7 @@
 --
 --     -   Added functions to query count of display, mode and overlay.
 --
---     -   Added native display handle, which is maybe needed on some
+--     -   Added native display handle, which may be needed on some
 --         platforms to create a native Window.
 --
 -- -   Revision 4, 2015-03-18 (Norbert Nopper)
@@ -320,7 +319,7 @@
 --     -   Removed primary and virtualPostion members (see comment of James
 --         Jones in Bugzilla).
 --
---     -   Added native overlay handle to info structure.
+--     -   Added native overlay handle to information structure.
 --
 --     -   Replaced , with ; in struct.
 --
@@ -328,7 +327,7 @@
 --
 --     -   Added WSI extension suffix to all items.
 --
---     -   Made the whole API more \"Vulkanish\".
+--     -   Made the whole API more “Vulkanish”.
 --
 --     -   Replaced all functions with a single vkGetDisplayInfoKHR
 --         function to better match the rest of the API.
@@ -340,8 +339,8 @@
 --     -   Renamed *Info structures to *Properties.
 --
 --     -   Removed overlayIndex field from VkOverlayProperties as there is
---         an implicit index already as a result of moving to a
---         \"Vulkanish\" API.
+--         an implicit index already as a result of moving to a “Vulkanish”
+--         API.
 --
 --     -   Displays are not get through device, but through physical GPU to
 --         match the rest of the Vulkan API. Also this is something ISVs
@@ -392,14 +391,14 @@
 --         swapchain specifications and the latest Vulkan API.
 --
 --     -   Address overlay planes by their index rather than an object
---         handle and refer to them as \"planes\" rather than \"overlays\"
---         to make it slightly clearer that even a display with no
---         \"overlays\" still has at least one base \"plane\" that images
---         can be displayed on.
+--         handle and refer to them as “planes” rather than “overlays” to
+--         make it slightly clearer that even a display with no “overlays”
+--         still has at least one base “plane” that images can be displayed
+--         on.
 --
 --     -   Updated most of the issues.
 --
---     -   Added an \"extension type\" section to the specification header.
+--     -   Added an “extension type” section to the specification header.
 --
 --     -   Re-used the VK_EXT_KHR_surface surface transform enumerations
 --         rather than redefining them here.
@@ -412,7 +411,7 @@
 --         functions, etc. This makes it compliant with the proposed
 --         standard for Vulkan extensions.
 --
---     -   Switched from \"revision\" to \"version\", including use of the
+--     -   Switched from “revision” to “version”, including use of the
 --         VK_MAKE_VERSION macro in the header file.
 --
 -- -   Revision 14, 2015-09-01 (James Jones)
@@ -443,7 +442,7 @@
 --
 --     -   Removed detailed mode timing data. It was agreed that the mode
 --         extents and refresh rate are sufficient for current use cases.
---         Other information could be added back2 in as an extension if it
+--         Other information could be added back in as an extension if it
 --         is needed in the future.
 --
 --     -   Added support for smart\/persistent\/buffered display devices.
@@ -477,7 +476,7 @@
 --
 -- -   Revision 22, 2015-12-18 (James Jones)
 --
---     -   Added missing \"planeIndex\" parameter to
+--     -   Added missing “planeIndex” parameter to
 --         vkGetDisplayPlaneSupportedDisplaysKHR()
 --
 -- -   Revision 23, 2017-03-13 (James Jones)
diff --git a/src/Vulkan/Extensions/VK_KHR_display_swapchain.hs b/src/Vulkan/Extensions/VK_KHR_display_swapchain.hs
--- a/src/Vulkan/Extensions/VK_KHR_display_swapchain.hs
+++ b/src/Vulkan/Extensions/VK_KHR_display_swapchain.hs
@@ -85,7 +85,7 @@
 -- already complex enough.
 --
 -- 2) Should the @srcRect@ and @dstRect@ parameters be specified as part of
--- the present command, or at swapchain creation time?
+-- the presentation command, or at swapchain creation time?
 --
 -- __RESOLVED__: As part of the presentation command. This allows moving
 -- and scaling the image on the screen without the need to respecify the
@@ -149,7 +149,7 @@
 --         functions, etc. This makes it compliant with the proposed
 --         standard for Vulkan extensions.
 --
---     -   Switched from \"revision\" to \"version\", including use of the
+--     -   Switched from “revision” to “version”, including use of the
 --         VK_MAKE_VERSION macro in the header file.
 --
 -- -   Revision 3, 2015-09-01 (James Jones)
@@ -434,8 +434,9 @@
 --     'Vulkan.Extensions.VK_KHR_display.DisplayPropertiesKHR' structure
 --     returned by
 --     'Vulkan.Extensions.VK_KHR_display.getPhysicalDeviceDisplayPropertiesKHR'
---     for the display the present operation targets then @persistent@
---     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--     for the display the present operation targets is
+--     'Vulkan.Core10.FundamentalTypes.FALSE', then @persistent@ /must/ be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- == Valid Usage (Implicit)
 --
@@ -456,13 +457,13 @@
   , -- | @dstRect@ is a rectangular region within the visible region of the
     -- swapchain’s display mode. If 'DisplayPresentInfoKHR' is not specified,
     -- this region will be assumed to be the entire visible region of the
-    -- visible region of the swapchain’s mode. If the specified rectangle is a
-    -- subset of the display mode’s visible region, content from display planes
-    -- below the swapchain’s plane will be visible outside the rectangle. If
-    -- there are no planes below the swapchain’s, the area outside the
-    -- specified rectangle will be black. If portions of the specified
-    -- rectangle are outside of the display’s visible region, pixels mapping
-    -- only to those portions of the rectangle will be discarded.
+    -- swapchain’s mode. If the specified rectangle is a subset of the display
+    -- mode’s visible region, content from display planes below the swapchain’s
+    -- plane will be visible outside the rectangle. If there are no planes
+    -- below the swapchain’s, the area outside the specified rectangle will be
+    -- black. If portions of the specified rectangle are outside of the
+    -- display’s visible region, pixels mapping only to those portions of the
+    -- rectangle will be discarded.
     dstRect :: Rect2D
   , -- | @persistent@: If this is 'Vulkan.Core10.FundamentalTypes.TRUE', the
     -- display engine will enable buffered mode on displays that support it.
diff --git a/src/Vulkan/Extensions/VK_KHR_display_swapchain.hs-boot b/src/Vulkan/Extensions/VK_KHR_display_swapchain.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_display_swapchain.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_display_swapchain.hs-boot
@@ -85,7 +85,7 @@
 -- already complex enough.
 --
 -- 2) Should the @srcRect@ and @dstRect@ parameters be specified as part of
--- the present command, or at swapchain creation time?
+-- the presentation command, or at swapchain creation time?
 --
 -- __RESOLVED__: As part of the presentation command. This allows moving
 -- and scaling the image on the screen without the need to respecify the
@@ -149,7 +149,7 @@
 --         functions, etc. This makes it compliant with the proposed
 --         standard for Vulkan extensions.
 --
---     -   Switched from \"revision\" to \"version\", including use of the
+--     -   Switched from “revision” to “version”, including use of the
 --         VK_MAKE_VERSION macro in the header file.
 --
 -- -   Revision 3, 2015-09-01 (James Jones)
diff --git a/src/Vulkan/Extensions/VK_KHR_draw_indirect_count.hs b/src/Vulkan/Extensions/VK_KHR_draw_indirect_count.hs
--- a/src/Vulkan/Extensions/VK_KHR_draw_indirect_count.hs
+++ b/src/Vulkan/Extensions/VK_KHR_draw_indirect_count.hs
@@ -60,12 +60,12 @@
 -- == Description
 --
 -- This extension is based off the @VK_AMD_draw_indirect_count@ extension.
--- This extension allows an application to source the number of draw calls
--- for indirect draw calls from a buffer.
+-- This extension allows an application to source the number of draws for
+-- indirect draw calls from a buffer.
 --
 -- Applications might want to do culling on the GPU via a compute shader
--- prior to the draw. This enables the application to generate arbitrary
--- amounts of draw commands and execute them without host intervention.
+-- prior to drawing. This enables the application to generate an arbitrary
+-- number of drawing commands and execute them without host intervention.
 --
 -- == Promotion to Vulkan 1.2
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_external_fence_fd.hs b/src/Vulkan/Extensions/VK_KHR_external_fence_fd.hs
--- a/src/Vulkan/Extensions/VK_KHR_external_fence_fd.hs
+++ b/src/Vulkan/Extensions/VK_KHR_external_fence_fd.hs
@@ -389,7 +389,9 @@
     -- 'Vulkan.Core11.Enums.FenceImportFlagBits.FenceImportFlagBits' specifying
     -- additional parameters for the fence payload import operation.
     flags :: FenceImportFlags
-  , -- | @handleType@ specifies the type of @fd@.
+  , -- | @handleType@ is a
+    -- 'Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.ExternalFenceHandleTypeFlagBits'
+    -- value specifying the type of @fd@.
     handleType :: ExternalFenceHandleTypeFlagBits
   , -- | @fd@ is the external handle to import.
     fd :: Int32
@@ -501,7 +503,9 @@
 data FenceGetFdInfoKHR = FenceGetFdInfoKHR
   { -- | @fence@ is the fence from which state will be exported.
     fence :: Fence
-  , -- | @handleType@ is the type of handle requested.
+  , -- | @handleType@ is a
+    -- 'Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.ExternalFenceHandleTypeFlagBits'
+    -- value specifying the type of handle requested.
     handleType :: ExternalFenceHandleTypeFlagBits
   }
   deriving (Typeable, Eq)
diff --git a/src/Vulkan/Extensions/VK_KHR_external_fence_win32.hs b/src/Vulkan/Extensions/VK_KHR_external_fence_win32.hs
--- a/src/Vulkan/Extensions/VK_KHR_external_fence_win32.hs
+++ b/src/Vulkan/Extensions/VK_KHR_external_fence_win32.hs
@@ -401,12 +401,14 @@
     -- 'Vulkan.Core11.Enums.FenceImportFlagBits.FenceImportFlagBits' specifying
     -- additional parameters for the fence payload import operation.
     flags :: FenceImportFlags
-  , -- | @handleType@ specifies the type of @handle@.
+  , -- | @handleType@ is a
+    -- 'Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.ExternalFenceHandleTypeFlagBits'
+    -- value specifying the type of @handle@.
     handleType :: ExternalFenceHandleTypeFlagBits
-  , -- | @handle@ is the external handle to import, or @NULL@.
+  , -- | @handle@ is @NULL@ or the external handle to import.
     handle :: HANDLE
-  , -- | @name@ is a null-terminated UTF-16 string naming the underlying
-    -- synchronization primitive to import, or @NULL@.
+  , -- | @name@ is @NULL@ or a null-terminated UTF-16 string naming the
+    -- underlying synchronization primitive to import.
     name :: LPCWSTR
   }
   deriving (Typeable, Eq)
@@ -635,7 +637,9 @@
 data FenceGetWin32HandleInfoKHR = FenceGetWin32HandleInfoKHR
   { -- | @fence@ is the fence from which state will be exported.
     fence :: Fence
-  , -- | @handleType@ is the type of handle requested.
+  , -- | @handleType@ is a
+    -- 'Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.ExternalFenceHandleTypeFlagBits'
+    -- value specifying the type of handle requested.
     handleType :: ExternalFenceHandleTypeFlagBits
   }
   deriving (Typeable, Eq)
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
@@ -174,9 +174,9 @@
 -- receive it from another instance or API?
 --
 -- __RESOLVED__: Yes. Some implementations need to perform additional cache
--- management when transitioning memory between address spaces, and other
--- APIs, instances, or processes may operate in a separate address space.
--- Options for defining this transition include:
+-- management when transitioning memory between address spaces and other
+-- APIs, instances, or processes which may operate in a separate address
+-- space. Options for defining this transition include:
 --
 -- -   A new structure that can be added to the @pNext@ list in
 --     'Vulkan.Core10.OtherTypes.MemoryBarrier',
@@ -212,7 +212,7 @@
 -- external→internal barrier. This may not be a problem in practice, but
 -- seems like the wrong scope. Another downside of
 -- 'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags' is that it
--- lacks inherent directionality: There are not @src@ and @dst@ variants of
+-- lacks inherent directionality: there are no @src@ and @dst@ variants of
 -- it in the barrier or dependency description semantics, so two bits might
 -- need to be added to describe both internal→external and
 -- external→internal transitions. Transitioning a resource to a special
@@ -237,7 +237,7 @@
 --
 -- __RESOLVED__: Some vendors claim this is necessary on their
 -- implementations, but it was determined that the security risks of
--- allowing opaque meta data to be passed from applications to the driver
+-- allowing opaque metadata to be passed from applications to the driver
 -- were too high. Therefore, implementations which require metadata will
 -- need to associate it with the objects represented by the external
 -- handles, and rely on the dedicated allocation mechanism to associate the
@@ -256,29 +256,30 @@
 -- containing brief descriptions of the layout of bits within that memory.
 --
 -- Because memory object-based sharing is aligned with the overall Vulkan
--- API design, it exposes the full power of Vulkan on external objects.
--- External memory can be used as backing for sparse images, for example,
--- whereas such usage would be awkward at best with a sharing mechanism
--- based on higher-level primitives such as images. Further, aligning the
--- mechanism with the API in this way provides some hope of trivial
--- compatibility with future API enhancements. If new objects backed by
--- memory objects are added to the API, they too can be used across
--- processes with minimal additions to the base external memory APIs.
+-- API design, it enables the full range of Vulkan capabilities with
+-- external objects. External memory can be used as backing for sparse
+-- images, for example, whereas such usage would be awkward at best with a
+-- sharing mechanism based on higher-level primitives such as images.
+-- Further, aligning the mechanism with the API in this way provides some
+-- hope of trivial compatibility with future API enhancements. If new
+-- objects backed by memory objects are added to the API, they too can be
+-- used across processes with minimal additions to the base external memory
+-- APIs.
 --
 -- Earlier APIs implemented interop at a higher level, and this
 -- necessitated entirely separate sharing APIs for images and buffers. To
 -- co-exist and interoperate with those APIs, the Vulkan external sharing
 -- mechanism must accommodate their model. However, if it can be agreed
 -- that memory-based sharing is the more desirable and forward-looking
--- design, legacy interoperation considerations can be considered another
--- reason to favor memory-based sharing: While native and legacy driver
+-- design, legacy interoperation constraints can be considered another
+-- reason to favor memory-based sharing: while native and legacy driver
 -- primitives that may be used to implement sharing may not be as low-level
 -- as the API here suggests, raw memory is still the least common
 -- denominator among the types. Image-based sharing can be cleanly derived
 -- from a set of base memory- object sharing APIs with minimal effort,
 -- whereas image-based sharing does not generalize well to buffer or
 -- raw-memory sharing. Therefore, following the general Vulkan design
--- principle of minimalism, it is better to expose even interopability with
+-- principle of minimalism, it is better to expose interopability with
 -- image-based native and external primitives via the memory sharing API,
 -- and place sufficient limits on their usage to ensure they can be used
 -- only as backing for equivalent Vulkan images. This provides a consistent
@@ -310,7 +311,7 @@
 -- not be visible to applications importing an exported memory object.
 --
 -- 9) Must implementations validate external handles the application
--- provides as input to memory import operations?
+-- provides as inputs to memory import operations?
 --
 -- __RESOLVED__: Implementations must return an error to the application if
 -- the provided memory handle cannot be used to complete the requested
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
@@ -212,9 +212,9 @@
 -- API are added. To allow correlating with Direct3D devices, a device LUID
 -- is added that corresponds to a DXGI adapter LUID. A driver ID is not
 -- needed for Direct3D because mismatched driver component versions are not
--- a currently supported configuration on the Windows OS. Should support
--- for such configurations be introduced at the OS level, further Vulkan
--- extensions would be needed to correlate userspace component builds.
+-- currently supported on the Windows OS. Should support for such
+-- configurations be introduced at the OS level, further Vulkan extensions
+-- would be needed to correlate userspace component builds.
 --
 -- == Version History
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_external_memory_fd.hs b/src/Vulkan/Extensions/VK_KHR_external_memory_fd.hs
--- a/src/Vulkan/Extensions/VK_KHR_external_memory_fd.hs
+++ b/src/Vulkan/Extensions/VK_KHR_external_memory_fd.hs
@@ -289,7 +289,9 @@
                             -- #VUID-vkGetMemoryFdPropertiesKHR-device-parameter# @device@ /must/ be a
                             -- valid 'Vulkan.Core10.Handles.Device' handle
                             Device
-                         -> -- | @handleType@ is the type of the handle @fd@.
+                         -> -- | @handleType@ is a
+                            -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'
+                            -- value specifying the type of the handle @fd@.
                             --
                             -- #VUID-vkGetMemoryFdPropertiesKHR-handleType-00674# @handleType@ /must/
                             -- not be
@@ -348,10 +350,13 @@
 --
 -- -   #VUID-VkImportMemoryFdInfoKHR-handleType-00669# If @handleType@ is
 --     not @0@, it /must/ be
---     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT'.
+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT'
+--     or
+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT'
 --
 -- -   #VUID-VkImportMemoryFdInfoKHR-handleType-00670# If @handleType@ is
---     not @0@, @fd@ /must/ be a valid POSIX file descriptor handle.
+--     not @0@, @fd@ /must/ be a valid handle of the type specified by
+--     @handleType@
 --
 -- -   #VUID-VkImportMemoryFdInfoKHR-fd-01746# The memory represented by
 --     @fd@ /must/ have been created from a physical device and driver that
@@ -377,7 +382,9 @@
 -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data ImportMemoryFdInfoKHR = ImportMemoryFdInfoKHR
-  { -- | @handleType@ specifies the handle type of @fd@.
+  { -- | @handleType@ is a
+    -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'
+    -- value specifying the handle type of @fd@.
     handleType :: ExternalMemoryHandleTypeFlagBits
   , -- | @fd@ is the external handle to import.
     fd :: Int32
@@ -487,7 +494,7 @@
 -- Note
 --
 -- The size of the exported file /may/ be larger than the size requested by
--- 'Vulkan.Core10.Memory.MemoryAllocateInfo'::allocationSize. If
+-- 'Vulkan.Core10.Memory.MemoryAllocateInfo'::@allocationSize@. If
 -- @handleType@ is
 -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT',
 -- then the application /can/ query the file’s actual size with
@@ -506,7 +513,9 @@
     -- #VUID-VkMemoryGetFdInfoKHR-memory-parameter# @memory@ /must/ be a valid
     -- 'Vulkan.Core10.Handles.DeviceMemory' handle
     memory :: DeviceMemory
-  , -- | @handleType@ is the type of handle requested.
+  , -- | @handleType@ is a
+    -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'
+    -- value specifying the type of handle requested.
     --
     -- #VUID-VkMemoryGetFdInfoKHR-handleType-00671# @handleType@ /must/ have
     -- been included in
@@ -514,7 +523,9 @@
     -- when @memory@ was created
     --
     -- #VUID-VkMemoryGetFdInfoKHR-handleType-00672# @handleType@ /must/ be
-    -- defined as a POSIX file descriptor handle
+    -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT'
+    -- or
+    -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT'
     --
     -- #VUID-VkMemoryGetFdInfoKHR-handleType-parameter# @handleType@ /must/ be
     -- a valid
diff --git a/src/Vulkan/Extensions/VK_KHR_external_memory_win32.hs b/src/Vulkan/Extensions/VK_KHR_external_memory_win32.hs
--- a/src/Vulkan/Extensions/VK_KHR_external_memory_win32.hs
+++ b/src/Vulkan/Extensions/VK_KHR_external_memory_win32.hs
@@ -310,7 +310,9 @@
                                      -- #VUID-vkGetMemoryWin32HandlePropertiesKHR-device-parameter# @device@
                                      -- /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
                                      Device
-                                  -> -- | @handleType@ is the type of the handle @handle@.
+                                  -> -- | @handleType@ is a
+                                     -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'
+                                     -- value specifying the type of the handle @handle@.
                                      --
                                      -- #VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-00666# @handleType@
                                      -- /must/ not be one of the handle types defined as opaque
@@ -424,12 +426,14 @@
 -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data ImportMemoryWin32HandleInfoKHR = ImportMemoryWin32HandleInfoKHR
-  { -- | @handleType@ specifies the type of @handle@ or @name@.
+  { -- | @handleType@ is a
+    -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'
+    -- value specifying the type of @handle@ or @name@.
     handleType :: ExternalMemoryHandleTypeFlagBits
-  , -- | @handle@ is the external handle to import, or @NULL@.
+  , -- | @handle@ is @NULL@ or the external handle to import.
     handle :: HANDLE
-  , -- | @name@ is a null-terminated UTF-16 string naming the payload to import,
-    -- or @NULL@.
+  , -- | @name@ is @NULL@ or a null-terminated UTF-16 string naming the payload
+    -- to import.
     name :: LPCWSTR
   }
   deriving (Typeable, Eq)
@@ -498,23 +502,25 @@
 --
 -- For handles of the following types:
 --
--- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT'
--- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT'
+-- -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT'
 --
+-- -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT'
+--
 -- The implementation /must/ ensure the access rights allow read and write
 -- access to the memory.
 --
 -- For handles of the following types:
 --
--- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT'
--- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT'
+-- -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT'
 --
+-- -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT'
+--
 -- The access rights /must/ be:
 --
--- @GENERIC_ALL@
+-- -   @GENERIC_ALL@
 --
--- [1]
---     <https://docs.microsoft.com/en-us/windows/win32/sync/synchronization-object-security-and-access-rights>
+--     [1]
+--         <https://docs.microsoft.com/en-us/windows/win32/sync/synchronization-object-security-and-access-rights>
 --
 -- == Valid Usage
 --
@@ -703,7 +709,9 @@
 data MemoryGetWin32HandleInfoKHR = MemoryGetWin32HandleInfoKHR
   { -- | @memory@ is the memory object from which the handle will be exported.
     memory :: DeviceMemory
-  , -- | @handleType@ is the type of handle requested.
+  , -- | @handleType@ is a
+    -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'
+    -- value specifying the type of handle requested.
     handleType :: ExternalMemoryHandleTypeFlagBits
   }
   deriving (Typeable, Eq)
diff --git a/src/Vulkan/Extensions/VK_KHR_external_semaphore_fd.hs b/src/Vulkan/Extensions/VK_KHR_external_semaphore_fd.hs
--- a/src/Vulkan/Extensions/VK_KHR_external_semaphore_fd.hs
+++ b/src/Vulkan/Extensions/VK_KHR_external_semaphore_fd.hs
@@ -416,7 +416,9 @@
     -- specifying additional parameters for the semaphore payload import
     -- operation.
     flags :: SemaphoreImportFlags
-  , -- | @handleType@ specifies the type of @fd@.
+  , -- | @handleType@ is a
+    -- 'Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits'
+    -- value specifying the type of @fd@.
     handleType :: ExternalSemaphoreHandleTypeFlagBits
   , -- | @fd@ is the external handle to import.
     fd :: Int32
@@ -547,7 +549,9 @@
 data SemaphoreGetFdInfoKHR = SemaphoreGetFdInfoKHR
   { -- | @semaphore@ is the semaphore from which state will be exported.
     semaphore :: Semaphore
-  , -- | @handleType@ is the type of handle requested.
+  , -- | @handleType@ is a
+    -- 'Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits'
+    -- value specifying the type of handle requested.
     handleType :: ExternalSemaphoreHandleTypeFlagBits
   }
   deriving (Typeable, Eq)
diff --git a/src/Vulkan/Extensions/VK_KHR_external_semaphore_win32.hs b/src/Vulkan/Extensions/VK_KHR_external_semaphore_win32.hs
--- a/src/Vulkan/Extensions/VK_KHR_external_semaphore_win32.hs
+++ b/src/Vulkan/Extensions/VK_KHR_external_semaphore_win32.hs
@@ -475,12 +475,14 @@
     -- specifying additional parameters for the semaphore payload import
     -- operation.
     flags :: SemaphoreImportFlags
-  , -- | @handleType@ specifies the type of @handle@.
+  , -- | @handleType@ is a
+    -- 'Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits'
+    -- value specifying the type of @handle@.
     handleType :: ExternalSemaphoreHandleTypeFlagBits
-  , -- | @handle@ is the external handle to import, or @NULL@.
+  , -- | @handle@ is @NULL@ or the external handle to import.
     handle :: HANDLE
-  , -- | @name@ is a null-terminated UTF-16 string naming the underlying
-    -- synchronization primitive to import, or @NULL@.
+  , -- | @name@ is @NULL@ or a null-terminated UTF-16 string naming the
+    -- underlying synchronization primitive to import.
     name :: LPCWSTR
   }
   deriving (Typeable, Eq)
@@ -693,13 +695,13 @@
 --     @waitSemaphoreValuesCount@ /must/ be the same value as
 --     'Vulkan.Core10.Queue.SubmitInfo'::@waitSemaphoreCount@, where
 --     'Vulkan.Core10.Queue.SubmitInfo' is in the @pNext@ chain of this
---     'D3D12FenceSubmitInfoKHR' structure
+--     'D3D12FenceSubmitInfoKHR' structure.
 --
 -- -   #VUID-VkD3D12FenceSubmitInfoKHR-signalSemaphoreValuesCount-00080#
 --     @signalSemaphoreValuesCount@ /must/ be the same value as
 --     'Vulkan.Core10.Queue.SubmitInfo'::@signalSemaphoreCount@, where
 --     'Vulkan.Core10.Queue.SubmitInfo' is in the @pNext@ chain of this
---     'D3D12FenceSubmitInfoKHR' structure
+--     'D3D12FenceSubmitInfoKHR' structure.
 --
 -- == Valid Usage (Implicit)
 --
@@ -881,7 +883,9 @@
 data SemaphoreGetWin32HandleInfoKHR = SemaphoreGetWin32HandleInfoKHR
   { -- | @semaphore@ is the semaphore from which state will be exported.
     semaphore :: Semaphore
-  , -- | @handleType@ is the type of handle requested.
+  , -- | @handleType@ is a
+    -- 'Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits'
+    -- value specifying the type of handle requested.
     handleType :: ExternalSemaphoreHandleTypeFlagBits
   }
   deriving (Typeable, Eq)
diff --git a/src/Vulkan/Extensions/VK_KHR_fragment_shading_rate.hs b/src/Vulkan/Extensions/VK_KHR_fragment_shading_rate.hs
--- a/src/Vulkan/Extensions/VK_KHR_fragment_shading_rate.hs
+++ b/src/Vulkan/Extensions/VK_KHR_fragment_shading_rate.hs
@@ -138,7 +138,7 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':
 --
---     -   'ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR'
+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR'
 --
 -- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':
 --
@@ -151,17 +151,17 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.ImageLayout.ImageLayout':
 --
---     -   'IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR'
+--     -   'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR'
 --
 -- -   Extending
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits':
 --
---     -   'IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--     -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
 --
 -- -   Extending
 --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':
 --
---     -   'PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
@@ -201,10 +201,6 @@
 -- the generator scripts, not directly.
 module Vulkan.Extensions.VK_KHR_fragment_shading_rate  ( cmdSetFragmentShadingRateKHR
                                                        , getPhysicalDeviceFragmentShadingRatesKHR
-                                                       , pattern IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR
-                                                       , pattern ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR
-                                                       , pattern IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
-                                                       , pattern PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
                                                        , FragmentShadingRateAttachmentInfoKHR(..)
                                                        , PipelineFragmentShadingRateStateCreateInfoKHR(..)
                                                        , PhysicalDeviceFragmentShadingRateFeaturesKHR(..)
@@ -233,6 +229,7 @@
 import Foreign.Marshal.Alloc (allocaBytesAligned)
 import Foreign.Marshal.Alloc (callocBytes)
 import Foreign.Marshal.Alloc (free)
+import Foreign.Marshal.Utils (maybePeek)
 import GHC.Base (when)
 import GHC.IO (throwIO)
 import GHC.Ptr (castPtr)
@@ -292,16 +289,8 @@
 import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits)
 import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlags)
 import Vulkan.CStruct.Extends (SomeStruct)
-import Vulkan.CStruct.Extends (SomeStruct(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
 import Vulkan.Exception (VulkanException(..))
-import Vulkan.Core10.Enums.AccessFlagBits (AccessFlags)
-import Vulkan.Core10.Enums.AccessFlagBits (AccessFlagBits(ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV))
-import Vulkan.Core10.Enums.ImageLayout (ImageLayout(IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV))
-import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)
-import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlagBits(IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV))
-import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)
-import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits(PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR))
@@ -323,12 +312,12 @@
 -- -   #VUID-vkCmdSetFragmentShadingRateKHR-pipelineFragmentShadingRate-04507#
 --     If
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
---     is not enabled, @pFragmentSize@->@width@ /must/ be @1@
+--     is not enabled, @pFragmentSize->width@ /must/ be @1@
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateKHR-pipelineFragmentShadingRate-04508#
 --     If
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
---     is not enabled, @pFragmentSize@->@height@ /must/ be @1@
+--     is not enabled, @pFragmentSize->height@ /must/ be @1@
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateKHR-pipelineFragmentShadingRate-04509#
 --     One of
@@ -358,22 +347,22 @@
 --     'FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR'
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04513#
---     @pFragmentSize@->@width@ /must/ be greater than or equal to @1@
+--     @pFragmentSize->width@ /must/ be greater than or equal to @1@
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04514#
---     @pFragmentSize@->@height@ /must/ be greater than or equal to @1@
+--     @pFragmentSize->height@ /must/ be greater than or equal to @1@
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04515#
---     @pFragmentSize@->@width@ /must/ be a power-of-two value
+--     @pFragmentSize->width@ /must/ be a power-of-two value
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04516#
---     @pFragmentSize@->@height@ /must/ be a power-of-two value
+--     @pFragmentSize->height@ /must/ be a power-of-two value
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04517#
---     @pFragmentSize@->@width@ /must/ be less than or equal to @4@
+--     @pFragmentSize->width@ /must/ be less than or equal to @4@
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04518#
---     @pFragmentSize@->@height@ /must/ be less than or equal to @4@
+--     @pFragmentSize->height@ /must/ be less than or equal to @4@
 --
 -- == Valid Usage (Implicit)
 --
@@ -426,7 +415,7 @@
                                 -- recorded.
                                 CommandBuffer
                              -> -- | @pFragmentSize@ specifies the pipeline fragment shading rate for
-                                -- subsequent draw commands.
+                                -- subsequent drawing commands.
                                 ("fragmentSize" ::: Extent2D)
                              -> -- | @combinerOps@ specifies a 'FragmentShadingRateCombinerOpKHR' determining
                                 -- how the
@@ -538,8 +527,27 @@
 --
 -- Including the {1,1} fragment size is done for completeness; it has no
 -- actual effect on the support of rendering without setting the fragment
--- size. All sample counts are supported for this rate.
+-- size. All sample counts and render pass transforms are supported for
+-- this rate.
 --
+-- The returned set of fragment shading rates /must/ be returned in the
+-- native (rotated) coordinate system. For rasterization using render pass
+-- @transform@ not equal to
+-- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR',
+-- the application /must/ transform the returned fragment shading rates
+-- into the current (unrotated) coordinate system to get the supported
+-- rates for that transform.
+--
+-- Note
+--
+-- For example, consider an implementation returning support for 4x2, but
+-- not 2x4 in the set of supported fragment shading rates. This means that
+-- for transforms
+-- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR'
+-- and
+-- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR',
+-- 2x4 is a supported rate, but 4x2 is an unsupported rate.
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkGetPhysicalDeviceFragmentShadingRatesKHR-physicalDevice-parameter#
@@ -597,28 +605,12 @@
   pure $ ((r'), pFragmentShadingRates')
 
 
--- No documentation found for TopLevel "VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR"
-pattern IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV
-
-
--- No documentation found for TopLevel "VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR"
-pattern ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV
-
-
--- No documentation found for TopLevel "VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"
-pattern IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV
-
-
--- No documentation found for TopLevel "VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"
-pattern PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV
-
-
 -- | VkFragmentShadingRateAttachmentInfoKHR - Structure specifying a fragment
 -- shading rate attachment for a subpass
 --
 -- = Description
 --
--- If no shading rate attachment is specified, or if this structure isn’t
+-- If no shading rate attachment is specified, or if this structure is not
 -- specified, the implementation behaves as if a valid shading rate
 -- attachment was specified with all texels specifying a single pixel per
 -- fragment.
@@ -631,7 +623,7 @@
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', its @layout@ member
 --     /must/ be equal to
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' or
---     'IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR'
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR'
 --
 -- -   #VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04525#
 --     If @pFragmentShadingRateAttachment@ is not @NULL@ and its
@@ -704,6 +696,7 @@
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR'
 --
 -- -   #VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-parameter#
+--     If @pFragmentShadingRateAttachment@ is not @NULL@,
 --     @pFragmentShadingRateAttachment@ /must/ be a valid pointer to a
 --     valid
 --     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentReference2'
@@ -715,11 +708,11 @@
 -- 'Vulkan.Core10.FundamentalTypes.Extent2D',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data FragmentShadingRateAttachmentInfoKHR = FragmentShadingRateAttachmentInfoKHR
-  { -- | @pFragmentShadingRateAttachment@ is an optional
-    -- 'Vulkan.Extensions.VK_KHR_create_renderpass2.AttachmentReference2KHR'
+  { -- | @pFragmentShadingRateAttachment@ is @NULL@ or a pointer to a
+    -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentReference2'
     -- structure defining the fragment shading rate attachment for this
     -- subpass.
-    fragmentShadingRateAttachment :: SomeStruct AttachmentReference2
+    fragmentShadingRateAttachment :: Maybe (SomeStruct AttachmentReference2)
   , -- | @shadingRateAttachmentTexelSize@ specifies the size of the portion of
     -- the framebuffer corresponding to each texel in
     -- @pFragmentShadingRateAttachment@.
@@ -736,30 +729,31 @@
   pokeCStruct p FragmentShadingRateAttachmentInfoKHR{..} f = evalContT $ do
     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR)
     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    pFragmentShadingRateAttachment'' <- ContT @_ @_ @(Ptr (AttachmentReference2 '[])) $ \cont -> withSomeCStruct @AttachmentReference2 (fragmentShadingRateAttachment) (cont . castPtr)
+    pFragmentShadingRateAttachment'' <- case (fragmentShadingRateAttachment) of
+      Nothing -> pure nullPtr
+      Just j -> ContT @_ @_ @(Ptr (AttachmentReference2 '[])) $ \cont -> withSomeCStruct @AttachmentReference2 (j) (cont . castPtr)
     lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr (AttachmentReference2 _)))) pFragmentShadingRateAttachment''
     lift $ poke ((p `plusPtr` 24 :: Ptr Extent2D)) (shadingRateAttachmentTexelSize)
     lift $ f
   cStructSize = 32
   cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    pFragmentShadingRateAttachment'' <- ContT @_ @_ @(Ptr (AttachmentReference2 '[])) $ \cont -> withSomeCStruct @AttachmentReference2 ((SomeStruct zero)) (cont . castPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr (AttachmentReference2 _)))) pFragmentShadingRateAttachment''
-    lift $ poke ((p `plusPtr` 24 :: Ptr Extent2D)) (zero)
-    lift $ f
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 24 :: Ptr Extent2D)) (zero)
+    f
 
 instance FromCStruct FragmentShadingRateAttachmentInfoKHR where
   peekCStruct p = do
-    pFragmentShadingRateAttachment <- peekSomeCStruct . forgetExtensions =<< peek ((p `plusPtr` 16 :: Ptr (Ptr (AttachmentReference2 _))))
+    pFragmentShadingRateAttachment <- peek @(Ptr (AttachmentReference2 _)) ((p `plusPtr` 16 :: Ptr (Ptr (AttachmentReference2 _))))
+    pFragmentShadingRateAttachment' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pFragmentShadingRateAttachment
     shadingRateAttachmentTexelSize <- peekCStruct @Extent2D ((p `plusPtr` 24 :: Ptr Extent2D))
     pure $ FragmentShadingRateAttachmentInfoKHR
-             pFragmentShadingRateAttachment shadingRateAttachmentTexelSize
+             pFragmentShadingRateAttachment' shadingRateAttachmentTexelSize
 
 instance Zero FragmentShadingRateAttachmentInfoKHR where
   zero = FragmentShadingRateAttachmentInfoKHR
-           (SomeStruct zero)
+           Nothing
            zero
 
 
@@ -796,7 +790,7 @@
 data PipelineFragmentShadingRateStateCreateInfoKHR = PipelineFragmentShadingRateStateCreateInfoKHR
   { -- | @fragmentSize@ specifies a 'Vulkan.Core10.FundamentalTypes.Extent2D'
     -- structure containing the fragment size used to define the pipeline
-    -- fragment shading rate for draw commands using this pipeline.
+    -- fragment shading rate for drawing commands using this pipeline.
     fragmentSize :: Extent2D
   , -- | @combinerOps@ specifies a 'FragmentShadingRateCombinerOpKHR' value
     -- determining how the
@@ -866,18 +860,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceFragmentShadingRateFeaturesKHR'
--- structure describe the following features:
+-- This structure describes the following features:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceFragmentShadingRateFeaturesKHR' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether each feature is supported.
--- 'PhysicalDeviceFragmentShadingRateFeaturesKHR' /can/ also be used in the
--- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable these
--- features.
+-- 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. 'PhysicalDeviceFragmentShadingRateFeaturesKHR' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
@@ -949,13 +944,6 @@
 -- variable fragment shading rate limits that can be supported by an
 -- implementation
 --
--- = Members
---
--- The members of the 'PhysicalDeviceFragmentShadingRatePropertiesKHR'
--- structure describe the following implementation-dependent properties
--- related to
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-primsrast-fragment-shading-rate fragment shading rates>:
---
 -- = Description
 --
 -- Note
@@ -974,10 +962,16 @@
 -- will not affect the correct operation of applications.
 --
 -- If the 'PhysicalDeviceFragmentShadingRatePropertiesKHR' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- 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.
 --
+-- These properties are related to
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-primsrast-fragment-shading-rate fragment shading rates>.
+--
 -- == Valid Usage (Implicit)
 --
 -- = See Also
@@ -1043,9 +1037,9 @@
     -- with multiple layers. If this value is
     -- 'Vulkan.Core10.FundamentalTypes.FALSE', when creating an image view with
     -- a @usage@ that includes
-    -- 'IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR', @layerCount@
-    -- /must/ be @1@. It /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE' if
-    -- the
+    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR',
+    -- @layerCount@ /must/ be @1@. It /must/ be
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE' if the
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiview multiview>
     -- feature, the
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderOutputViewportIndex shaderOutputViewportIndex>
@@ -1092,9 +1086,11 @@
     -- is supported. This limit is purely informational, and is not validated.
     maxFragmentShadingRateCoverageSamples :: Word32
   , -- | #limits-maxFragmentShadingRateRasterizationSamples#
-    -- @maxFragmentShadingRateRasterizationSamples@ specifies the maximum
-    -- sample rate supported when a fragment covers multiple pixels. This limit
-    -- is purely informational, and is not validated.
+    -- @maxFragmentShadingRateRasterizationSamples@ is a
+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
+    -- specifying the maximum sample rate supported when a fragment covers
+    -- multiple pixels. This limit is purely informational, and is not
+    -- validated.
     maxFragmentShadingRateRasterizationSamples :: SampleCountFlagBits
   , -- | #limits-fragmentShadingRateWithShaderDepthStencilWrites#
     -- @fragmentShadingRateWithShaderDepthStencilWrites@ specifies whether the
@@ -1106,7 +1102,7 @@
   , -- | #limits-fragmentShadingRateWithSampleMask#
     -- @fragmentShadingRateWithSampleMask@ specifies whether the the
     -- implementation supports setting valid bits of
-    -- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::pSampleMask
+    -- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@pSampleMask@
     -- to @0@ for multi-pixel fragments. If this value is
     -- 'Vulkan.Core10.FundamentalTypes.FALSE', zeroing valid bits in the sample
     -- mask will clamp the fragment shading rate to (1,1).
@@ -1366,8 +1362,8 @@
 -- | 'FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR' specifies a combiner
 -- operation of combine(Axy,Bxy) = max(Axy,Bxy).
 pattern FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR     = FragmentShadingRateCombinerOpKHR 3
--- | 'FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR' combiner operation of
--- combine(Axy,Bxy) = Axy*Bxy.
+-- | 'FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR' specifies a combiner
+-- operation of combine(Axy,Bxy) = Axy*Bxy.
 pattern FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR     = FragmentShadingRateCombinerOpKHR 4
 {-# complete FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR,
              FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR,
diff --git a/src/Vulkan/Extensions/VK_KHR_fragment_shading_rate.hs-boot b/src/Vulkan/Extensions/VK_KHR_fragment_shading_rate.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_fragment_shading_rate.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_fragment_shading_rate.hs-boot
@@ -138,7 +138,7 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':
 --
---     -   'ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR'
+--     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR'
 --
 -- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':
 --
@@ -151,17 +151,17 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.ImageLayout.ImageLayout':
 --
---     -   'IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR'
+--     -   'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR'
 --
 -- -   Extending
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits':
 --
---     -   'IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--     -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
 --
 -- -   Extending
 --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':
 --
---     -   'PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_get_physical_device_properties2.hs b/src/Vulkan/Extensions/VK_KHR_get_physical_device_properties2.hs
--- a/src/Vulkan/Extensions/VK_KHR_get_physical_device_properties2.hs
+++ b/src/Vulkan/Extensions/VK_KHR_get_physical_device_properties2.hs
@@ -142,14 +142,14 @@
 -- >     // Get features with a hypothetical future extension.
 -- >     VkHypotheticalExtensionFeaturesKHR hypotheticalFeatures =
 -- >     {
--- >         VK_STRUCTURE_TYPE_HYPOTHETICAL_FEATURES_KHR,                            // sType
--- >         NULL,                                                                   // pNext
+-- >         VK_STRUCTURE_TYPE_HYPOTHETICAL_FEATURES_KHR,                // sType
+-- >         NULL,                                                       // pNext
 -- >     };
 -- >
 -- >     VkPhysicalDeviceFeatures2KHR features =
 -- >     {
--- >         VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR,                       // sType
--- >         &hypotheticalFeatures,                                                  // pNext
+-- >         VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR,           // sType
+-- >         &hypotheticalFeatures,                                      // pNext
 -- >     };
 -- >
 -- >     // After this call, features and hypotheticalFeatures have been filled out.
@@ -160,14 +160,14 @@
 -- >     // Enable some features:
 -- >     VkHypotheticalExtensionFeaturesKHR enabledHypotheticalFeatures =
 -- >     {
--- >         VK_STRUCTURE_TYPE_HYPOTHETICAL_FEATURES_KHR,                            // sType
--- >         NULL,                                                                   // pNext
+-- >         VK_STRUCTURE_TYPE_HYPOTHETICAL_FEATURES_KHR,                // sType
+-- >         NULL,                                                       // pNext
 -- >     };
 -- >
 -- >     VkPhysicalDeviceFeatures2KHR enabledFeatures =
 -- >     {
--- >         VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR,                       // sType
--- >         &enabledHypotheticalFeatures,                                           // pNext
+-- >         VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR,           // sType
+-- >         &enabledHypotheticalFeatures,                               // pNext
 -- >     };
 -- >
 -- >     enabledFeatures.features.xyz = VK_TRUE;
@@ -175,11 +175,11 @@
 -- >
 -- >     VkDeviceCreateInfo deviceCreateInfo =
 -- >     {
--- >         VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,                                   // sType
--- >         &enabledFeatures,                                                       // pNext
+-- >         VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,                       // sType
+-- >         &enabledFeatures,                                           // pNext
 -- >         ...
--- >         NULL,                                                                   // pEnabledFeatures
--- >     }
+-- >         NULL,                                                       // pEnabledFeatures
+-- >     };
 -- >
 -- >     VkDevice device;
 -- >     vkCreateDevice(physicalDevice, &deviceCreateInfo, NULL, &device);
diff --git a/src/Vulkan/Extensions/VK_KHR_get_surface_capabilities2.hs b/src/Vulkan/Extensions/VK_KHR_get_surface_capabilities2.hs
--- a/src/Vulkan/Extensions/VK_KHR_get_surface_capabilities2.hs
+++ b/src/Vulkan/Extensions/VK_KHR_get_surface_capabilities2.hs
@@ -347,11 +347,9 @@
 -- return the variable is overwritten with the number of structures
 -- actually written to @pSurfaceFormats@. If the value of
 -- @pSurfaceFormatCount@ is less than the number of format tuples
--- supported, at most @pSurfaceFormatCount@ structures will be written. If
--- @pSurfaceFormatCount@ is smaller than the number of format tuples
--- supported for the surface parameters described in @pSurfaceInfo@,
+-- supported, at most @pSurfaceFormatCount@ structures will be written, and
 -- 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned instead of
--- 'Vulkan.Core10.Enums.Result.SUCCESS' to indicate that not all the
+-- 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate that not all the
 -- available values were returned.
 --
 -- == Valid Usage
diff --git a/src/Vulkan/Extensions/VK_KHR_imageless_framebuffer.hs b/src/Vulkan/Extensions/VK_KHR_imageless_framebuffer.hs
--- a/src/Vulkan/Extensions/VK_KHR_imageless_framebuffer.hs
+++ b/src/Vulkan/Extensions/VK_KHR_imageless_framebuffer.hs
@@ -37,14 +37,14 @@
 --
 -- == Other Extension Metadata
 --
--- [Last Modified Date]
+-- [__Last Modified Date__]
 --     2018-12-14
 --
 -- [__Interactions and External Dependencies__]
 --
 --     -   Promoted to Vulkan 1.2 Core
 --
--- [Contributors]
+-- [__Contributors__]
 --
 --     -   Tobias Hector
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_incremental_present.hs b/src/Vulkan/Extensions/VK_KHR_incremental_present.hs
--- a/src/Vulkan/Extensions/VK_KHR_incremental_present.hs
+++ b/src/Vulkan/Extensions/VK_KHR_incremental_present.hs
@@ -15,7 +15,7 @@
 --     85
 --
 -- [__Revision__]
---     1
+--     2
 --
 -- [__Extension and Version Dependencies__]
 --
@@ -127,12 +127,30 @@
 -- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' must still be
 -- honored, including waiting for semaphores to signal.
 --
+-- 5) When the swapchain is created with
+-- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'::@preTransform@
+-- set to a value other than
+-- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR',
+-- should the rectangular region, 'RectLayerKHR', be transformed to align
+-- with the @preTransform@?
+--
+-- __RESOLVED__: No. The rectangular region in 'RectLayerKHR' should not be
+-- tranformed. As such, it may not align with the extents of the
+-- swapchain’s image(s). It is the responsibility of the presentation
+-- engine to transform the rectangular region. This matches the behavior of
+-- the Android presentation engine, which set the precedent.
+--
 -- == Version History
 --
 -- -   Revision 1, 2016-11-02 (Ian Elliott)
 --
 --     -   Internal revisions
 --
+-- -   Revision 2, 2021-03-18 (Ian Elliott)
+--
+--     -   Clarified alignment of rectangles for presentation engines that
+--         support transformed swapchains.
+--
 -- = See Also
 --
 -- 'PresentRegionKHR', 'PresentRegionsKHR', 'RectLayerKHR'
@@ -297,7 +315,12 @@
     -- framebuffer coordinates, plus layer, of a portion of a presentable image
     -- that has changed and /must/ be presented. If non-@NULL@, each entry in
     -- @pRectangles@ is a rectangle of the given image that has changed since
-    -- the last image was presented to the given swapchain.
+    -- the last image was presented to the given swapchain. The rectangles
+    -- /must/ be specified relative to
+    -- 'Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@currentTransform@,
+    -- regardless of the swapchain’s @preTransform@. The presentation engine
+    -- will apply the @preTransform@ transformation to the rectangles, along
+    -- with any further transformation it applies to the image content.
     rectangles :: Vector RectLayerKHR
   }
   deriving (Typeable)
@@ -347,13 +370,22 @@
 -- | VkRectLayerKHR - Structure containing a rectangle, including layer,
 -- changed by vkQueuePresentKHR for a given VkImage
 --
+-- = Description
+--
+-- Some platforms allow the size of a surface to change, and then scale the
+-- pixels of the image to fit the surface. 'RectLayerKHR' specifies pixels
+-- of the swapchain’s image(s), which will be constant for the life of the
+-- swapchain.
+--
 -- == Valid Usage
 --
--- -   #VUID-VkRectLayerKHR-offset-01261# The sum of @offset@ and @extent@
---     /must/ be no greater than the @imageExtent@ member of the
+-- -   #VUID-VkRectLayerKHR-offset-04864# The sum of @offset@ and @extent@,
+--     after being transformed according to the @preTransform@ member of
+--     the 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'
+--     structure, /must/ be no greater than the @imageExtent@ member of the
 --     'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'
 --     structure passed to
---     'Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR'
+--     'Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR'.
 --
 -- -   #VUID-VkRectLayerKHR-layer-01262# @layer@ /must/ be less than the
 --     @imageArrayLayers@ member of the
@@ -361,11 +393,6 @@
 --     structure passed to
 --     'Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR'
 --
--- Some platforms allow the size of a surface to change, and then scale the
--- pixels of the image to fit the surface. 'RectLayerKHR' specifies pixels
--- of the swapchain’s image(s), which will be constant for the life of the
--- swapchain.
---
 -- = See Also
 --
 -- 'Vulkan.Core10.FundamentalTypes.Extent2D',
@@ -421,11 +448,11 @@
            zero
 
 
-type KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1
+type KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 2
 
 -- No documentation found for TopLevel "VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION"
 pattern KHR_INCREMENTAL_PRESENT_SPEC_VERSION :: forall a . Integral a => a
-pattern KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1
+pattern KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 2
 
 
 type KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present"
diff --git a/src/Vulkan/Extensions/VK_KHR_incremental_present.hs-boot b/src/Vulkan/Extensions/VK_KHR_incremental_present.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_incremental_present.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_incremental_present.hs-boot
@@ -15,7 +15,7 @@
 --     85
 --
 -- [__Revision__]
---     1
+--     2
 --
 -- [__Extension and Version Dependencies__]
 --
@@ -127,11 +127,29 @@
 -- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' must still be
 -- honored, including waiting for semaphores to signal.
 --
+-- 5) When the swapchain is created with
+-- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'::@preTransform@
+-- set to a value other than
+-- 'Vulkan.Extensions.VK_KHR_surface.SURFACE_TRANSFORM_IDENTITY_BIT_KHR',
+-- should the rectangular region, 'RectLayerKHR', be transformed to align
+-- with the @preTransform@?
+--
+-- __RESOLVED__: No. The rectangular region in 'RectLayerKHR' should not be
+-- tranformed. As such, it may not align with the extents of the
+-- swapchain’s image(s). It is the responsibility of the presentation
+-- engine to transform the rectangular region. This matches the behavior of
+-- the Android presentation engine, which set the precedent.
+--
 -- == Version History
 --
 -- -   Revision 1, 2016-11-02 (Ian Elliott)
 --
 --     -   Internal revisions
+--
+-- -   Revision 2, 2021-03-18 (Ian Elliott)
+--
+--     -   Clarified alignment of rectangles for presentation engines that
+--         support transformed swapchains.
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_maintenance2.hs b/src/Vulkan/Extensions/VK_KHR_maintenance2.hs
--- a/src/Vulkan/Extensions/VK_KHR_maintenance2.hs
+++ b/src/Vulkan/Extensions/VK_KHR_maintenance2.hs
@@ -205,7 +205,7 @@
 -- >         ...
 -- >         .pNext = &specifyAspects,
 -- >         ...
--- >     }
+-- >     };
 -- >
 -- >     vkCreateRenderPass(...);
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_multiview.hs b/src/Vulkan/Extensions/VK_KHR_multiview.hs
--- a/src/Vulkan/Extensions/VK_KHR_multiview.hs
+++ b/src/Vulkan/Extensions/VK_KHR_multiview.hs
@@ -60,7 +60,7 @@
 -- This extension has the same goal as the OpenGL ES @GL_OVR_multiview@
 -- extension. Multiview is a rendering technique originally designed for VR
 -- where it is more efficient to record a single set of commands to be
--- executed with slightly different behavior for each \"view\".
+-- executed with slightly different behavior for each “view”.
 --
 -- It includes a concise way to declare a render pass with multiple views,
 -- and gives implementations freedom to render the views in the most
@@ -73,9 +73,9 @@
 --
 -- This extension enables the use of the
 -- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_multiview.html SPV_KHR_multiview>
--- shader extension which adds a new @ViewIndex@ built-in type to shaders
--- that allow shaders to control what to do for each view. If using GLSL
--- there is also a
+-- shader extension, which adds a new @ViewIndex@ built-in type that allows
+-- shaders to control what to do for each view. If using GLSL there is also
+-- the
 -- <https://raw.githubusercontent.com/KhronosGroup/GLSL/master/extensions/ext/GL_EXT_multiview.txt GL_EXT_multiview>
 -- extension that introduces a @highp int gl_ViewIndex;@ built-in variable
 -- for vertex, tessellation, geometry, and fragment shaders.
diff --git a/src/Vulkan/Extensions/VK_KHR_performance_query.hs b/src/Vulkan/Extensions/VK_KHR_performance_query.hs
--- a/src/Vulkan/Extensions/VK_KHR_performance_query.hs
+++ b/src/Vulkan/Extensions/VK_KHR_performance_query.hs
@@ -225,9 +225,9 @@
 -- 10) Should we introduce an indirect mechanism to set the counter pass
 -- index?
 --
--- __RESOLVED__ Specify the counter pass index at submit time instead to
+-- __RESOLVED__ Specify the counter pass index at submit time instead, to
 -- avoid requiring re-recording of command buffers when multiple counter
--- passes needed.
+-- passes are needed.
 --
 -- == Examples
 --
@@ -648,9 +648,10 @@
 -- of elements in the @pCounters@, @pCounterDescriptions@, or both arrays
 -- and on return the variable is overwritten with the number of structures
 -- actually written out. If @pCounterCount@ is less than the number of
--- counters available, at most @pCounterCount@ structures will be written
+-- counters available, at most @pCounterCount@ structures will be written,
 -- and 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned instead of
--- 'Vulkan.Core10.Enums.Result.SUCCESS'.
+-- 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate that not all the
+-- available counters were returned.
 --
 -- == Valid Usage (Implicit)
 --
@@ -892,6 +893,22 @@
 -- | VkPhysicalDevicePerformanceQueryFeaturesKHR - Structure describing
 -- performance query support for an implementation
 --
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDevicePerformanceQueryFeaturesKHR' 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. 'PhysicalDevicePerformanceQueryFeaturesKHR' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
+--
 -- == Valid Usage (Implicit)
 --
 -- = See Also
@@ -954,18 +971,18 @@
 -- | VkPhysicalDevicePerformanceQueryPropertiesKHR - Structure describing
 -- performance query properties for an implementation
 --
--- = Members
+-- = Description
 --
--- The members of the 'PhysicalDevicePerformanceQueryPropertiesKHR'
--- structure describe the following implementation-dependent properties:
+-- If the 'PhysicalDevicePerformanceQueryPropertiesKHR' 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)
 --
--- If the 'PhysicalDevicePerformanceQueryPropertiesKHR' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent properties.
---
 -- = See Also
 --
 -- 'Vulkan.Core10.FundamentalTypes.Bool32',
@@ -1206,7 +1223,7 @@
   { -- | @queueFamilyIndex@ is the queue family index to create this performance
     -- query pool for.
     queueFamilyIndex :: Word32
-  , -- | @pCounterIndices@ is the array of indices into the
+  , -- | @pCounterIndices@ is a pointer to an array of indices into the
     -- 'enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR'::@pCounters@
     -- to enable in this performance query pool.
     counterIndices :: Vector Word32
diff --git a/src/Vulkan/Extensions/VK_KHR_performance_query.hs-boot b/src/Vulkan/Extensions/VK_KHR_performance_query.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_performance_query.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_performance_query.hs-boot
@@ -225,9 +225,9 @@
 -- 10) Should we introduce an indirect mechanism to set the counter pass
 -- index?
 --
--- __RESOLVED__ Specify the counter pass index at submit time instead to
+-- __RESOLVED__ Specify the counter pass index at submit time instead, to
 -- avoid requiring re-recording of command buffers when multiple counter
--- passes needed.
+-- passes are needed.
 --
 -- == Examples
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_pipeline_executable_properties.hs b/src/Vulkan/Extensions/VK_KHR_pipeline_executable_properties.hs
--- a/src/Vulkan/Extensions/VK_KHR_pipeline_executable_properties.hs
+++ b/src/Vulkan/Extensions/VK_KHR_pipeline_executable_properties.hs
@@ -145,9 +145,9 @@
 -- the compilation process and about which you can query properties and
 -- statistics?
 --
--- __RESOLVED__: Call them \"executables\". The name \"binary\" was used in
--- early drafts of the extension but it was determined that \"pipeline
--- binary\" could have a fairly broad meaning (such as a binary serialized
+-- __RESOLVED__: Call them “executables”. The name “binary” was used in
+-- early drafts of the extension but it was determined that “pipeline
+-- binary” could have a fairly broad meaning (such as a binary serialized
 -- form of an entire pipeline) and was too big of a namespace for the very
 -- specific needs of this extension.
 --
@@ -296,15 +296,17 @@
 --
 -- = Description
 --
--- If @pProperties@ is @NULL@, then the number of executables associated
--- with the pipeline is returned in @pExecutableCount@. Otherwise,
--- @pExecutableCount@ /must/ point to a variable set by the user to the
--- number of elements in the @pProperties@ array, and on return the
+-- If @pProperties@ is @NULL@, then the number of pipeline executables
+-- associated with the pipeline is returned in @pExecutableCount@.
+-- Otherwise, @pExecutableCount@ /must/ point to a variable set by the user
+-- to the number of elements in the @pProperties@ array, and on return the
 -- variable is overwritten with the number of structures actually written
 -- to @pProperties@. If @pExecutableCount@ is less than the number of
--- executables associated with the pipeline, at most @pExecutableCount@
--- structures will be written and 'getPipelineExecutablePropertiesKHR' will
--- return 'Vulkan.Core10.Enums.Result.INCOMPLETE'.
+-- pipeline executables associated with the pipeline, at most
+-- @pExecutableCount@ structures will be written, and
+-- 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned instead of
+-- 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate that not all the
+-- available properties were returned.
 --
 -- == Valid Usage
 --
@@ -398,9 +400,10 @@
 -- variable is overwritten with the number of structures actually written
 -- to @pStatistics@. If @pStatisticCount@ is less than the number of
 -- statistics associated with the pipeline executable, at most
--- @pStatisticCount@ structures will be written and
--- 'getPipelineExecutableStatisticsKHR' will return
--- 'Vulkan.Core10.Enums.Result.INCOMPLETE'.
+-- @pStatisticCount@ structures will be written, and
+-- 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned instead of
+-- 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate that not all the
+-- available statistics were returned.
 --
 -- == Valid Usage
 --
@@ -500,14 +503,15 @@
 -- actually written to @pInternalRepresentations@. If
 -- @pInternalRepresentationCount@ is less than the number of internal
 -- representations associated with the pipeline executable, at most
--- @pInternalRepresentationCount@ structures will be written and
--- 'getPipelineExecutableInternalRepresentationsKHR' will return
--- 'Vulkan.Core10.Enums.Result.INCOMPLETE'.
+-- @pInternalRepresentationCount@ structures will be written, and
+-- 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned instead of
+-- 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate that not all the
+-- available representations were returned.
 --
 -- While the details of the internal representations remain implementation
 -- dependent, the implementation /should/ order the internal
--- representations in the order in which they occur in the compile pipeline
--- with the final shader assembly (if any) last.
+-- representations in the order in which they occur in the compiled
+-- pipeline with the final shader assembly (if any) last.
 --
 -- == Valid Usage
 --
@@ -593,19 +597,20 @@
 --
 -- = Members
 --
--- The members of the
--- 'PhysicalDevicePipelineExecutablePropertiesFeaturesKHR' structure
--- describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDevicePipelineExecutablePropertiesFeaturesKHR' structure
--- is included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDevicePipelineExecutablePropertiesFeaturesKHR' /can/ also be
--- included in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to enable features.
+-- 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. 'PhysicalDevicePipelineExecutablePropertiesFeaturesKHR' /can/
+-- also be used in the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
+-- features.
 --
 -- == Valid Usage (Implicit)
 --
@@ -616,7 +621,7 @@
 data PhysicalDevicePipelineExecutablePropertiesFeaturesKHR = PhysicalDevicePipelineExecutablePropertiesFeaturesKHR
   { -- | #features-pipelineExecutableInfo# @pipelineExecutableInfo@ indicates
     -- that the implementation supports reporting properties and statistics
-    -- about the executables associated with a compiled pipeline.
+    -- about the pipeline executables associated with a compiled pipeline.
     pipelineExecutableInfo :: Bool }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
@@ -714,17 +719,15 @@
 --
 -- = Description
 --
--- The @stages@ field /may/ be zero or it /may/ contain one or more bits
--- describing the stages principally used to compile this pipeline. Not all
--- implementations have a 1:1 mapping between shader stages and pipeline
--- executables and some implementations /may/ reduce a given shader stage
--- to fixed function hardware programming such that no executable is
--- available. No guarantees are provided about the mapping between shader
--- stages and pipeline executables and @stages@ /should/ be considered a
--- best effort hint. Because the application /cannot/ rely on the @stages@
--- field to provide an exact description, @name@ and @description@ provide
--- a human readable name and description which more accurately describes
--- the given pipeline executable.
+-- Not all implementations have a 1:1 mapping between shader stages and
+-- pipeline executables and some implementations /may/ reduce a given
+-- shader stage to fixed function hardware programming such that no
+-- pipeline executable is available. No guarantees are provided about the
+-- mapping between shader stages and pipeline executables and @stages@
+-- /should/ be considered a best effort hint. Because the application
+-- /cannot/ rely on the @stages@ field to provide an exact description,
+-- @name@ and @description@ provide a human readable name and description
+-- which more accurately describes the given pipeline executable.
 --
 -- == Valid Usage (Implicit)
 --
@@ -734,22 +737,22 @@
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'getPipelineExecutablePropertiesKHR'
 data PipelineExecutablePropertiesKHR = PipelineExecutablePropertiesKHR
-  { -- | @stages@ is a bitmask of
+  { -- | @stages@ is a bitmask of zero or more
     -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' indicating
     -- which shader stages (if any) were principally used as inputs to compile
     -- this pipeline executable.
     stages :: ShaderStageFlags
   , -- | @name@ is an array of 'Vulkan.Core10.APIConstants.MAX_DESCRIPTION_SIZE'
     -- @char@ containing a null-terminated UTF-8 string which is a short human
-    -- readable name for this executable.
+    -- readable name for this pipeline executable.
     name :: ByteString
   , -- | @description@ is an array of
     -- 'Vulkan.Core10.APIConstants.MAX_DESCRIPTION_SIZE' @char@ containing a
     -- null-terminated UTF-8 string which is a human readable description for
-    -- this executable.
+    -- this pipeline executable.
     description :: ByteString
-  , -- | @subgroupSize@ is the subgroup size with which this executable is
-    -- dispatched.
+  , -- | @subgroupSize@ is the subgroup size with which this pipeline executable
+    -- is dispatched.
     subgroupSize :: Word32
   }
   deriving (Typeable)
@@ -819,12 +822,12 @@
     -- #VUID-VkPipelineExecutableInfoKHR-pipeline-parameter# @pipeline@ /must/
     -- be a valid 'Vulkan.Core10.Handles.Pipeline' handle
     pipeline :: Pipeline
-  , -- | @executableIndex@ is the index of the executable to query in the array
-    -- of executable properties returned by
+  , -- | @executableIndex@ is the index of the pipeline executable to query in
+    -- the array of executable properties returned by
     -- 'getPipelineExecutablePropertiesKHR'.
     --
     -- #VUID-VkPipelineExecutableInfoKHR-executableIndex-03275#
-    -- @executableIndex@ /must/ be less than the number of executables
+    -- @executableIndex@ /must/ be less than the number of pipeline executables
     -- associated with @pipeline@ as returned in the @pExecutableCount@
     -- parameter of 'getPipelineExecutablePropertiesKHR'
     executableIndex :: Word32
@@ -953,13 +956,15 @@
 -- return @dataSize@ is overwritten with the number of bytes of data
 -- actually written to @pData@ including any trailing null character. If
 -- @dataSize@ is less than the size, in bytes, of the internal
--- representation data, at most @dataSize@ bytes of data will be written to
--- @pData@ and 'getPipelineExecutableInternalRepresentationsKHR' will
--- return 'Vulkan.Core10.Enums.Result.INCOMPLETE'. If @isText@ is
--- 'Vulkan.Core10.FundamentalTypes.TRUE' and @pData@ is not @NULL@ and
--- @dataSize@ is not zero, the last byte written to @pData@ will be a null
--- character.
+-- representation’s data, at most @dataSize@ bytes of data will be written
+-- to @pData@, and 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned
+-- instead of 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate that not
+-- all the available representation was returned.
 --
+-- If @isText@ is 'Vulkan.Core10.FundamentalTypes.TRUE' and @pData@ is not
+-- @NULL@ and @dataSize@ is not zero, the last byte written to @pData@ will
+-- be a null character.
+--
 -- == Valid Usage (Implicit)
 --
 -- = See Also
@@ -983,11 +988,10 @@
     -- string.
     isText :: Bool
   , -- | @dataSize@ is an integer related to the size, in bytes, of the internal
-    -- representation data, as described below.
+    -- representation’s data, as described below.
     dataSize :: Word64
-  , -- | @pData@ is either @NULL@ or a pointer to an block of data into which the
-    -- implementation will write the textual form of the internal
-    -- representation.
+  , -- | @pData@ is either @NULL@ or a pointer to a block of data into which the
+    -- implementation will write the internal representation.
     data' :: Ptr ()
   }
   deriving (Typeable)
diff --git a/src/Vulkan/Extensions/VK_KHR_pipeline_executable_properties.hs-boot b/src/Vulkan/Extensions/VK_KHR_pipeline_executable_properties.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_pipeline_executable_properties.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_pipeline_executable_properties.hs-boot
@@ -145,9 +145,9 @@
 -- the compilation process and about which you can query properties and
 -- statistics?
 --
--- __RESOLVED__: Call them \"executables\". The name \"binary\" was used in
--- early drafts of the extension but it was determined that \"pipeline
--- binary\" could have a fairly broad meaning (such as a binary serialized
+-- __RESOLVED__: Call them “executables”. The name “binary” was used in
+-- early drafts of the extension but it was determined that “pipeline
+-- binary” could have a fairly broad meaning (such as a binary serialized
 -- form of an entire pipeline) and was too big of a namespace for the very
 -- specific needs of this extension.
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_pipeline_library.hs b/src/Vulkan/Extensions/VK_KHR_pipeline_library.hs
--- a/src/Vulkan/Extensions/VK_KHR_pipeline_library.hs
+++ b/src/Vulkan/Extensions/VK_KHR_pipeline_library.hs
@@ -144,8 +144,9 @@
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PipelineLibraryCreateInfoKHR = PipelineLibraryCreateInfoKHR
-  { -- | @pLibraries@ is an array of pipeline libraries to use when creating a
-    -- pipeline.
+  { -- | @pLibraries@ is a pointer to an array of
+    -- 'Vulkan.Core10.Handles.Pipeline' structures specifying pipeline
+    -- libraries to use when creating a pipeline.
     libraries :: Vector Pipeline }
   deriving (Typeable)
 #if defined(GENERIC_INSTANCES)
diff --git a/src/Vulkan/Extensions/VK_KHR_portability_subset.hs b/src/Vulkan/Extensions/VK_KHR_portability_subset.hs
--- a/src/Vulkan/Extensions/VK_KHR_portability_subset.hs
+++ b/src/Vulkan/Extensions/VK_KHR_portability_subset.hs
@@ -56,11 +56,13 @@
 --
 --     -   Neil Trevett, NVIDIA
 --
--- This extension allows a non-conformant Vulkan implementation to be built
--- on top of another non-Vulkan graphics API, and identifies differences
--- between that implementation and a fully-conformant native Vulkan
--- implementation.
+-- == Description
 --
+-- The \`VK_KHR_portability_subset extension allows a non-conformant Vulkan
+-- implementation to be built on top of another non-Vulkan graphics API,
+-- and identifies differences between that implementation and a
+-- fully-conformant native Vulkan implementation.
+--
 -- This extension provides Vulkan implementations with the ability to mark
 -- otherwise-required capabilities as unsupported, or to establish
 -- additional properties and limits that the application should adhere to
@@ -172,18 +174,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDevicePortabilitySubsetFeaturesKHR'
--- structure describe the following features:
+-- This structure describes the following features:
 --
 -- = Description
 --
 -- If the 'PhysicalDevicePortabilitySubsetFeaturesKHR' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the features are supported.
--- 'PhysicalDevicePortabilitySubsetFeaturesKHR' /can/ also be used in the
--- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable the
--- features.
+-- 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. 'PhysicalDevicePortabilitySubsetFeaturesKHR' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
@@ -383,17 +386,15 @@
 -- | VkPhysicalDevicePortabilitySubsetPropertiesKHR - Structure describing
 -- additional properties supported by a portable implementation
 --
--- = Members
---
--- The members of the 'PhysicalDevicePortabilitySubsetPropertiesKHR'
--- structure describe the following implementation-dependent limits:
---
 -- = Description
 --
 -- If the 'PhysicalDevicePortabilitySubsetPropertiesKHR' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- 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)
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_portability_subset.hs-boot b/src/Vulkan/Extensions/VK_KHR_portability_subset.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_portability_subset.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_portability_subset.hs-boot
@@ -56,10 +56,12 @@
 --
 --     -   Neil Trevett, NVIDIA
 --
--- This extension allows a non-conformant Vulkan implementation to be built
--- on top of another non-Vulkan graphics API, and identifies differences
--- between that implementation and a fully-conformant native Vulkan
--- implementation.
+-- == Description
+--
+-- The \`VK_KHR_portability_subset extension allows a non-conformant Vulkan
+-- implementation to be built on top of another non-Vulkan graphics API,
+-- and identifies differences between that implementation and a
+-- fully-conformant native Vulkan implementation.
 --
 -- This extension provides Vulkan implementations with the ability to mark
 -- otherwise-required capabilities as unsupported, or to establish
diff --git a/src/Vulkan/Extensions/VK_KHR_push_descriptor.hs b/src/Vulkan/Extensions/VK_KHR_push_descriptor.hs
--- a/src/Vulkan/Extensions/VK_KHR_push_descriptor.hs
+++ b/src/Vulkan/Extensions/VK_KHR_push_descriptor.hs
@@ -216,8 +216,8 @@
 --
 -- Push descriptors that are
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
--- by a pipeline /must/ not be undefined at the time that a draw or
--- dispatch command is recorded to execute using that pipeline. This
+-- by a pipeline /must/ not be undefined at the time that a drawing or
+-- dispatching command is recorded to execute using that pipeline. This
 -- includes immutable sampler descriptors, which /must/ be pushed before
 -- they are accessed by a pipeline (the immutable samplers are pushed,
 -- rather than the samplers in @pDescriptorWrites@). Push descriptors that
@@ -441,7 +441,7 @@
 -- >     }
 -- > };
 -- >
--- > // create a descriptor update template for descriptor set updates
+-- > // create a descriptor update template for push descriptor set updates
 -- > const VkDescriptorUpdateTemplateCreateInfo createInfo =
 -- > {
 -- >     VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,  // sType
@@ -462,7 +462,6 @@
 -- >     &createInfo,
 -- >     NULL,
 -- >     &myDescriptorUpdateTemplate);
--- > }
 -- >
 -- > AppDataStructure appData;
 -- > // fill appData here or cache it in your engine
@@ -505,17 +504,15 @@
 -- | VkPhysicalDevicePushDescriptorPropertiesKHR - Structure describing push
 -- descriptor limits that can be supported by an implementation
 --
--- = Members
---
--- The members of the 'PhysicalDevicePushDescriptorPropertiesKHR' structure
--- describe the following implementation-dependent limits:
---
 -- = Description
 --
 -- If the 'PhysicalDevicePushDescriptorPropertiesKHR' structure is included
--- in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- 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)
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_ray_query.hs b/src/Vulkan/Extensions/VK_KHR_ray_query.hs
--- a/src/Vulkan/Extensions/VK_KHR_ray_query.hs
+++ b/src/Vulkan/Extensions/VK_KHR_ray_query.hs
@@ -279,17 +279,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceRayQueryFeaturesKHR' structure
--- describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceRayQueryFeaturesKHR' structure is included in the
--- @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceRayQueryFeaturesKHR' /can/ also be used in the @pNext@
--- chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable the features.
+-- @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. 'PhysicalDeviceRayQueryFeaturesKHR' /can/ also be used in the
+-- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively
+-- enable these features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_ray_tracing_pipeline.hs b/src/Vulkan/Extensions/VK_KHR_ray_tracing_pipeline.hs
--- a/src/Vulkan/Extensions/VK_KHR_ray_tracing_pipeline.hs
+++ b/src/Vulkan/Extensions/VK_KHR_ray_tracing_pipeline.hs
@@ -602,14 +602,15 @@
 -- with gl_InstanceIndex. Which should be used for Vulkan in this
 -- extension?
 --
--- RESOLVED: This extension uses gl_InstanceID and maps it to @InstanceId@
--- in SPIR-V. It is acknowledged that this is different than other shader
--- stages in Vulkan. There are two main reasons for the difference here:
+-- __RESOLVED__: This extension uses gl_InstanceID and maps it to
+-- @InstanceId@ in SPIR-V. It is acknowledged that this is different than
+-- other shader stages in Vulkan. There are two main reasons for the
+-- difference here:
 --
 -- -   symmetry with gl_PrimitiveID which is also available in these
 --     shaders
 --
--- -   there is no \"baseInstance\" relevant for these shaders, and so ID
+-- -   there is no “baseInstance” relevant for these shaders, and so ID
 --     makes it more obvious that this is zero-based.
 --
 -- == Sample Code
@@ -984,9 +985,9 @@
 -- -   #VUID-vkCmdTraceRaysKHR-commandBuffer-02701# If the
 --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
 --     point used by this command requires any dynamic state, that state
---     /must/ have been set for @commandBuffer@, and done so after any
---     previously bound pipeline with the corresponding state not specified
---     as dynamic
+--     /must/ have been set or inherited for @commandBuffer@, and done so
+--     after any previously bound pipeline with the corresponding state not
+--     specified as dynamic
 --
 -- -   #VUID-vkCmdTraceRaysKHR-None-02859# There /must/ not have been any
 --     calls to dynamic state setting commands for any state not specified
@@ -1105,7 +1106,7 @@
 --
 -- -   #VUID-vkCmdTraceRaysKHR-None-03429# Any shader group handle
 --     referenced by this call /must/ have been queried from the currently
---     bound ray tracing shader pipeline
+--     bound ray tracing pipeline
 --
 -- -   #VUID-vkCmdTraceRaysKHR-maxPipelineRayRecursionDepth-03679# This
 --     command /must/ not cause a shader call instruction to be executed
@@ -1691,10 +1692,10 @@
                               . (MonadIO io)
                              => -- | @device@ is the logical device that creates the ray tracing pipelines.
                                 Device
-                             -> -- | @deferredOperation@ is an optional
-                                -- 'Vulkan.Extensions.Handles.DeferredOperationKHR' to
+                             -> -- | @deferredOperation@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or the
+                                -- handle of a valid 'Vulkan.Extensions.Handles.DeferredOperationKHR'
                                 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations-requesting request deferral>
-                                -- for this command.
+                                -- object for this command.
                                 DeferredOperationKHR
                              -> -- | @pipelineCache@ is either 'Vulkan.Core10.APIConstants.NULL_HANDLE',
                                 -- indicating that pipeline caching is disabled, or the handle of a valid
@@ -1857,9 +1858,9 @@
 -- -   #VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-02701# If the
 --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
 --     point used by this command requires any dynamic state, that state
---     /must/ have been set for @commandBuffer@, and done so after any
---     previously bound pipeline with the corresponding state not specified
---     as dynamic
+--     /must/ have been set or inherited for @commandBuffer@, and done so
+--     after any previously bound pipeline with the corresponding state not
+--     specified as dynamic
 --
 -- -   #VUID-vkCmdTraceRaysIndirectKHR-None-02859# There /must/ not have
 --     been any calls to dynamic state setting commands for any state not
@@ -1981,7 +1982,7 @@
 --
 -- -   #VUID-vkCmdTraceRaysIndirectKHR-None-03429# Any shader group handle
 --     referenced by this call /must/ have been queried from the currently
---     bound ray tracing shader pipeline
+--     bound ray tracing pipeline
 --
 -- -   #VUID-vkCmdTraceRaysIndirectKHR-maxPipelineRayRecursionDepth-03679#
 --     This command /must/ not cause a shader call instruction to be
@@ -2155,7 +2156,7 @@
 --     1 /must/ be in the buffer device address range of the same buffer
 --
 -- -   #VUID-vkCmdTraceRaysIndirectKHR-rayTracingPipelineTraceRaysIndirect-03637#
---     the
+--     The
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipelineTraceRaysIndirect ::rayTracingPipelineTraceRaysIndirect>
 --     feature /must/ be enabled
 --
@@ -2232,8 +2233,8 @@
                         -> -- | @pCallableShaderBindingTable@ is a 'StridedDeviceAddressRegionKHR' that
                            -- holds the shader binding table data for the callable shader stage.
                            ("callableShaderBindingTable" ::: StridedDeviceAddressRegionKHR)
-                        -> -- | @indirectDeviceAddress@ is a buffer device address which points to a
-                           -- 'TraceRaysIndirectCommandKHR' structure which contains the trace ray
+                        -> -- | @indirectDeviceAddress@ is a buffer device address which is a pointer to
+                           -- a 'TraceRaysIndirectCommandKHR' structure containing the trace ray
                            -- parameters.
                            ("indirectDeviceAddress" ::: DeviceAddress)
                         -> io ()
@@ -2682,9 +2683,9 @@
 --     @NULL@
 --
 -- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraries-03591# Each
---     element of the @pLibraries@ member of @pLibraryInfo@ /must/ have
---     been created with the value of @maxPipelineRayRecursionDepth@ equal
---     to that in this pipeline
+--     element of @pLibraryInfo->pLibraries@ /must/ have been created with
+--     the value of @maxPipelineRayRecursionDepth@ equal to that in this
+--     pipeline
 --
 -- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03592# If
 --     @pLibraryInfo@ is not @NULL@, each element of its @pLibraries@
@@ -2700,56 +2701,56 @@
 -- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-03594# If @flags@
 --     includes
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR',
---     each element of the @pLibraries@ member of @libraries@ /must/ have
---     been created with the
+--     each element of @pLibraryInfo->pLibraries@ /must/ have been created
+--     with the
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR'
 --     bit set
 --
 -- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-04718# If @flags@
 --     includes
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR',
---     each element of the @pLibraries@ member of @libraries@ /must/ have
---     been created with the
+--     each element of @pLibraryInfo->pLibraries@ /must/ have been created
+--     with the
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'
 --     bit set
 --
 -- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-04719# If @flags@
 --     includes
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR',
---     each element of the @pLibraries@ member of @libraries@ /must/ have
---     been created with the
+--     each element of @pLibraryInfo->pLibraries@ /must/ have been created
+--     with the
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'
 --     bit set
 --
 -- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-04720# If @flags@
 --     includes
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR',
---     each element of the @pLibraries@ member of @libraries@ /must/ have
---     been created with the
+--     each element of @pLibraryInfo->pLibraries@ /must/ have been created
+--     with the
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'
 --     bit set
 --
 -- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-04721# If @flags@
 --     includes
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR',
---     each element of the @pLibraries@ member of @libraries@ /must/ have
---     been created with the
+--     each element of @pLibraryInfo->pLibraries@ /must/ have been created
+--     with the
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'
 --     bit set
 --
 -- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-04722# If @flags@
 --     includes
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR',
---     each element of the @pLibraries@ member of @libraries@ /must/ have
---     been created with the
+--     each element of @pLibraryInfo->pLibraries@ /must/ have been created
+--     with the
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'
 --     bit set
 --
 -- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-04723# If @flags@
 --     includes
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR',
---     each element of the @pLibraries@ member of @libraries@ /must/ have
---     been created with the
+--     each element of @pLibraryInfo->pLibraries@ /must/ have been created
+--     with the
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'
 --     bit set
 --
@@ -3025,11 +3026,15 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceRayTracingPipelineFeaturesKHR'
--- structure describe the following features:
+-- This structure describes the following features:
 --
 -- = Description
 --
+-- -   @sType@ is the type of this structure.
+--
+-- -   @pNext@ is @NULL@ or a pointer to a structure extending this
+--     structure.
+--
 -- -   #features-rayTracingPipeline# @rayTracingPipeline@ indicates whether
 --     the implementation supports the ray tracing pipeline functionality.
 --     See
@@ -3059,12 +3064,14 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-traversal-culling-primitive primitive culling during ray traversal>.
 --
 -- If the 'PhysicalDeviceRayTracingPipelineFeaturesKHR' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceRayTracingPipelineFeaturesKHR' /can/ also be used in the
--- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable the
--- features.
+-- 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. 'PhysicalDeviceRayTracingPipelineFeaturesKHR' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage
 --
@@ -3156,9 +3163,12 @@
 -- = Description
 --
 -- If the 'PhysicalDeviceRayTracingPipelinePropertiesKHR' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- 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.
 --
 -- Limits specified by this structure /must/ match those specified with the
 -- same name in
@@ -3170,7 +3180,7 @@
 --
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceRayTracingPipelinePropertiesKHR = PhysicalDeviceRayTracingPipelinePropertiesKHR
-  { -- | @shaderGroupHandleSize@ size in bytes of the shader header.
+  { -- | @shaderGroupHandleSize@ is the size in bytes of the shader header.
     shaderGroupHandleSize :: Word32
   , -- | #limits-maxRayRecursionDepth# @maxRayRecursionDepth@ is the maximum
     -- number of levels of ray recursion allowed in a trace command.
@@ -3272,8 +3282,8 @@
 --     buffer
 --
 -- -   #VUID-VkStridedDeviceAddressRegionKHR-size-04632# If @size@ is not
---     zero, @stride@ /must/ be less than the size of the buffer from which
---     @deviceAddress@ was queried
+--     zero, @stride@ /must/ be less than or equal to the size of the
+--     buffer from which @deviceAddress@ was queried
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_ray_tracing_pipeline.hs-boot b/src/Vulkan/Extensions/VK_KHR_ray_tracing_pipeline.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_ray_tracing_pipeline.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_ray_tracing_pipeline.hs-boot
@@ -602,14 +602,15 @@
 -- with gl_InstanceIndex. Which should be used for Vulkan in this
 -- extension?
 --
--- RESOLVED: This extension uses gl_InstanceID and maps it to @InstanceId@
--- in SPIR-V. It is acknowledged that this is different than other shader
--- stages in Vulkan. There are two main reasons for the difference here:
+-- __RESOLVED__: This extension uses gl_InstanceID and maps it to
+-- @InstanceId@ in SPIR-V. It is acknowledged that this is different than
+-- other shader stages in Vulkan. There are two main reasons for the
+-- difference here:
 --
 -- -   symmetry with gl_PrimitiveID which is also available in these
 --     shaders
 --
--- -   there is no \"baseInstance\" relevant for these shaders, and so ID
+-- -   there is no “baseInstance” relevant for these shaders, and so ID
 --     makes it more obvious that this is zero-based.
 --
 -- == Sample Code
diff --git a/src/Vulkan/Extensions/VK_KHR_sampler_ycbcr_conversion.hs b/src/Vulkan/Extensions/VK_KHR_sampler_ycbcr_conversion.hs
--- a/src/Vulkan/Extensions/VK_KHR_sampler_ycbcr_conversion.hs
+++ b/src/Vulkan/Extensions/VK_KHR_sampler_ycbcr_conversion.hs
@@ -336,11 +336,11 @@
 --
 --     -   Added query function, formats as RGB, clarifications
 --
--- -   Revision 5, 2017-04 (Andrew Garrard)
+-- -   Revision 5, 2017-04-?? (Andrew Garrard)
 --
 --     -   Simplified query and removed output conversions
 --
--- -   Revision 6, 2017-4-24 (Andrew Garrard)
+-- -   Revision 6, 2017-04-24 (Andrew Garrard)
 --
 --     -   Tidying, incorporated new image query, restored transfer
 --         functions
@@ -348,7 +348,7 @@
 -- -   Revision 7, 2017-04-25 (Andrew Garrard)
 --
 --     -   Added cosited option\/midpoint requirement for formats,
---         \"bypassConversion\"
+--         “bypassConversion”
 --
 -- -   Revision 8, 2017-04-25 (Andrew Garrard)
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_clock.hs b/src/Vulkan/Extensions/VK_KHR_shader_clock.hs
--- a/src/Vulkan/Extensions/VK_KHR_shader_clock.hs
+++ b/src/Vulkan/Extensions/VK_KHR_shader_clock.hs
@@ -61,9 +61,9 @@
 -- 'Vulkan.Core10.Handles.Device'.
 --
 -- When using GLSL source-based shading languages, the
--- @clockRealtime@*@EXT@() timing functions map to the @OpReadClockKHR@
+-- @clockRealtime*EXT@() timing functions map to the @OpReadClockKHR@
 -- instruction with a scope of 'Vulkan.Core10.Handles.Device', and the
--- @clock@*@ARB@() timing functions map to the @OpReadClockKHR@ instruction
+-- @clock*ARB@() timing functions map to the @OpReadClockKHR@ instruction
 -- with a scope of @Subgroup@.
 --
 -- == New Structures
@@ -137,15 +137,21 @@
 -- | VkPhysicalDeviceShaderClockFeaturesKHR - Structure describing features
 -- supported by VK_KHR_shader_clock
 --
+-- = Members
+--
+-- This structure describes the following features:
+--
 -- = Description
 --
 -- If the 'PhysicalDeviceShaderClockFeaturesKHR' structure is included in
--- the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether each feature is supported.
--- 'PhysicalDeviceShaderClockFeaturesKHR' can also be included in the
--- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable the
--- features.
+-- 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. 'PhysicalDeviceShaderClockFeaturesKHR' /can/ also be used in
+-- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_clock.hs-boot b/src/Vulkan/Extensions/VK_KHR_shader_clock.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_shader_clock.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_shader_clock.hs-boot
@@ -61,9 +61,9 @@
 -- 'Vulkan.Core10.Handles.Device'.
 --
 -- When using GLSL source-based shading languages, the
--- @clockRealtime@*@EXT@() timing functions map to the @OpReadClockKHR@
+-- @clockRealtime*EXT@() timing functions map to the @OpReadClockKHR@
 -- instruction with a scope of 'Vulkan.Core10.Handles.Device', and the
--- @clock@*@ARB@() timing functions map to the @OpReadClockKHR@ instruction
+-- @clock*ARB@() timing functions map to the @OpReadClockKHR@ instruction
 -- with a scope of @Subgroup@.
 --
 -- == New Structures
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_draw_parameters.hs b/src/Vulkan/Extensions/VK_KHR_shader_draw_parameters.hs
--- a/src/Vulkan/Extensions/VK_KHR_shader_draw_parameters.hs
+++ b/src/Vulkan/Extensions/VK_KHR_shader_draw_parameters.hs
@@ -74,10 +74,10 @@
 -- variables in Vulkan:
 --
 -- -   @BaseInstance@, which contains the @firstInstance@ parameter passed
---     to draw commands,
+--     to drawing commands,
 --
 -- -   @BaseVertex@, which contains the @firstVertex@ or @vertexOffset@
---     parameter passed to draw commands, and
+--     parameter passed to drawing commands, and
 --
 -- -   @DrawIndex@, which contains the index of the draw call currently
 --     being processed from an indirect draw call.
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_float_controls.hs b/src/Vulkan/Extensions/VK_KHR_shader_float_controls.hs
--- a/src/Vulkan/Extensions/VK_KHR_shader_float_controls.hs
+++ b/src/Vulkan/Extensions/VK_KHR_shader_float_controls.hs
@@ -126,11 +126,15 @@
 -- 2) What is the denorm behavior for intermediate results?
 --
 -- __RESOLVED__: When a SPIR-V instruction is implemented as a sequence of
--- other instructions: - in the @DenormFlushToZero@ execution mode the
--- intermediate instructions may flush denormals, the final result of the
--- sequence /must/ not be denormal. - in the @DenormPreserve@ execution
--- mode denormals must be preserved throughout the whole sequence.
+-- other instructions:
 --
+-- -   in the @DenormFlushToZero@ execution mode, the intermediate
+--     instructions may flush denormals, the final result of the sequence
+--     /must/ not be denormal.
+--
+-- -   in the @DenormPreserve@ execution mode, denormals must be preserved
+--     throughout the whole sequence.
+--
 -- 3) Do denorm and rounding mode controls apply to @OpSpecConstantOp@?
 --
 -- __RESOLVED__: Yes, except when the opcode is @OpQuantizeToF16@.
@@ -141,12 +145,12 @@
 --
 -- __RESOLVED__: No, these instructions unconditionally round towards zero.
 --
--- 5) Do any of the \"Pack\" GLSL.std.450 instructions count as conversion
--- instructions and have the rounding mode apply?
+-- 5) Do any of the “Pack” GLSL.std.450 instructions count as conversion
+-- instructions and have the rounding mode applied?
 --
--- __RESOLVED__: No, only instructions listed in the section \"3.32.11.
--- Conversion Instructions\" of the SPIR-V specification count as
--- conversion instructions.
+-- __RESOLVED__: No, only instructions listed in “section 3.32.11.
+-- Conversion Instructions” of the SPIR-V specification count as conversion
+-- instructions.
 --
 -- 6) When using inf\/nan-ignore mode, what is expected of @OpIsNan@ and
 -- @OpIsInf@?
@@ -159,7 +163,7 @@
 -- The original versions of @VK_KHR_shader_float_controls@ shipped with
 -- booleans named “separateDenormSettings” and
 -- “separateRoundingModeSettings”, which at first glance could have
--- indicated “they can all independently set, or not”. However the spec
+-- indicated “they can all be set independently, or not”. However the spec
 -- language as written indicated that the 32-bit value could always be set
 -- independently, and only the 16- and 64-bit controls needed to be the
 -- same if these values were 'Vulkan.Core10.FundamentalTypes.FALSE'.
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_terminate_invocation.hs b/src/Vulkan/Extensions/VK_KHR_shader_terminate_invocation.hs
--- a/src/Vulkan/Extensions/VK_KHR_shader_terminate_invocation.hs
+++ b/src/Vulkan/Extensions/VK_KHR_shader_terminate_invocation.hs
@@ -137,18 +137,20 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceShaderTerminateInvocationFeaturesKHR'
--- structure describe the following feature:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceShaderTerminateInvocationFeaturesKHR' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with a value indicating whether the feature is supported.
--- 'PhysicalDeviceShaderTerminateInvocationFeaturesKHR' /can/ also be
--- included in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to enable the features.
+-- 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. 'PhysicalDeviceShaderTerminateInvocationFeaturesKHR' /can/
+-- also be used in the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
+-- features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_spirv_1_4.hs b/src/Vulkan/Extensions/VK_KHR_spirv_1_4.hs
--- a/src/Vulkan/Extensions/VK_KHR_spirv_1_4.hs
+++ b/src/Vulkan/Extensions/VK_KHR_spirv_1_4.hs
@@ -97,7 +97,7 @@
 -- version-generic query for SPIR-V version? SPIR-V 1.4 doesn’t need any
 -- other API changes.
 --
--- RESOLVED: Just expose SPIR-V 1.4.
+-- __RESOLVED__: Just expose SPIR-V 1.4.
 --
 -- Most new SPIR-V versions introduce optionally-required capabilities or
 -- have implementation-defined limits, and would need more API and
@@ -118,7 +118,7 @@
 -- 2. Can different stages of the same pipeline use shaders with different
 -- SPIR-V versions?
 --
--- RESOLVED: Yes.
+-- __RESOLVED__: Yes.
 --
 -- Mixing SPIR-V versions 1.0-1.3 in the same pipeline has not been
 -- disallowed, so it would be inconsistent to disallow mixing 1.4 with
@@ -129,7 +129,7 @@
 -- promoted to core in 1.4 be enabled in order to use that functionality in
 -- a SPIR-V 1.4 module?
 --
--- RESOLVED: No, with caveats.
+-- __RESOLVED__: No, with caveats.
 --
 -- The SPIR-V 1.4 module does not need to declare the SPIR-V extensions,
 -- since the functionality is now part of core, so there is no need to
diff --git a/src/Vulkan/Extensions/VK_KHR_surface.hs b/src/Vulkan/Extensions/VK_KHR_surface.hs
--- a/src/Vulkan/Extensions/VK_KHR_surface.hs
+++ b/src/Vulkan/Extensions/VK_KHR_surface.hs
@@ -165,16 +165,16 @@
 -- 'Vulkan.Core10.Handles.Device' (and therefore on enabled extensions and
 -- features) for the queries, Vulkan was released only with the
 -- 'Vulkan.Core10.Handles.PhysicalDevice' versions. Many cases can be
--- resolved by a Valid Usage. And\\or by a separate @pNext@ chain version
--- of the query struct specific to a given extension or parameters, via
--- extensible versions of the queries:
+-- resolved by a Valid Usage statement, and\/or by a separate @pNext@ chain
+-- version of the query struct specific to a given extension or parameters,
+-- via extensible versions of the queries:
 -- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR',
--- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceFormats2KHR',
+-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceFormats2KHR'.
 -- and
--- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.getPhysicalDeviceSurfacePresentModes2EXT'.
+-- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.getPhysicalDeviceSurfacePresentModes2EXT',
 --
--- 3) Should Vulkan include support Xlib or XCB as the API for accessing
--- the X Window System platform?
+-- 3) Should Vulkan support Xlib or XCB as the API for accessing the X
+-- Window System platform?
 --
 -- __RESOLVED__: Both. XCB is a more modern and efficient API, but Xlib
 -- usage is deeply ingrained in many applications and likely will remain in
@@ -262,9 +262,9 @@
 --     -   Added error section describing when each error is expected to be
 --         reported.
 --
---     -   Replaced the term \"queue node index\" with \"queue family
---         index\" in the spec as that is the agreed term to be used in the
---         latest version of the core header and spec.
+--     -   Replaced the term “queue node index” with “queue family index”
+--         in the spec as that is the agreed term to be used in the latest
+--         version of the core header and spec.
 --
 --     -   Replaced bool32_t with VkBool32.
 --
@@ -278,7 +278,7 @@
 --         functions, etc. This makes it compliant with the proposed
 --         standard for Vulkan extensions.
 --
---     -   Switched from \"revision\" to \"version\", including use of the
+--     -   Switched from “revision” to “version”, including use of the
 --         VK_MAKE_VERSION macro in the header file.
 --
 --     -   Did miscellaneous cleanup, etc.
@@ -287,7 +287,7 @@
 --     from James Jones)
 --
 --     -   Moved the surface transform enums here from VK_WSI_swapchain so
---         they could be re-used by VK_WSI_display.
+--         they could be reused by VK_WSI_display.
 --
 -- -   Revision 16, 2015-09-01 (James Jones)
 --
@@ -746,12 +746,10 @@
 -- return the variable is overwritten with the number of structures
 -- actually written to @pSurfaceFormats@. If the value of
 -- @pSurfaceFormatCount@ is less than the number of format pairs supported,
--- at most @pSurfaceFormatCount@ structures will be written. If
--- @pSurfaceFormatCount@ is smaller than the number of format pairs
--- supported for the given @surface@,
+-- at most @pSurfaceFormatCount@ structures will be written, and
 -- 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned instead of
--- 'Vulkan.Core10.Enums.Result.SUCCESS' to indicate that not all the
--- available values were returned.
+-- 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate that not all the
+-- available format pairs were returned.
 --
 -- The number of format pairs supported /must/ be greater than or equal to
 -- 1. @pSurfaceFormats@ /must/ not contain an entry whose value for
@@ -864,11 +862,10 @@
 -- return the variable is overwritten with the number of values actually
 -- written to @pPresentModes@. If the value of @pPresentModeCount@ is less
 -- than the number of presentation modes supported, at most
--- @pPresentModeCount@ values will be written. If @pPresentModeCount@ is
--- smaller than the number of presentation modes supported for the given
--- @surface@, 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned
--- instead of 'Vulkan.Core10.Enums.Result.SUCCESS' to indicate that not all
--- the available values were returned.
+-- @pPresentModeCount@ values will be written, and
+-- 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned instead of
+-- 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate that not all the
+-- available modes were returned.
 --
 -- == Valid Usage (Implicit)
 --
@@ -1025,8 +1022,8 @@
     -- 'PRESENT_MODE_MAILBOX_KHR', 'PRESENT_MODE_FIFO_KHR' or
     -- 'PRESENT_MODE_FIFO_RELAXED_KHR' for the surface on the specified device.
     -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
-    -- /must/ be included in the set but implementations /may/ support
-    -- additional usages.
+    -- /must/ be included in the set. Implementations /may/ support additional
+    -- usages.
     supportedUsageFlags :: ImageUsageFlags
   }
   deriving (Typeable)
@@ -1058,7 +1055,10 @@
     poke ((p `plusPtr` 16 :: Ptr Extent2D)) (zero)
     poke ((p `plusPtr` 24 :: Ptr Extent2D)) (zero)
     poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 36 :: Ptr SurfaceTransformFlagsKHR)) (zero)
     poke ((p `plusPtr` 40 :: Ptr SurfaceTransformFlagBitsKHR)) (zero)
+    poke ((p `plusPtr` 44 :: Ptr CompositeAlphaFlagsKHR)) (zero)
+    poke ((p `plusPtr` 48 :: Ptr ImageUsageFlags)) (zero)
     f
 
 instance FromCStruct SurfaceCapabilitiesKHR where
diff --git a/src/Vulkan/Extensions/VK_KHR_surface.hs-boot b/src/Vulkan/Extensions/VK_KHR_surface.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_surface.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_surface.hs-boot
@@ -165,16 +165,16 @@
 -- 'Vulkan.Core10.Handles.Device' (and therefore on enabled extensions and
 -- features) for the queries, Vulkan was released only with the
 -- 'Vulkan.Core10.Handles.PhysicalDevice' versions. Many cases can be
--- resolved by a Valid Usage. And\\or by a separate @pNext@ chain version
--- of the query struct specific to a given extension or parameters, via
--- extensible versions of the queries:
+-- resolved by a Valid Usage statement, and\/or by a separate @pNext@ chain
+-- version of the query struct specific to a given extension or parameters,
+-- via extensible versions of the queries:
 -- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR',
--- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceFormats2KHR',
+-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceFormats2KHR'.
 -- and
--- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.getPhysicalDeviceSurfacePresentModes2EXT'.
+-- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.getPhysicalDeviceSurfacePresentModes2EXT',
 --
--- 3) Should Vulkan include support Xlib or XCB as the API for accessing
--- the X Window System platform?
+-- 3) Should Vulkan support Xlib or XCB as the API for accessing the X
+-- Window System platform?
 --
 -- __RESOLVED__: Both. XCB is a more modern and efficient API, but Xlib
 -- usage is deeply ingrained in many applications and likely will remain in
@@ -262,9 +262,9 @@
 --     -   Added error section describing when each error is expected to be
 --         reported.
 --
---     -   Replaced the term \"queue node index\" with \"queue family
---         index\" in the spec as that is the agreed term to be used in the
---         latest version of the core header and spec.
+--     -   Replaced the term “queue node index” with “queue family index”
+--         in the spec as that is the agreed term to be used in the latest
+--         version of the core header and spec.
 --
 --     -   Replaced bool32_t with VkBool32.
 --
@@ -278,7 +278,7 @@
 --         functions, etc. This makes it compliant with the proposed
 --         standard for Vulkan extensions.
 --
---     -   Switched from \"revision\" to \"version\", including use of the
+--     -   Switched from “revision” to “version”, including use of the
 --         VK_MAKE_VERSION macro in the header file.
 --
 --     -   Did miscellaneous cleanup, etc.
@@ -287,7 +287,7 @@
 --     from James Jones)
 --
 --     -   Moved the surface transform enums here from VK_WSI_swapchain so
---         they could be re-used by VK_WSI_display.
+--         they could be reused by VK_WSI_display.
 --
 -- -   Revision 16, 2015-09-01 (James Jones)
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_swapchain.hs b/src/Vulkan/Extensions/VK_KHR_swapchain.hs
--- a/src/Vulkan/Extensions/VK_KHR_swapchain.hs
+++ b/src/Vulkan/Extensions/VK_KHR_swapchain.hs
@@ -307,7 +307,7 @@
 -- __RESOLVED__: Accept a semaphore to signal as an object handle. This
 -- avoids the need to specify whether the application must destroy the
 -- semaphore or whether it is owned by the swapchain, and if the latter,
--- what its lifetime is and whether it can be re-used for other operations
+-- what its lifetime is and whether it can be reused for other operations
 -- once it is received from 'acquireNextImageKHR'.
 --
 -- 11) What types of swapchain queuing behavior should be exposed? Options
@@ -329,7 +329,7 @@
 --     single-entry queue is used to hold pending presentation requests. If
 --     the queue is full when a new presentation request is received, the
 --     new request replaces the existing entry, and any images associated
---     with the prior entry become available for re-use by the application.
+--     with the prior entry become available for reuse by the application.
 --
 -- -   FIFO queue: Waits for the next vertical blanking period to update
 --     the current image. No tearing should be observed. An internal queue
@@ -340,10 +340,10 @@
 --     queue is non-empty
 --
 -- Not all surfaces will support all of these modes, so the modes supported
--- will be returned using a surface info query. All surfaces must support
--- the FIFO queue mode. Applications must choose one of these modes up
--- front when creating a swapchain. Switching modes can be accomplished by
--- recreating the swapchain.
+-- will be returned using a surface information query. All surfaces must
+-- support the FIFO queue mode. Applications must choose one of these modes
+-- up front when creating a swapchain. Switching modes can be accomplished
+-- by recreating the swapchain.
 --
 -- 12) Can 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_MAILBOX_KHR'
 -- provide non-blocking guarantees for 'acquireNextImageKHR'? If so, what
@@ -379,11 +379,11 @@
 -- to indicate there are no practical limits on the number of images in a
 -- swapchain?
 --
--- __RESOLVED__: Yes. There where often be cases where there is no
--- practical limit to the number of images in a swapchain other than the
--- amount of available resources (I.e., memory) in the system. Trying to
--- derive a hard limit from things like memory size is prone to failure. It
--- is better in such cases to leave it to applications to figure such soft
+-- __RESOLVED__: Yes. There will often be cases where there is no practical
+-- limit to the number of images in a swapchain other than the amount of
+-- available resources (i.e., memory) in the system. Trying to derive a
+-- hard limit from things like memory size is prone to failure. It is
+-- better in such cases to leave it to applications to figure such soft
 -- limits out via trial\/failure iterations.
 --
 -- 15) Should there be a special value for
@@ -411,7 +411,7 @@
 -- __RESOLVED__: Applications can query both the supported and current
 -- transforms of a surface. Both are specified relative to the device’s
 -- “natural” display rotation and direction. The supported transforms
--- indicates which orientations the presentation engine accepts images in.
+-- indicate which orientations the presentation engine accepts images in.
 -- For example, a presentation engine that does not support transforming
 -- surfaces as part of presentation, and which is presenting to a surface
 -- that is displayed with a 90-degree rotation, would return only one
@@ -484,7 +484,7 @@
 -- obscuring their target surface?
 --
 -- __RESOLVED__: Applications can choose which behavior they prefer.
--- Allowing the content to be clipped could enable more optimal
+-- Allowing the content to be clipped could enable more efficient
 -- presentation methods on some platforms, but some applications might rely
 -- on the content of presentable images to perform techniques such as
 -- partial updates or motion blurs.
@@ -513,9 +513,9 @@
 -- using such formats does not guarantee working in a specific color space.
 -- It merely means that the hardware can directly support applying the
 -- non-linear transfer functions defined by the sRGB standard color space
--- when reading from or writing to images of that these formats. Still, it
--- is unlikely that a swapchain will expose a @*_SRGB@ format along with
--- any color space other than
+-- when reading from or writing to images of those formats. Still, it is
+-- unlikely that a swapchain will expose a @*_SRGB@ format along with any
+-- color space other than
 -- 'Vulkan.Extensions.VK_KHR_surface.COLOR_SPACE_SRGB_NONLINEAR_KHR'.
 --
 -- On the other hand, non-@*_SRGB@ formats will be very likely exposed in
@@ -525,7 +525,7 @@
 -- characteristics. In this case the application is responsible for
 -- applying the transfer function, for instance by using shader math.
 --
--- 25) How are the lifetime of surfaces and swapchains targeting them
+-- 25) How are the lifetimes of surfaces and swapchains targeting them
 -- related?
 --
 -- __RESOLVED__: A surface must outlive any swapchains targeting it. A
@@ -665,7 +665,7 @@
 --
 --     -   Renamed VkSurfaceCapabilityPropertiesKHR to
 --         VkSurfacePropertiesKHR to better convey the mutable nature of
---         the info it contains.
+--         the information it contains.
 --
 -- -   Revision 12, 2015-05-28 (James Jones)
 --
@@ -753,8 +753,8 @@
 -- -   Revision 24, 2015-06-19 (Ian Elliott)
 --
 --     -   Changed special value for VkSurfacePropertiesKHR::currentExtent
---         back to \"-1\" from \"0\". This value will never need to be
---         unsigned, and \"0\" is actually a legal value.
+--         back to “-1” from “0”. This value will never need to be
+--         unsigned, and “0” is actually a legal value.
 --
 -- -   Revision 25, 2015-06-23 (Ian Elliott)
 --
@@ -773,12 +773,12 @@
 --
 -- -   Revision 28, 2015-06-25 (James Jones)
 --
---     -   Added the \"inherit\" bits to the rotation and mirroring flags
---         and the associated issue 21.
+--     -   Added the “inherit” bits to the rotation and mirroring flags and
+--         the associated issue 21.
 --
 -- -   Revision 29, 2015-06-25 (James Jones)
 --
---     -   Added the \"clipped\" flag to VkSwapchainCreateInfoKHR, and the
+--     -   Added the “clipped” flag to VkSwapchainCreateInfoKHR, and the
 --         associated issue 22.
 --
 --     -   Specified that presenting an image does not modify it.
@@ -791,13 +791,13 @@
 --
 -- -   Revision 31, 2015-06-26 (Ian Elliott)
 --
---     -   Example of new VkSwapchainCreateInfoKHR members,
---         \"oldSwapchain\" and \"clipped\".
+--     -   Example of new VkSwapchainCreateInfoKHR members, “oldSwapchain”
+--         and “clipped”.
 --
 --     -   Example of using VkSurfacePropertiesKHR::{min|max}ImageCount to
 --         set VkSwapchainCreateInfoKHR::minImageCount.
 --
---     -   Rename vkGetSurfaceInfoKHR()\'s 4th parameter to \"pDataSize\",
+--     -   Rename vkGetSurfaceInfoKHR()\'s 4th parameter to “pDataSize”,
 --         for consistency with other functions.
 --
 --     -   Add macro with C-string name of extension (just to header file).
@@ -805,7 +805,7 @@
 -- -   Revision 32, 2015-06-26 (James Jones)
 --
 --     -   Minor adjustments to the language describing the behavior of
---         \"oldSwapchain\"
+--         “oldSwapchain”
 --
 --     -   Fixed the version date on my previous two updates.
 --
@@ -815,7 +815,7 @@
 --
 -- -   Revision 34, 2015-06-26 (Ian Elliott)
 --
---     -   Rename vkQueuePresentKHR()\'s 2nd parameter to \"pPresentInfo\",
+--     -   Rename vkQueuePresentKHR()\'s 2nd parameter to “pPresentInfo”,
 --         for consistency with other functions.
 --
 -- -   Revision 35, 2015-06-26 (Jason Ekstrand)
@@ -855,8 +855,8 @@
 --
 -- -   Revision 40, 2015-07-10 (Ian Elliott)
 --
---     -   Updated to work with version 138 of the \"vulkan.h\" header.
---         This includes declaring the VkSwapchainKHR type using the new
+--     -   Updated to work with version 138 of the @vulkan.h@ header. This
+--         includes declaring the VkSwapchainKHR type using the new
 --         VK_DEFINE_NONDISP_HANDLE macro, and no longer extending
 --         VkObjectType (which was eliminated).
 --
@@ -869,7 +869,7 @@
 --     -   Updated query mechanism to reflect the convention changes done
 --         in the core spec.
 --
---     -   Removed \"queue\" from the name of
+--     -   Removed “queue” from the name of
 --         VK_STRUCTURE_TYPE_QUEUE_PRESENT_INFO_KHR to be consistent with
 --         the established naming convention.
 --
@@ -895,7 +895,7 @@
 --         VkSwapchainCreateInfoKHR struct).
 --
 --     -   Corrected a typo in header file (last parameter in
---         PFN_vkGetSurfacePropertiesKHR was missing \"KHR\" at the end of
+--         PFN_vkGetSurfacePropertiesKHR was missing “KHR” at the end of
 --         type: VkSurfacePropertiesKHR).
 --
 -- -   Revision 46, 2015-08-20 (Ian Elliott)
@@ -904,7 +904,7 @@
 --         functions, etc. This makes it compliant with the proposed
 --         standard for Vulkan extensions.
 --
---     -   Switched from \"revision\" to \"version\", including use of the
+--     -   Switched from “revision” to “version”, including use of the
 --         VK_MAKE_VERSION macro in the header file.
 --
 --     -   Made improvements to several descriptions.
@@ -918,7 +918,7 @@
 --     from James Jones)
 --
 --     -   Moved the surface transform enums to VK_WSI_swapchain so they
---         could be re-used by VK_WSI_display.
+--         could be reused by VK_WSI_display.
 --
 -- -   Revision 48, 2015-09-01 (James Jones)
 --
@@ -1029,22 +1029,21 @@
 --
 -- -   Revision 68, 2016-04-05 (Ian Elliott)
 --
---     -   Moved the \"validity\" include for vkAcquireNextImage to be in
---         its proper place, after the prototype and list of parameters.
+--     -   Moved the “validity” include for vkAcquireNextImage to be in its
+--         proper place, after the prototype and list of parameters.
 --
 --     -   Clarified language about presentable images, including how they
 --         are acquired, when applications can and cannot use them, etc. As
---         part of this, removed language about \"ownership\" of
---         presentable images, and replaced it with more-consistent
---         language about presentable images being \"acquired\" by the
---         application.
+--         part of this, removed language about “ownership” of presentable
+--         images, and replaced it with more-consistent language about
+--         presentable images being “acquired” by the application.
 --
 -- -   2016-08-23 (Ian Elliott)
 --
 --     -   Update the example code, to use the final API command names, to
 --         not have so many characters per line, and to split out a new
 --         example to show how to obtain function pointers. This code is
---         more similar to the LunarG \"cube\" demo program.
+--         more similar to the LunarG “cube” demo program.
 --
 -- -   2016-08-25 (Ian Elliott)
 --
@@ -1516,11 +1515,10 @@
 -- variable is overwritten with the number of structures actually written
 -- to @pSwapchainImages@. If the value of @pSwapchainImageCount@ is less
 -- than the number of presentable images for @swapchain@, at most
--- @pSwapchainImageCount@ structures will be written. If
--- @pSwapchainImageCount@ is smaller than the number of presentable images
--- for @swapchain@, 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be
--- returned instead of 'Vulkan.Core10.Enums.Result.SUCCESS' to indicate
--- that not all the available values were returned.
+-- @pSwapchainImageCount@ structures will be written, and
+-- 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned instead of
+-- 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate that not all the
+-- available presentable images were returned.
 --
 -- == Valid Usage (Implicit)
 --
@@ -2201,11 +2199,10 @@
 -- elements in the @pRects@ array, and on return the variable is
 -- overwritten with the number of structures actually written to @pRects@.
 -- If the value of @pRectCount@ is less than the number of rectangles, at
--- most @pRectCount@ structures will be written. If @pRectCount@ is smaller
--- than the number of rectangles used for the given @surface@,
+-- most @pRectCount@ structures will be written, and
 -- 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned instead of
--- 'Vulkan.Core10.Enums.Result.SUCCESS' to indicate that not all the
--- available values were returned.
+-- 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate that not all the
+-- available rectangles were returned.
 --
 -- The values returned by this command are not invariant, and /may/ change
 -- in response to the surface being moved, resized, or occluded.
@@ -2288,84 +2285,6 @@
 --
 -- = Description
 --
--- Note
---
--- On some platforms, it is normal that @maxImageExtent@ /may/ become @(0,
--- 0)@, for example when the window is minimized. In such a case, it is not
--- possible to create a swapchain due to the Valid Usage requirements.
---
--- -   @imageArrayLayers@ is the number of views in a multiview\/stereo
---     surface. For non-stereoscopic-3D applications, this value is 1.
---
--- -   @imageUsage@ is a bitmask of
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits'
---     describing the intended usage of the (acquired) swapchain images.
---
--- -   @imageSharingMode@ is the sharing mode used for the image(s) of the
---     swapchain.
---
--- -   @queueFamilyIndexCount@ is the number of queue families having
---     access to the image(s) of the swapchain when @imageSharingMode@ is
---     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT'.
---
--- -   @pQueueFamilyIndices@ is a pointer to an array of queue family
---     indices having access to the images(s) of the swapchain when
---     @imageSharingMode@ is
---     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT'.
---
--- -   @preTransform@ is a
---     'Vulkan.Extensions.VK_KHR_surface.SurfaceTransformFlagBitsKHR' value
---     describing the transform, relative to the presentation engine’s
---     natural orientation, applied to the image content prior to
---     presentation. If it does not match the @currentTransform@ value
---     returned by
---     'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR',
---     the presentation engine will transform the image content as part of
---     the presentation operation.
---
--- -   @compositeAlpha@ is a
---     'Vulkan.Extensions.VK_KHR_surface.CompositeAlphaFlagBitsKHR' value
---     indicating the alpha compositing mode to use when this surface is
---     composited together with other surfaces on certain window systems.
---
--- -   @presentMode@ is the presentation mode the swapchain will use. A
---     swapchain’s present mode determines how incoming present requests
---     will be processed and queued internally.
---
--- -   @clipped@ specifies whether the Vulkan implementation is allowed to
---     discard rendering operations that affect regions of the surface that
---     are not visible.
---
---     -   If set to 'Vulkan.Core10.FundamentalTypes.TRUE', the presentable
---         images associated with the swapchain /may/ not own all of their
---         pixels. Pixels in the presentable images that correspond to
---         regions of the target surface obscured by another window on the
---         desktop, or subject to some other clipping mechanism will have
---         undefined content when read back. Fragment shaders /may/ not
---         execute for these pixels, and thus any side effects they would
---         have had will not occur. 'Vulkan.Core10.FundamentalTypes.TRUE'
---         value does not guarantee any clipping will occur, but allows
---         more optimal presentation methods to be used on some platforms.
---
---     -   If set to 'Vulkan.Core10.FundamentalTypes.FALSE', presentable
---         images associated with the swapchain will own all of the pixels
---         they contain.
---
--- Note
---
--- Applications /should/ set this value to
--- 'Vulkan.Core10.FundamentalTypes.TRUE' if they do not expect to read back
--- the content of presentable images before presenting them or after
--- reacquiring them, and if their fragment shaders do not have any side
--- effects that require them to run for all pixels in the presentable
--- image.
---
--- -   @oldSwapchain@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', or the
---     existing non-retired swapchain currently associated with @surface@.
---     Providing a valid @oldSwapchain@ /may/ aid in the resource reuse,
---     and also allows the application to still present any images that are
---     already acquired from it.
---
 -- Upon calling 'createSwapchainKHR' with an @oldSwapchain@ that is not
 -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', @oldSwapchain@ is
 -- retired — even if creation of the new swapchain fails. The new swapchain
@@ -2691,24 +2610,78 @@
     -- behavior is platform-dependent if the image extent does not match the
     -- surface’s @currentExtent@ as returned by
     -- 'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR'.
+    --
+    -- Note
+    --
+    -- On some platforms, it is normal that @maxImageExtent@ /may/ become @(0,
+    -- 0)@, for example when the window is minimized. In such a case, it is not
+    -- possible to create a swapchain due to the Valid Usage requirements.
     imageExtent :: Extent2D
-  , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "imageArrayLayers"
+  , -- | @imageArrayLayers@ is the number of views in a multiview\/stereo
+    -- surface. For non-stereoscopic-3D applications, this value is 1.
     imageArrayLayers :: Word32
-  , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "imageUsage"
+  , -- | @imageUsage@ is a bitmask of
+    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits' describing
+    -- the intended usage of the (acquired) swapchain images.
     imageUsage :: ImageUsageFlags
-  , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "imageSharingMode"
+  , -- | @imageSharingMode@ is the sharing mode used for the image(s) of the
+    -- swapchain.
     imageSharingMode :: SharingMode
-  , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "pQueueFamilyIndices"
+  , -- | @pQueueFamilyIndices@ is a pointer to an array of queue family indices
+    -- having access to the images(s) of the swapchain when @imageSharingMode@
+    -- is 'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT'.
     queueFamilyIndices :: Vector Word32
-  , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "preTransform"
+  , -- | @preTransform@ is a
+    -- 'Vulkan.Extensions.VK_KHR_surface.SurfaceTransformFlagBitsKHR' value
+    -- describing the transform, relative to the presentation engine’s natural
+    -- orientation, applied to the image content prior to presentation. If it
+    -- does not match the @currentTransform@ value returned by
+    -- 'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR',
+    -- the presentation engine will transform the image content as part of the
+    -- presentation operation.
     preTransform :: SurfaceTransformFlagBitsKHR
-  , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "compositeAlpha"
+  , -- | @compositeAlpha@ is a
+    -- 'Vulkan.Extensions.VK_KHR_surface.CompositeAlphaFlagBitsKHR' value
+    -- indicating the alpha compositing mode to use when this surface is
+    -- composited together with other surfaces on certain window systems.
     compositeAlpha :: CompositeAlphaFlagBitsKHR
-  , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "presentMode"
+  , -- | @presentMode@ is the presentation mode the swapchain will use. A
+    -- swapchain’s present mode determines how incoming present requests will
+    -- be processed and queued internally.
     presentMode :: PresentModeKHR
-  , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "clipped"
+  , -- | @clipped@ specifies whether the Vulkan implementation is allowed to
+    -- discard rendering operations that affect regions of the surface that are
+    -- not visible.
+    --
+    -- -   If set to 'Vulkan.Core10.FundamentalTypes.TRUE', the presentable
+    --     images associated with the swapchain /may/ not own all of their
+    --     pixels. Pixels in the presentable images that correspond to regions
+    --     of the target surface obscured by another window on the desktop, or
+    --     subject to some other clipping mechanism will have undefined content
+    --     when read back. Fragment shaders /may/ not execute for these pixels,
+    --     and thus any side effects they would have had will not occur.
+    --     Setting 'Vulkan.Core10.FundamentalTypes.TRUE' does not guarantee any
+    --     clipping will occur, but allows more efficient presentation methods
+    --     to be used on some platforms.
+    --
+    -- -   If set to 'Vulkan.Core10.FundamentalTypes.FALSE', presentable images
+    --     associated with the swapchain will own all of the pixels they
+    --     contain.
+    --
+    --     Note
+    --
+    --     Applications /should/ set this value to
+    --     'Vulkan.Core10.FundamentalTypes.TRUE' if they do not expect to read
+    --     back the content of presentable images before presenting them or
+    --     after reacquiring them, and if their fragment shaders do not have
+    --     any side effects that require them to run for all pixels in the
+    --     presentable image.
     clipped :: Bool
-  , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "oldSwapchain"
+  , -- | @oldSwapchain@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', or the
+    -- existing non-retired swapchain currently associated with @surface@.
+    -- Providing a valid @oldSwapchain@ /may/ aid in the resource reuse, and
+    -- also allows the application to still present any images that are already
+    -- acquired from it.
     oldSwapchain :: SwapchainKHR
   }
   deriving (Typeable)
@@ -3482,8 +3455,8 @@
   { -- | @pDeviceMasks@ is a pointer to an array of device masks, one for each
     -- element of 'PresentInfoKHR'::pSwapchains.
     deviceMasks :: Vector Word32
-  , -- | @mode@ is the device group present mode that will be used for this
-    -- present.
+  , -- | @mode@ is a 'DeviceGroupPresentModeFlagBitsKHR' value specifying the
+    -- device group present mode that will be used for this present.
     mode :: DeviceGroupPresentModeFlagBitsKHR
   }
   deriving (Typeable)
@@ -3657,7 +3630,7 @@
 -- | 'SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR' specifies that the images of
 -- the swapchain /can/ be used to create a
 -- 'Vulkan.Core10.Handles.ImageView' with a different format than what the
--- swapchain was created with. The list of allowed image view formats are
+-- swapchain was created with. The list of allowed image view formats is
 -- specified by adding a
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'
 -- structure to the @pNext@ chain of 'SwapchainCreateInfoKHR'. In addition,
diff --git a/src/Vulkan/Extensions/VK_KHR_swapchain.hs-boot b/src/Vulkan/Extensions/VK_KHR_swapchain.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_swapchain.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_swapchain.hs-boot
@@ -307,7 +307,7 @@
 -- __RESOLVED__: Accept a semaphore to signal as an object handle. This
 -- avoids the need to specify whether the application must destroy the
 -- semaphore or whether it is owned by the swapchain, and if the latter,
--- what its lifetime is and whether it can be re-used for other operations
+-- what its lifetime is and whether it can be reused for other operations
 -- once it is received from 'acquireNextImageKHR'.
 --
 -- 11) What types of swapchain queuing behavior should be exposed? Options
@@ -329,7 +329,7 @@
 --     single-entry queue is used to hold pending presentation requests. If
 --     the queue is full when a new presentation request is received, the
 --     new request replaces the existing entry, and any images associated
---     with the prior entry become available for re-use by the application.
+--     with the prior entry become available for reuse by the application.
 --
 -- -   FIFO queue: Waits for the next vertical blanking period to update
 --     the current image. No tearing should be observed. An internal queue
@@ -340,10 +340,10 @@
 --     queue is non-empty
 --
 -- Not all surfaces will support all of these modes, so the modes supported
--- will be returned using a surface info query. All surfaces must support
--- the FIFO queue mode. Applications must choose one of these modes up
--- front when creating a swapchain. Switching modes can be accomplished by
--- recreating the swapchain.
+-- will be returned using a surface information query. All surfaces must
+-- support the FIFO queue mode. Applications must choose one of these modes
+-- up front when creating a swapchain. Switching modes can be accomplished
+-- by recreating the swapchain.
 --
 -- 12) Can 'Vulkan.Extensions.VK_KHR_surface.PRESENT_MODE_MAILBOX_KHR'
 -- provide non-blocking guarantees for 'acquireNextImageKHR'? If so, what
@@ -379,11 +379,11 @@
 -- to indicate there are no practical limits on the number of images in a
 -- swapchain?
 --
--- __RESOLVED__: Yes. There where often be cases where there is no
--- practical limit to the number of images in a swapchain other than the
--- amount of available resources (I.e., memory) in the system. Trying to
--- derive a hard limit from things like memory size is prone to failure. It
--- is better in such cases to leave it to applications to figure such soft
+-- __RESOLVED__: Yes. There will often be cases where there is no practical
+-- limit to the number of images in a swapchain other than the amount of
+-- available resources (i.e., memory) in the system. Trying to derive a
+-- hard limit from things like memory size is prone to failure. It is
+-- better in such cases to leave it to applications to figure such soft
 -- limits out via trial\/failure iterations.
 --
 -- 15) Should there be a special value for
@@ -411,7 +411,7 @@
 -- __RESOLVED__: Applications can query both the supported and current
 -- transforms of a surface. Both are specified relative to the device’s
 -- “natural” display rotation and direction. The supported transforms
--- indicates which orientations the presentation engine accepts images in.
+-- indicate which orientations the presentation engine accepts images in.
 -- For example, a presentation engine that does not support transforming
 -- surfaces as part of presentation, and which is presenting to a surface
 -- that is displayed with a 90-degree rotation, would return only one
@@ -484,7 +484,7 @@
 -- obscuring their target surface?
 --
 -- __RESOLVED__: Applications can choose which behavior they prefer.
--- Allowing the content to be clipped could enable more optimal
+-- Allowing the content to be clipped could enable more efficient
 -- presentation methods on some platforms, but some applications might rely
 -- on the content of presentable images to perform techniques such as
 -- partial updates or motion blurs.
@@ -513,9 +513,9 @@
 -- using such formats does not guarantee working in a specific color space.
 -- It merely means that the hardware can directly support applying the
 -- non-linear transfer functions defined by the sRGB standard color space
--- when reading from or writing to images of that these formats. Still, it
--- is unlikely that a swapchain will expose a @*_SRGB@ format along with
--- any color space other than
+-- when reading from or writing to images of those formats. Still, it is
+-- unlikely that a swapchain will expose a @*_SRGB@ format along with any
+-- color space other than
 -- 'Vulkan.Extensions.VK_KHR_surface.COLOR_SPACE_SRGB_NONLINEAR_KHR'.
 --
 -- On the other hand, non-@*_SRGB@ formats will be very likely exposed in
@@ -525,7 +525,7 @@
 -- characteristics. In this case the application is responsible for
 -- applying the transfer function, for instance by using shader math.
 --
--- 25) How are the lifetime of surfaces and swapchains targeting them
+-- 25) How are the lifetimes of surfaces and swapchains targeting them
 -- related?
 --
 -- __RESOLVED__: A surface must outlive any swapchains targeting it. A
@@ -665,7 +665,7 @@
 --
 --     -   Renamed VkSurfaceCapabilityPropertiesKHR to
 --         VkSurfacePropertiesKHR to better convey the mutable nature of
---         the info it contains.
+--         the information it contains.
 --
 -- -   Revision 12, 2015-05-28 (James Jones)
 --
@@ -753,8 +753,8 @@
 -- -   Revision 24, 2015-06-19 (Ian Elliott)
 --
 --     -   Changed special value for VkSurfacePropertiesKHR::currentExtent
---         back to \"-1\" from \"0\". This value will never need to be
---         unsigned, and \"0\" is actually a legal value.
+--         back to “-1” from “0”. This value will never need to be
+--         unsigned, and “0” is actually a legal value.
 --
 -- -   Revision 25, 2015-06-23 (Ian Elliott)
 --
@@ -773,12 +773,12 @@
 --
 -- -   Revision 28, 2015-06-25 (James Jones)
 --
---     -   Added the \"inherit\" bits to the rotation and mirroring flags
---         and the associated issue 21.
+--     -   Added the “inherit” bits to the rotation and mirroring flags and
+--         the associated issue 21.
 --
 -- -   Revision 29, 2015-06-25 (James Jones)
 --
---     -   Added the \"clipped\" flag to VkSwapchainCreateInfoKHR, and the
+--     -   Added the “clipped” flag to VkSwapchainCreateInfoKHR, and the
 --         associated issue 22.
 --
 --     -   Specified that presenting an image does not modify it.
@@ -791,13 +791,13 @@
 --
 -- -   Revision 31, 2015-06-26 (Ian Elliott)
 --
---     -   Example of new VkSwapchainCreateInfoKHR members,
---         \"oldSwapchain\" and \"clipped\".
+--     -   Example of new VkSwapchainCreateInfoKHR members, “oldSwapchain”
+--         and “clipped”.
 --
 --     -   Example of using VkSurfacePropertiesKHR::{min|max}ImageCount to
 --         set VkSwapchainCreateInfoKHR::minImageCount.
 --
---     -   Rename vkGetSurfaceInfoKHR()\'s 4th parameter to \"pDataSize\",
+--     -   Rename vkGetSurfaceInfoKHR()\'s 4th parameter to “pDataSize”,
 --         for consistency with other functions.
 --
 --     -   Add macro with C-string name of extension (just to header file).
@@ -805,7 +805,7 @@
 -- -   Revision 32, 2015-06-26 (James Jones)
 --
 --     -   Minor adjustments to the language describing the behavior of
---         \"oldSwapchain\"
+--         “oldSwapchain”
 --
 --     -   Fixed the version date on my previous two updates.
 --
@@ -815,7 +815,7 @@
 --
 -- -   Revision 34, 2015-06-26 (Ian Elliott)
 --
---     -   Rename vkQueuePresentKHR()\'s 2nd parameter to \"pPresentInfo\",
+--     -   Rename vkQueuePresentKHR()\'s 2nd parameter to “pPresentInfo”,
 --         for consistency with other functions.
 --
 -- -   Revision 35, 2015-06-26 (Jason Ekstrand)
@@ -855,8 +855,8 @@
 --
 -- -   Revision 40, 2015-07-10 (Ian Elliott)
 --
---     -   Updated to work with version 138 of the \"vulkan.h\" header.
---         This includes declaring the VkSwapchainKHR type using the new
+--     -   Updated to work with version 138 of the @vulkan.h@ header. This
+--         includes declaring the VkSwapchainKHR type using the new
 --         VK_DEFINE_NONDISP_HANDLE macro, and no longer extending
 --         VkObjectType (which was eliminated).
 --
@@ -869,7 +869,7 @@
 --     -   Updated query mechanism to reflect the convention changes done
 --         in the core spec.
 --
---     -   Removed \"queue\" from the name of
+--     -   Removed “queue” from the name of
 --         VK_STRUCTURE_TYPE_QUEUE_PRESENT_INFO_KHR to be consistent with
 --         the established naming convention.
 --
@@ -895,7 +895,7 @@
 --         VkSwapchainCreateInfoKHR struct).
 --
 --     -   Corrected a typo in header file (last parameter in
---         PFN_vkGetSurfacePropertiesKHR was missing \"KHR\" at the end of
+--         PFN_vkGetSurfacePropertiesKHR was missing “KHR” at the end of
 --         type: VkSurfacePropertiesKHR).
 --
 -- -   Revision 46, 2015-08-20 (Ian Elliott)
@@ -904,7 +904,7 @@
 --         functions, etc. This makes it compliant with the proposed
 --         standard for Vulkan extensions.
 --
---     -   Switched from \"revision\" to \"version\", including use of the
+--     -   Switched from “revision” to “version”, including use of the
 --         VK_MAKE_VERSION macro in the header file.
 --
 --     -   Made improvements to several descriptions.
@@ -918,7 +918,7 @@
 --     from James Jones)
 --
 --     -   Moved the surface transform enums to VK_WSI_swapchain so they
---         could be re-used by VK_WSI_display.
+--         could be reused by VK_WSI_display.
 --
 -- -   Revision 48, 2015-09-01 (James Jones)
 --
@@ -1029,22 +1029,21 @@
 --
 -- -   Revision 68, 2016-04-05 (Ian Elliott)
 --
---     -   Moved the \"validity\" include for vkAcquireNextImage to be in
---         its proper place, after the prototype and list of parameters.
+--     -   Moved the “validity” include for vkAcquireNextImage to be in its
+--         proper place, after the prototype and list of parameters.
 --
 --     -   Clarified language about presentable images, including how they
 --         are acquired, when applications can and cannot use them, etc. As
---         part of this, removed language about \"ownership\" of
---         presentable images, and replaced it with more-consistent
---         language about presentable images being \"acquired\" by the
---         application.
+--         part of this, removed language about “ownership” of presentable
+--         images, and replaced it with more-consistent language about
+--         presentable images being “acquired” by the application.
 --
 -- -   2016-08-23 (Ian Elliott)
 --
 --     -   Update the example code, to use the final API command names, to
 --         not have so many characters per line, and to split out a new
 --         example to show how to obtain function pointers. This code is
---         more similar to the LunarG \"cube\" demo program.
+--         more similar to the LunarG “cube” demo program.
 --
 -- -   2016-08-25 (Ian Elliott)
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_synchronization2.hs b/src/Vulkan/Extensions/VK_KHR_synchronization2.hs
--- a/src/Vulkan/Extensions/VK_KHR_synchronization2.hs
+++ b/src/Vulkan/Extensions/VK_KHR_synchronization2.hs
@@ -30,12 +30,14 @@
 --
 -- == Other Extension Metadata
 --
--- [Last Modified Date]
---     2020-12-03 Interactions and External Dependencies:
+-- [__Last Modified Date__]
+--     2020-12-03
 --
+-- [__Interactions and External Dependencies__]
+--
 --     -   Interacts with @VK_KHR_create_renderpass2@
 --
--- [Contributors]
+-- [__Contributors__]
 --
 --     -   Tobias Hector
 --
@@ -719,7 +721,7 @@
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCmdSetEvent2KHR-dependencyFlags-03825# The @dependencyFlags@
---     member of @dependencyInfo@ /must/ be @0@
+--     member of @pDependencyInfo@ /must/ be @0@
 --
 -- -   #VUID-vkCmdSetEvent2KHR-commandBuffer-03826# The current device mask
 --     of @commandBuffer@ /must/ include exactly one physical device.
@@ -827,20 +829,18 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
 -- includes all commands that occur earlier in
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>.
--- The synchronization scope is limited to operations by @stage@ or stages
--- that are
+-- The synchronization scope is limited to operations by @stageMask@ or
+-- stages that are
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically earlier>
--- than @stage@.
+-- than @stageMask@.
 --
 -- The second
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
 -- includes only the event unsignal operation.
 --
--- If @event@ is already in the unsignaled state when
--- 'Vulkan.Core10.CommandBufferBuilding.cmdResetEvent' is executed on the
--- device, then 'Vulkan.Core10.CommandBufferBuilding.cmdResetEvent' has no
--- effect, no event unsignal operation occurs, and no execution dependency
--- is generated.
+-- If @event@ is already in the unsignaled state when 'cmdResetEvent2KHR'
+-- is executed on the device, then this command has no effect, no event
+-- unsignal operation occurs, and no execution dependency is generated.
 --
 -- == Valid Usage
 --
@@ -962,8 +962,8 @@
                      CommandBuffer
                   -> -- | @event@ is the event that will be unsignaled.
                      Event
-                  -> -- | @stageMask@ is a is a 'PipelineStageFlags2KHR' mask of pipeline stages
-                     -- used to determine the first
+                  -> -- | @stageMask@ is a 'PipelineStageFlags2KHR' mask of pipeline stages used
+                     -- to determine the first
                      -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>.
                      ("stageMask" ::: PipelineStageFlags2KHR)
                   -> io ()
@@ -994,10 +994,10 @@
                               -> -- | @commandBuffer@ is the command buffer into which the command is
                                  -- recorded.
                                  CommandBuffer
-                              -> -- | @pEvents@ is an array of events to wait on.
+                              -> -- | @pEvents@ is a pointer to an array of @eventCount@ events to wait on.
                                  ("events" ::: Vector Event)
-                              -> -- | @pDependencyInfos@ is an array of 'DependencyInfoKHR' structures,
-                                 -- defining the second
+                              -> -- | @pDependencyInfos@ is a pointer to an array of @eventCount@
+                                 -- 'DependencyInfoKHR' structures, defining the second
                                  -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>.
                                  ("dependencyInfos" ::: Vector DependencyInfoKHR)
                               -> io ()
@@ -1032,7 +1032,7 @@
 -- and
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
 -- of each memory dependency defined by any element i of @pDependencyInfos@
--- are applied to operations commands that occurred earlier in
+-- are applied to operations that occurred earlier in
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>
 -- than the last event signal operation on element i of @pEvents@.
 --
@@ -1056,7 +1056,7 @@
 -- and
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
 -- of each memory dependency defined by any element i of @pDependencyInfos@
--- are applied to operations commands that occurred later in
+-- are applied to operations that occurred later in
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>
 -- than 'cmdWaitEvents2KHR'.
 --
@@ -1108,13 +1108,14 @@
 -- -   #VUID-vkCmdWaitEvents2KHR-pEvents-03841# For any element i of
 --     @pEvents@, if barriers in the ith element of @pDependencyInfos@ do
 --     not include host operations, the ith element of @pEvents@ /must/ be
---     by a corresponding 'cmdSetEvent2KHR' that occurred earlier in
+--     signaled by a corresponding 'cmdSetEvent2KHR' that occurred earlier
+--     in
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>
 --
 -- -   #VUID-vkCmdWaitEvents2KHR-srcStageMask-03842# The @srcStageMask@
 --     member of any element of the @pMemoryBarriers@,
 --     @pBufferMemoryBarriers@, or @pImageMemoryBarriers@ members of
---     @pDependencyInfo@ /must/ either include only pipeline stages valid
+--     @pDependencyInfos@ /must/ either include only pipeline stages valid
 --     for the queue family that was used to create the command pool that
 --     @commandBuffer@ was allocated from, or include only
 --     'PIPELINE_STAGE_2_HOST_BIT_KHR'
@@ -1122,12 +1123,12 @@
 -- -   #VUID-vkCmdWaitEvents2KHR-dstStageMask-03843# The @dstStageMask@
 --     member of any element of the @pMemoryBarriers@,
 --     @pBufferMemoryBarriers@, or @pImageMemoryBarriers@ members of
---     @pDependencyInfo@ /must/ only include pipeline stages valid for the
+--     @pDependencyInfos@ /must/ only include pipeline stages valid for the
 --     queue family that was used to create the command pool that
 --     @commandBuffer@ was allocated from
 --
 -- -   #VUID-vkCmdWaitEvents2KHR-dependencyFlags-03844# The
---     @dependencyFlags@ member of any element of @dependencyInfo@ /must/
+--     @dependencyFlags@ member of any element of @pDependencyInfo@ /must/
 --     be @0@
 --
 -- -   #VUID-vkCmdWaitEvents2KHR-pEvents-03845# If @pEvents@ includes one
@@ -1194,10 +1195,10 @@
                   => -- | @commandBuffer@ is the command buffer into which the command is
                      -- recorded.
                      CommandBuffer
-                  -> -- | @pEvents@ is an array of events to wait on.
+                  -> -- | @pEvents@ is a pointer to an array of @eventCount@ events to wait on.
                      ("events" ::: Vector Event)
-                  -> -- | @pDependencyInfos@ is an array of 'DependencyInfoKHR' structures,
-                     -- defining the second
+                  -> -- | @pDependencyInfos@ is a pointer to an array of @eventCount@
+                     -- 'DependencyInfoKHR' structures, defining the second
                      -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>.
                      ("dependencyInfos" ::: Vector DependencyInfoKHR)
                   -> io ()
@@ -1209,10 +1210,10 @@
                       => -- | @commandBuffer@ is the command buffer into which the command is
                          -- recorded.
                          CommandBuffer
-                      -> -- | @pEvents@ is an array of events to wait on.
+                      -> -- | @pEvents@ is a pointer to an array of @eventCount@ events to wait on.
                          ("events" ::: Vector Event)
-                      -> -- | @pDependencyInfos@ is an array of 'DependencyInfoKHR' structures,
-                         -- defining the second
+                      -> -- | @pDependencyInfos@ is a pointer to an array of @eventCount@
+                         -- 'DependencyInfoKHR' structures, defining the second
                          -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>.
                          ("dependencyInfos" ::: Vector DependencyInfoKHR)
                       -> io ()
@@ -1239,7 +1240,7 @@
 -- and
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
 -- of each memory dependency defined by any element i of @pDependencyInfos@
--- are applied to operations commands that occurred earlier in
+-- are applied to operations that occurred earlier in
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>.
 --
 -- The second
@@ -1247,7 +1248,7 @@
 -- and
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
 -- of each memory dependency defined by any element i of @pDependencyInfos@
--- are applied to operations commands that occurred later in
+-- are applied to operations that occurred later in
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>.
 --
 -- If 'cmdPipelineBarrier2KHR' is recorded within a render pass instance,
@@ -1424,6 +1425,15 @@
 --
 -- == Valid Usage
 --
+-- -   #VUID-vkQueueSubmit2KHR-fence-04894# If @fence@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @fence@ /must/ be
+--     unsignaled
+--
+-- -   #VUID-vkQueueSubmit2KHR-fence-04895# If @fence@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @fence@ /must/ not be
+--     associated with any other queue command that has not yet completed
+--     execution on that queue
+--
 -- -   #VUID-vkQueueSubmit2KHR-synchronization2-03866# The
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
 --     feature /must/ be enabled
@@ -1436,9 +1446,9 @@
 --     is still in the /pending state/
 --
 -- -   #VUID-vkQueueSubmit2KHR-semaphore-03868# The @semaphore@ member of
---     any element of the @pSignalSemaphoreInfos@ member of any element of
---     @pSubmits@ /must/ be unsignaled when the semaphore signal operation
---     it defines is executed on the device
+--     any binary semaphore element of the @pSignalSemaphoreInfos@ member
+--     of any element of @pSubmits@ /must/ be unsignaled when the semaphore
+--     signal operation it defines is executed on the device
 --
 -- -   #VUID-vkQueueSubmit2KHR-stageMask-03869# The @stageMask@ member of
 --     any element of the @pSignalSemaphoreInfos@ member of any element of
@@ -1626,7 +1636,7 @@
 -- includes all commands that occur earlier in
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>.
 -- The synchronization scope is limited to operations on the pipeline stage
--- specified by @pipelineStage@.
+-- specified by @stage@.
 --
 -- The second
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
@@ -1735,6 +1745,9 @@
 -- -   #VUID-vkCmdWriteTimestamp2KHR-timestampValidBits-03863# The command
 --     pool’s queue family /must/ support a non-zero @timestampValidBits@
 --
+-- -   #VUID-vkCmdWriteTimestamp2KHR-query-04903# @query@ /must/ be less
+--     than the number of queries in @queryPool@
+--
 -- -   #VUID-vkCmdWriteTimestamp2KHR-None-03864# All queries used by the
 --     command /must/ be unavailable
 --
@@ -1834,16 +1847,16 @@
 -- specified pipeline stage. This includes the completion of other
 -- preceding 'cmdWriteBufferMarker2AMD' commands so long as their specified
 -- pipeline stages occur either at the same time or earlier than this
--- command’s specified @pipelineStage@.
+-- command’s specified @stage@.
 --
--- While consecutive buffer marker writes with the same @pipelineStage@
--- parameter implicitly complete in submission order, memory and execution
+-- While consecutive buffer marker writes with the same @stage@ parameter
+-- implicitly complete in submission order, memory and execution
 -- dependencies between buffer marker writes and other operations /must/
 -- still be explicitly ordered using synchronization commands. The access
 -- scope for buffer marker writes falls under the
 -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFER_WRITE_BIT', and the
 -- pipeline stages for identifying the synchronization scope /must/ include
--- both @pipelineStage@ and
+-- both @stage@ and
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFER_BIT'.
 --
 -- Note
@@ -2120,23 +2133,6 @@
 -- described by this structure include only operations and memory accesses
 -- specified by @dstStageMask@ and @dstAccessMask@.
 --
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkMemoryBarrier2KHR-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcStageMask-parameter# @srcStageMask@
---     /must/ be a valid combination of 'PipelineStageFlagBits2KHR' values
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-parameter# @srcAccessMask@
---     /must/ be a valid combination of 'AccessFlagBits2KHR' values
---
--- -   #VUID-VkMemoryBarrier2KHR-dstStageMask-parameter# @dstStageMask@
---     /must/ be a valid combination of 'PipelineStageFlagBits2KHR' values
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-parameter# @dstAccessMask@
---     /must/ be a valid combination of 'AccessFlagBits2KHR' values
---
 -- == Valid Usage
 --
 -- -   #VUID-VkMemoryBarrier2KHR-srcStageMask-03929# If the
@@ -2597,6 +2593,23 @@
 --     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR' or
 --     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
 --
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkMemoryBarrier2KHR-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR'
+--
+-- -   #VUID-VkMemoryBarrier2KHR-srcStageMask-parameter# @srcStageMask@
+--     /must/ be a valid combination of 'PipelineStageFlagBits2KHR' values
+--
+-- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-parameter# @srcAccessMask@
+--     /must/ be a valid combination of 'AccessFlagBits2KHR' values
+--
+-- -   #VUID-VkMemoryBarrier2KHR-dstStageMask-parameter# @dstStageMask@
+--     /must/ be a valid combination of 'PipelineStageFlagBits2KHR' values
+--
+-- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-parameter# @dstAccessMask@
+--     /must/ be a valid combination of 'AccessFlagBits2KHR' values
+--
 -- = See Also
 --
 -- 'AccessFlags2KHR', 'DependencyInfoKHR', 'PipelineStageFlags2KHR',
@@ -2612,11 +2625,9 @@
   , -- | @dstStageMask@ is a 'PipelineStageFlags2KHR' mask of pipeline stages to
     -- be included in the
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes second synchronization scope>.
-    --
-    -- @dstStageMask@ is a 'AccessFlags2KHR' mask of pipeline
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes second access scope>.
     dstStageMask :: PipelineStageFlags2KHR
-  , -- No documentation found for Nested "VkMemoryBarrier2KHR" "dstAccessMask"
+  , -- | @dstAccessMask@ is a 'AccessFlags2KHR' mask of pipeline
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes second access scope>.
     dstAccessMask :: AccessFlags2KHR
   }
   deriving (Typeable, Eq)
@@ -2682,14 +2693,14 @@
 -- and
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
 -- described by this structure include only operations and memory accesses
--- specified by elements @srcStageMask@ and @srcAccessMask@.
+-- specified by @srcStageMask@ and @srcAccessMask@.
 --
 -- The second
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
 -- and
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
 -- described by this structure include only operations and memory accesses
--- specified by elements @dstStageMask@ and @dstAccessMask@.
+-- specified by @dstStageMask@ and @dstAccessMask@.
 --
 -- Both
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopes>
@@ -3446,9 +3457,9 @@
 --     or @oldLayout@ and @newLayout@ define an
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
 --     and @oldLayout@ or @newLayout@ is
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR'
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR'
 --     then @image@ /must/ have been created with
---     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
 --     set
 --
 -- -   #VUID-VkImageMemoryBarrier2KHR-image-01671# If @image@ has a
@@ -3498,9 +3509,10 @@
 --     with a sharing mode of
 --     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',
 --     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are not equal, and
---     one of @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ is a special
---     queue family values reserved for external memory transfers, the
---     other /must/ be 'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED'
+--     one of @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ is one of the
+--     special queue family values reserved for external memory transfers,
+--     the other /must/ be
+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED'
 --
 -- -   #VUID-VkImageMemoryBarrier2KHR-image-04072# If @image@ was created
 --     with a sharing mode of
@@ -3511,15 +3523,16 @@
 --     for external memory transfers, as described in
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers ???>
 --
--- -   #VUID-VkImageMemoryBarrier2KHR-srcStageMask-03854# If @srcStageMask@
---     or @dstStageMask@ include 'PIPELINE_STAGE_2_HOST_BIT_KHR',
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ /must/ be equal
+-- -   #VUID-VkImageMemoryBarrier2KHR-srcStageMask-03854# If either
+--     @srcStageMask@ or @dstStageMask@ includes
+--     'PIPELINE_STAGE_2_HOST_BIT_KHR', @srcQueueFamilyIndex@ and
+--     @dstQueueFamilyIndex@ /must/ be equal
 --
 -- -   #VUID-VkImageMemoryBarrier2KHR-srcStageMask-03855# If @srcStageMask@
 --     includes 'PIPELINE_STAGE_2_HOST_BIT_KHR', and @srcQueueFamilyIndex@
 --     and @dstQueueFamilyIndex@ define a
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
---     or @oldLayout@ and @newLayout@ define a
+--     or @oldLayout@ and @newLayout@ define an
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
 --     @oldLayout@ /must/ be one of
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED',
@@ -3589,11 +3602,9 @@
   , -- | @dstStageMask@ is a 'PipelineStageFlags2KHR' mask of pipeline stages to
     -- be included in the
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes second synchronization scope>.
-    --
-    -- @dstStageMask@ is a 'AccessFlags2KHR' mask of pipeline
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes second access scope>.
     dstStageMask :: PipelineStageFlags2KHR
-  , -- No documentation found for Nested "VkImageMemoryBarrier2KHR" "dstAccessMask"
+  , -- | @dstAccessMask@ is a 'AccessFlags2KHR' mask of pipeline
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes second access scope>.
     dstAccessMask :: AccessFlags2KHR
   , -- | @oldLayout@ is the old layout in an
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>.
@@ -3707,14 +3718,14 @@
 -- and
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
 -- described by this structure include only operations and memory accesses
--- specified by elements @srcStageMask@ and @srcAccessMask@.
+-- specified by @srcStageMask@ and @srcAccessMask@.
 --
 -- The second
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
 -- and
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
 -- described by this structure include only operations and memory accesses
--- specified by elements @dstStageMask@ and @dstAccessMask@.
+-- specified by @dstStageMask@ and @dstAccessMask@.
 --
 -- Both
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopes>
@@ -3722,7 +3733,7 @@
 -- @offset@ and @size@.
 --
 -- If @buffer@ was created with
--- 'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT', and
+-- 'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE', and
 -- @srcQueueFamilyIndex@ is not equal to @dstQueueFamilyIndex@, this memory
 -- barrier defines a
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family transfer operation>.
@@ -4270,9 +4281,10 @@
 --     created with a sharing mode of
 --     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',
 --     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are not equal, and
---     one of @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ is a special
---     queue family values reserved for external memory transfers, the
---     other /must/ be 'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED'
+--     one of @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ is one of the
+--     special queue family values reserved for external memory transfers,
+--     the other /must/ be
+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED'
 --
 -- -   #VUID-VkBufferMemoryBarrier2KHR-buffer-04089# If @buffer@ was
 --     created with a sharing mode of
@@ -4283,8 +4295,8 @@
 --     for external memory transfers, as described in
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers ???>
 --
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcStageMask-03851# If
---     @srcStageMask@ or @dstStageMask@ include
+-- -   #VUID-VkBufferMemoryBarrier2KHR-srcStageMask-03851# If either
+--     @srcStageMask@ or @dstStageMask@ includes
 --     'PIPELINE_STAGE_2_HOST_BIT_KHR', @srcQueueFamilyIndex@ and
 --     @dstQueueFamilyIndex@ /must/ be equal
 --
@@ -4331,11 +4343,9 @@
   , -- | @dstStageMask@ is a 'PipelineStageFlags2KHR' mask of pipeline stages to
     -- be included in the
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes second synchronization scope>.
-    --
-    -- @dstStageMask@ is a 'AccessFlags2KHR' mask of pipeline
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes second access scope>.
     dstStageMask :: PipelineStageFlags2KHR
-  , -- No documentation found for Nested "VkBufferMemoryBarrier2KHR" "dstAccessMask"
+  , -- | @dstAccessMask@ is a 'AccessFlags2KHR' mask of pipeline
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes second access scope>.
     dstAccessMask :: AccessFlags2KHR
   , -- | @srcQueueFamilyIndex@ is the source queue family for a
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>.
@@ -4936,7 +4946,7 @@
 
 
 -- | VkQueueFamilyCheckpointProperties2NV - return structure for queue family
--- checkpoint info query
+-- checkpoint information query
 --
 -- = Description
 --
@@ -5061,18 +5071,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceSynchronization2FeaturesKHR' structure
--- describes the following feature:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceSynchronization2FeaturesKHR' structure is included
--- in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with a value indicating whether the feature is supported.
--- 'PhysicalDeviceSynchronization2FeaturesKHR' /can/ also be used in the
--- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable the
--- feature.
+-- 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. 'PhysicalDeviceSynchronization2FeaturesKHR' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_synchronization2.hs-boot b/src/Vulkan/Extensions/VK_KHR_synchronization2.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_synchronization2.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_synchronization2.hs-boot
@@ -30,12 +30,14 @@
 --
 -- == Other Extension Metadata
 --
--- [Last Modified Date]
---     2020-12-03 Interactions and External Dependencies:
+-- [__Last Modified Date__]
+--     2020-12-03
 --
+-- [__Interactions and External Dependencies__]
+--
 --     -   Interacts with @VK_KHR_create_renderpass2@
 --
--- [Contributors]
+-- [__Contributors__]
 --
 --     -   Tobias Hector
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_timeline_semaphore.hs b/src/Vulkan/Extensions/VK_KHR_timeline_semaphore.hs
--- a/src/Vulkan/Extensions/VK_KHR_timeline_semaphore.hs
+++ b/src/Vulkan/Extensions/VK_KHR_timeline_semaphore.hs
@@ -197,7 +197,7 @@
 --
 -- 4) Does the new synchronization primitive allow resetting its payload?
 --
--- __RESOLVED__: No, allowing the payload value to \"go backwards\" is
+-- __RESOLVED__: No, allowing the payload value to “go backwards” is
 -- problematic. Applications looking for reset behavior should create a new
 -- instance of the sychronization primitive instead.
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_wayland_surface.hs b/src/Vulkan/Extensions/VK_KHR_wayland_surface.hs
--- a/src/Vulkan/Extensions/VK_KHR_wayland_surface.hs
+++ b/src/Vulkan/Extensions/VK_KHR_wayland_surface.hs
@@ -147,7 +147,7 @@
 --
 --     -   Adjusted wording of issue #1 to match the agreed-upon solution.
 --
---     -   Renamed \"window\" parameters to \"surface\" to match Wayland
+--     -   Renamed “window” parameters to “surface” to match Wayland
 --         conventions.
 --
 -- -   Revision 3, 2015-10-26 (Ian Elliott)
diff --git a/src/Vulkan/Extensions/VK_KHR_wayland_surface.hs-boot b/src/Vulkan/Extensions/VK_KHR_wayland_surface.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_wayland_surface.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_wayland_surface.hs-boot
@@ -147,7 +147,7 @@
 --
 --     -   Adjusted wording of issue #1 to match the agreed-upon solution.
 --
---     -   Renamed \"window\" parameters to \"surface\" to match Wayland
+--     -   Renamed “window” parameters to “surface” to match Wayland
 --         conventions.
 --
 -- -   Revision 3, 2015-10-26 (Ian Elliott)
diff --git a/src/Vulkan/Extensions/VK_KHR_win32_keyed_mutex.hs b/src/Vulkan/Extensions/VK_KHR_win32_keyed_mutex.hs
--- a/src/Vulkan/Extensions/VK_KHR_win32_keyed_mutex.hs
+++ b/src/Vulkan/Extensions/VK_KHR_win32_keyed_mutex.hs
@@ -187,7 +187,8 @@
     -- prior to beginning the submitted work. Entries refer to the keyed mutex
     -- associated with the corresponding entries in @pAcquireSyncs@.
     acquireKeys :: Vector Word64
-  , -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoKHR" "pAcquireTimeouts"
+  , -- | @pAcquireTimeouts@ is a pointer to an array of timeout values, in
+    -- millisecond units, for each acquire specified in @pAcquireKeys@.
     acquireTimeouts :: Vector Word32
   , -- | @pReleaseSyncs@ is a pointer to an array of
     -- 'Vulkan.Core10.Handles.DeviceMemory' objects which were imported from
diff --git a/src/Vulkan/Extensions/VK_KHR_win32_surface.hs b/src/Vulkan/Extensions/VK_KHR_win32_surface.hs
--- a/src/Vulkan/Extensions/VK_KHR_win32_surface.hs
+++ b/src/Vulkan/Extensions/VK_KHR_win32_surface.hs
@@ -167,9 +167,9 @@
 --     object’s pixel format can be set only one time.
 --
 -- -   Creating a 'Vulkan.Extensions.Handles.SwapchainKHR' over a window
---     object can alter the object for the remaining life of its lifetime.
---     Either of the above alterations may occur as a side-effect of
---     'Vulkan.Extensions.Handles.SwapchainKHR'.
+--     object can alter the object for its remaining lifetime. Either of
+--     the above alterations may occur as a side effect of
+--     'Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR'.
 --
 -- == Version History
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_win32_surface.hs-boot b/src/Vulkan/Extensions/VK_KHR_win32_surface.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_win32_surface.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_win32_surface.hs-boot
@@ -167,9 +167,9 @@
 --     object’s pixel format can be set only one time.
 --
 -- -   Creating a 'Vulkan.Extensions.Handles.SwapchainKHR' over a window
---     object can alter the object for the remaining life of its lifetime.
---     Either of the above alterations may occur as a side-effect of
---     'Vulkan.Extensions.Handles.SwapchainKHR'.
+--     object can alter the object for its remaining lifetime. Either of
+--     the above alterations may occur as a side effect of
+--     'Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR'.
 --
 -- == Version History
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_workgroup_memory_explicit_layout.hs b/src/Vulkan/Extensions/VK_KHR_workgroup_memory_explicit_layout.hs
--- a/src/Vulkan/Extensions/VK_KHR_workgroup_memory_explicit_layout.hs
+++ b/src/Vulkan/Extensions/VK_KHR_workgroup_memory_explicit_layout.hs
@@ -61,7 +61,7 @@
 -- of @Workgroup@ storage class memory and create aliases between variables
 -- from that storage class in a compute shader.
 --
--- The aliasing feature allows different \"views\" on the same data, so the
+-- The aliasing feature allows different “views” on the same data, so the
 -- shader can bulk copy data from another storage class using one type
 -- (e.g. an array of large vectors), and then use the data with a more
 -- specific type. It also enables reducing the amount of workgroup memory
@@ -149,19 +149,20 @@
 --
 -- = Members
 --
--- The members of the
--- 'PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR' structure
--- describe the following features:
+-- This structure describes the following features:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR'
--- structure is included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR' /can/ also be
--- included in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to enable the feature.
+-- 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. 'PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR'
+-- /can/ also be used in the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
+-- features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_workgroup_memory_explicit_layout.hs-boot b/src/Vulkan/Extensions/VK_KHR_workgroup_memory_explicit_layout.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_workgroup_memory_explicit_layout.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_workgroup_memory_explicit_layout.hs-boot
@@ -61,7 +61,7 @@
 -- of @Workgroup@ storage class memory and create aliases between variables
 -- from that storage class in a compute shader.
 --
--- The aliasing feature allows different \"views\" on the same data, so the
+-- The aliasing feature allows different “views” on the same data, so the
 -- shader can bulk copy data from another storage class using one type
 -- (e.g. an array of large vectors), and then use the data with a more
 -- specific type. It also enables reducing the amount of workgroup memory
diff --git a/src/Vulkan/Extensions/VK_KHR_xcb_surface.hs b/src/Vulkan/Extensions/VK_KHR_xcb_surface.hs
--- a/src/Vulkan/Extensions/VK_KHR_xcb_surface.hs
+++ b/src/Vulkan/Extensions/VK_KHR_xcb_surface.hs
@@ -133,15 +133,15 @@
 --     -   Added presentation support query for an (xcb_connection_t*,
 --         xcb_visualid_t) pair.
 --
---     -   Removed \"root\" parameter from CreateXcbSurfaceKHR(), as it is
+--     -   Removed “root” parameter from CreateXcbSurfaceKHR(), as it is
 --         redundant when a window on the same screen is specified as well.
 --
 --     -   Adjusted wording of issue #1 and added agreed upon resolution.
 --
 -- -   Revision 3, 2015-10-14 (Ian Elliott)
 --
---     -   Removed \"root\" parameter from CreateXcbSurfaceKHR() in one
---         more place.
+--     -   Removed “root” parameter from CreateXcbSurfaceKHR() in one more
+--         place.
 --
 -- -   Revision 4, 2015-10-26 (Ian Elliott)
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_xcb_surface.hs-boot b/src/Vulkan/Extensions/VK_KHR_xcb_surface.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_xcb_surface.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_xcb_surface.hs-boot
@@ -133,15 +133,15 @@
 --     -   Added presentation support query for an (xcb_connection_t*,
 --         xcb_visualid_t) pair.
 --
---     -   Removed \"root\" parameter from CreateXcbSurfaceKHR(), as it is
+--     -   Removed “root” parameter from CreateXcbSurfaceKHR(), as it is
 --         redundant when a window on the same screen is specified as well.
 --
 --     -   Adjusted wording of issue #1 and added agreed upon resolution.
 --
 -- -   Revision 3, 2015-10-14 (Ian Elliott)
 --
---     -   Removed \"root\" parameter from CreateXcbSurfaceKHR() in one
---         more place.
+--     -   Removed “root” parameter from CreateXcbSurfaceKHR() in one more
+--         place.
 --
 -- -   Revision 4, 2015-10-26 (Ian Elliott)
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_xlib_surface.hs b/src/Vulkan/Extensions/VK_KHR_xlib_surface.hs
--- a/src/Vulkan/Extensions/VK_KHR_xlib_surface.hs
+++ b/src/Vulkan/Extensions/VK_KHR_xlib_surface.hs
@@ -131,7 +131,7 @@
 --
 --     -   Added presentation support query for (Display*, VisualID) pair.
 --
---     -   Removed \"root\" parameter from CreateXlibSurfaceKHR(), as it is
+--     -   Removed “root” parameter from CreateXlibSurfaceKHR(), as it is
 --         redundant when a window on the same screen is specified as well.
 --
 --     -   Added appropriate X errors.
diff --git a/src/Vulkan/Extensions/VK_KHR_xlib_surface.hs-boot b/src/Vulkan/Extensions/VK_KHR_xlib_surface.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_xlib_surface.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_xlib_surface.hs-boot
@@ -131,7 +131,7 @@
 --
 --     -   Added presentation support query for (Display*, VisualID) pair.
 --
---     -   Removed \"root\" parameter from CreateXlibSurfaceKHR(), as it is
+--     -   Removed “root” parameter from CreateXlibSurfaceKHR(), as it is
 --         redundant when a window on the same screen is specified as well.
 --
 --     -   Added appropriate X errors.
diff --git a/src/Vulkan/Extensions/VK_KHR_zero_initialize_workgroup_memory.hs b/src/Vulkan/Extensions/VK_KHR_zero_initialize_workgroup_memory.hs
--- a/src/Vulkan/Extensions/VK_KHR_zero_initialize_workgroup_memory.hs
+++ b/src/Vulkan/Extensions/VK_KHR_zero_initialize_workgroup_memory.hs
@@ -28,6 +28,8 @@
 --     -   Alan Baker
 --         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_zero_initialize_workgroup_memory:%20&body=@alan-baker%20 >
 --
+-- == Other Extension Metadata
+--
 -- [__Last Modified Date__]
 --     2020-11-18
 --
@@ -45,6 +47,8 @@
 --
 --     -   Jason Ekstrand, Intel
 --
+-- == Description
+--
 -- This extension allows the use of a null constant initializer on shader
 -- Workgroup memory variables, allowing implementations to expose any
 -- special hardware or instructions they may have. Zero initialization is
@@ -121,19 +125,20 @@
 --
 -- = Members
 --
--- The member of the
--- 'PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR' structure
--- describe the following feature:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR'
--- structure is included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with a value indicating whether the feature is supported.
--- 'PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR' /can/ also be
--- included in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to enable the features.
+-- 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. 'PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR'
+-- /can/ also be used in the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
+-- features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_zero_initialize_workgroup_memory.hs-boot b/src/Vulkan/Extensions/VK_KHR_zero_initialize_workgroup_memory.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_zero_initialize_workgroup_memory.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_zero_initialize_workgroup_memory.hs-boot
@@ -28,6 +28,8 @@
 --     -   Alan Baker
 --         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_KHR_zero_initialize_workgroup_memory:%20&body=@alan-baker%20 >
 --
+-- == Other Extension Metadata
+--
 -- [__Last Modified Date__]
 --     2020-11-18
 --
@@ -44,6 +46,8 @@
 --     -   Jeff Bolz, Nvidia
 --
 --     -   Jason Ekstrand, Intel
+--
+-- == Description
 --
 -- This extension allows the use of a null constant initializer on shader
 -- Workgroup memory variables, allowing implementations to expose any
diff --git a/src/Vulkan/Extensions/VK_NN_vi_surface.hs b/src/Vulkan/Extensions/VK_NN_vi_surface.hs
--- a/src/Vulkan/Extensions/VK_NN_vi_surface.hs
+++ b/src/Vulkan/Extensions/VK_NN_vi_surface.hs
@@ -84,13 +84,13 @@
 --
 -- 2) 'ViSurfaceCreateInfoNN'::@pWindow@ is intended to store an
 -- @nn@::@vi@::@NativeWindowHandle@, but its declared type is a bare
--- @void@* to store the window handle. Why the discrepancy?
+-- @void*@ to store the window handle. Why the discrepancy?
 --
 -- __RESOLVED__: It is for C compatibility. The definition for the VI
 -- native window handle type is defined inside the @nn@::@vi@ C++
 -- namespace. This prevents its use in C source files.
--- @nn@::@vi@::@NativeWindowHandle@ is always defined to be @void@*, so
--- this extension uses @void@* to match.
+-- @nn@::@vi@::@NativeWindowHandle@ is always defined to be @void*@, so
+-- this extension uses @void*@ to match.
 --
 -- == Version History
 --
diff --git a/src/Vulkan/Extensions/VK_NN_vi_surface.hs-boot b/src/Vulkan/Extensions/VK_NN_vi_surface.hs-boot
--- a/src/Vulkan/Extensions/VK_NN_vi_surface.hs-boot
+++ b/src/Vulkan/Extensions/VK_NN_vi_surface.hs-boot
@@ -84,13 +84,13 @@
 --
 -- 2) 'ViSurfaceCreateInfoNN'::@pWindow@ is intended to store an
 -- @nn@::@vi@::@NativeWindowHandle@, but its declared type is a bare
--- @void@* to store the window handle. Why the discrepancy?
+-- @void*@ to store the window handle. Why the discrepancy?
 --
 -- __RESOLVED__: It is for C compatibility. The definition for the VI
 -- native window handle type is defined inside the @nn@::@vi@ C++
 -- namespace. This prevents its use in C source files.
--- @nn@::@vi@::@NativeWindowHandle@ is always defined to be @void@*, so
--- this extension uses @void@* to match.
+-- @nn@::@vi@::@NativeWindowHandle@ is always defined to be @void*@, so
+-- this extension uses @void*@ to match.
 --
 -- == Version History
 --
diff --git a/src/Vulkan/Extensions/VK_NVX_binary_import.hs b/src/Vulkan/Extensions/VK_NVX_binary_import.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_NVX_binary_import.hs
@@ -0,0 +1,602 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_NVX_binary_import - device extension
+--
+-- == VK_NVX_binary_import
+--
+-- [__Name String__]
+--     @VK_NVX_binary_import@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     30
+--
+-- [__Revision__]
+--     1
+--
+-- [__Extension and Version Dependencies__]
+--
+--     -   Requires Vulkan 1.0
+--
+-- [__Contact__]
+--
+--     -   Eric Werness
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NVX_binary_import:%20&body=@ewerness%20 >
+--
+--     -   Liam Middlebrook
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NVX_binary_import:%20&body=@liam-middlebrook%20 >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2021-04-09
+--
+-- [__Contributors__]
+--
+--     -   Eric Werness, NVIDIA
+--
+--     -   Liam Middlebrook, NVIDIA
+--
+-- == Description
+--
+-- This extension allows applications to import CuBIN binaries and execute
+-- them.
+--
+-- == New Object Types
+--
+-- -   'Vulkan.Extensions.Handles.CuFunctionNVX'
+--
+-- -   'Vulkan.Extensions.Handles.CuModuleNVX'
+--
+-- == New Commands
+--
+-- -   'cmdCuLaunchKernelNVX'
+--
+-- -   'createCuFunctionNVX'
+--
+-- -   'createCuModuleNVX'
+--
+-- -   'destroyCuFunctionNVX'
+--
+-- -   'destroyCuModuleNVX'
+--
+-- == New Structures
+--
+-- -   'CuFunctionCreateInfoNVX'
+--
+-- -   'CuLaunchInfoNVX'
+--
+-- -   'CuModuleCreateInfoNVX'
+--
+-- == New Enum Constants
+--
+-- -   'NVX_BINARY_IMPORT_EXTENSION_NAME'
+--
+-- -   'NVX_BINARY_IMPORT_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT':
+--
+--     -   'Vulkan.Extensions.VK_EXT_debug_report.DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT'
+--
+--     -   'Vulkan.Extensions.VK_EXT_debug_report.DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':
+--
+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_CU_FUNCTION_NVX'
+--
+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_CU_MODULE_NVX'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX'
+--
+-- == Version History
+--
+-- -   Revision 1, 2021-04-09 (Eric Werness)
+--
+--     -   Internal revisions
+--
+-- = See Also
+--
+-- 'CuFunctionCreateInfoNVX', 'Vulkan.Extensions.Handles.CuFunctionNVX',
+-- 'CuLaunchInfoNVX', 'CuModuleCreateInfoNVX',
+-- 'Vulkan.Extensions.Handles.CuModuleNVX', 'cmdCuLaunchKernelNVX',
+-- 'createCuFunctionNVX', 'createCuModuleNVX', 'destroyCuFunctionNVX',
+-- 'destroyCuModuleNVX'
+--
+-- = Document Notes
+--
+-- For more information, see the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_binary_import Vulkan Specification>
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_NVX_binary_import  ( createCuModuleNVX
+                                               , withCuModuleNVX
+                                               , createCuFunctionNVX
+                                               , withCuFunctionNVX
+                                               , destroyCuModuleNVX
+                                               , destroyCuFunctionNVX
+                                               , cmdCuLaunchKernelNVX
+                                               , CuModuleCreateInfoNVX(..)
+                                               , CuFunctionCreateInfoNVX(..)
+                                               , CuLaunchInfoNVX(..)
+                                               , NVX_BINARY_IMPORT_SPEC_VERSION
+                                               , pattern NVX_BINARY_IMPORT_SPEC_VERSION
+                                               , NVX_BINARY_IMPORT_EXTENSION_NAME
+                                               , pattern NVX_BINARY_IMPORT_EXTENSION_NAME
+                                               , CuModuleNVX(..)
+                                               , CuFunctionNVX(..)
+                                               , DebugReportObjectTypeEXT(..)
+                                               ) where
+
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Exception.Base (bracket)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Foreign.Marshal.Alloc (allocaBytesAligned)
+import Foreign.Marshal.Alloc (callocBytes)
+import Foreign.Marshal.Alloc (free)
+import GHC.Base (when)
+import GHC.IO (throwIO)
+import GHC.Ptr (nullFunPtr)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Data.ByteString (packCString)
+import Data.ByteString (useAsCString)
+import Data.Coerce (coerce)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Control.Monad.IO.Class (MonadIO)
+import Data.String (IsString)
+import Data.Typeable (Typeable)
+import Foreign.C.Types (CChar)
+import Foreign.C.Types (CSize)
+import Foreign.C.Types (CSize(..))
+import Foreign.C.Types (CSize(CSize))
+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.Word (Word64)
+import Data.ByteString (ByteString)
+import Data.Kind (Type)
+import Control.Monad.Trans.Cont (ContT(..))
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
+import Vulkan.Core10.Handles (CommandBuffer)
+import Vulkan.Core10.Handles (CommandBuffer(..))
+import Vulkan.Core10.Handles (CommandBuffer_T)
+import Vulkan.Extensions.Handles (CuFunctionNVX)
+import Vulkan.Extensions.Handles (CuFunctionNVX(..))
+import Vulkan.Extensions.Handles (CuModuleNVX)
+import Vulkan.Extensions.Handles (CuModuleNVX(..))
+import Vulkan.Core10.Handles (Device)
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdCuLaunchKernelNVX))
+import Vulkan.Dynamic (DeviceCmds(pVkCreateCuFunctionNVX))
+import Vulkan.Dynamic (DeviceCmds(pVkCreateCuModuleNVX))
+import Vulkan.Dynamic (DeviceCmds(pVkDestroyCuFunctionNVX))
+import Vulkan.Dynamic (DeviceCmds(pVkDestroyCuModuleNVX))
+import Vulkan.Core10.Handles (Device_T)
+import Vulkan.Core10.Enums.Result (Result)
+import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Exception (VulkanException(..))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Extensions.Handles (CuFunctionNVX(..))
+import Vulkan.Extensions.Handles (CuModuleNVX(..))
+import Vulkan.Extensions.VK_EXT_debug_report (DebugReportObjectTypeEXT(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateCuModuleNVX
+  :: FunPtr (Ptr Device_T -> Ptr CuModuleCreateInfoNVX -> Ptr AllocationCallbacks -> Ptr CuModuleNVX -> IO Result) -> Ptr Device_T -> Ptr CuModuleCreateInfoNVX -> Ptr AllocationCallbacks -> Ptr CuModuleNVX -> IO Result
+
+-- No documentation found for TopLevel "vkCreateCuModuleNVX"
+createCuModuleNVX :: forall io
+                   . (MonadIO io)
+                  => -- No documentation found for Nested "vkCreateCuModuleNVX" "device"
+                     Device
+                  -> -- No documentation found for Nested "vkCreateCuModuleNVX" "pCreateInfo"
+                     CuModuleCreateInfoNVX
+                  -> -- No documentation found for Nested "vkCreateCuModuleNVX" "pAllocator"
+                     ("allocator" ::: Maybe AllocationCallbacks)
+                  -> io (CuModuleNVX)
+createCuModuleNVX device createInfo allocator = liftIO . evalContT $ do
+  let vkCreateCuModuleNVXPtr = pVkCreateCuModuleNVX (deviceCmds (device :: Device))
+  lift $ unless (vkCreateCuModuleNVXPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateCuModuleNVX is null" Nothing Nothing
+  let vkCreateCuModuleNVX' = mkVkCreateCuModuleNVX vkCreateCuModuleNVXPtr
+  pCreateInfo <- ContT $ withCStruct (createInfo)
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  pPModule <- ContT $ bracket (callocBytes @CuModuleNVX 8) free
+  r <- lift $ traceAroundEvent "vkCreateCuModuleNVX" (vkCreateCuModuleNVX' (deviceHandle (device)) pCreateInfo pAllocator (pPModule))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pModule <- lift $ peek @CuModuleNVX pPModule
+  pure $ (pModule)
+
+-- | A convenience wrapper to make a compatible pair of calls to
+-- 'createCuModuleNVX' and 'destroyCuModuleNVX'
+--
+-- To ensure that 'destroyCuModuleNVX' is always called: pass
+-- 'Control.Exception.bracket' (or the allocate function from your
+-- favourite resource management library) as the last argument.
+-- To just extract the pair pass '(,)' as the last argument.
+--
+withCuModuleNVX :: forall io r . MonadIO io => Device -> CuModuleCreateInfoNVX -> Maybe AllocationCallbacks -> (io CuModuleNVX -> (CuModuleNVX -> io ()) -> r) -> r
+withCuModuleNVX device pCreateInfo pAllocator b =
+  b (createCuModuleNVX device pCreateInfo pAllocator)
+    (\(o0) -> destroyCuModuleNVX device o0 pAllocator)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreateCuFunctionNVX
+  :: FunPtr (Ptr Device_T -> Ptr CuFunctionCreateInfoNVX -> Ptr AllocationCallbacks -> Ptr CuFunctionNVX -> IO Result) -> Ptr Device_T -> Ptr CuFunctionCreateInfoNVX -> Ptr AllocationCallbacks -> Ptr CuFunctionNVX -> IO Result
+
+-- No documentation found for TopLevel "vkCreateCuFunctionNVX"
+createCuFunctionNVX :: forall io
+                     . (MonadIO io)
+                    => -- No documentation found for Nested "vkCreateCuFunctionNVX" "device"
+                       Device
+                    -> -- No documentation found for Nested "vkCreateCuFunctionNVX" "pCreateInfo"
+                       CuFunctionCreateInfoNVX
+                    -> -- No documentation found for Nested "vkCreateCuFunctionNVX" "pAllocator"
+                       ("allocator" ::: Maybe AllocationCallbacks)
+                    -> io (CuFunctionNVX)
+createCuFunctionNVX device createInfo allocator = liftIO . evalContT $ do
+  let vkCreateCuFunctionNVXPtr = pVkCreateCuFunctionNVX (deviceCmds (device :: Device))
+  lift $ unless (vkCreateCuFunctionNVXPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreateCuFunctionNVX is null" Nothing Nothing
+  let vkCreateCuFunctionNVX' = mkVkCreateCuFunctionNVX vkCreateCuFunctionNVXPtr
+  pCreateInfo <- ContT $ withCStruct (createInfo)
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  pPFunction <- ContT $ bracket (callocBytes @CuFunctionNVX 8) free
+  r <- lift $ traceAroundEvent "vkCreateCuFunctionNVX" (vkCreateCuFunctionNVX' (deviceHandle (device)) pCreateInfo pAllocator (pPFunction))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pFunction <- lift $ peek @CuFunctionNVX pPFunction
+  pure $ (pFunction)
+
+-- | A convenience wrapper to make a compatible pair of calls to
+-- 'createCuFunctionNVX' and 'destroyCuFunctionNVX'
+--
+-- To ensure that 'destroyCuFunctionNVX' is always called: pass
+-- 'Control.Exception.bracket' (or the allocate function from your
+-- favourite resource management library) as the last argument.
+-- To just extract the pair pass '(,)' as the last argument.
+--
+withCuFunctionNVX :: forall io r . MonadIO io => Device -> CuFunctionCreateInfoNVX -> Maybe AllocationCallbacks -> (io CuFunctionNVX -> (CuFunctionNVX -> io ()) -> r) -> r
+withCuFunctionNVX device pCreateInfo pAllocator b =
+  b (createCuFunctionNVX device pCreateInfo pAllocator)
+    (\(o0) -> destroyCuFunctionNVX device o0 pAllocator)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyCuModuleNVX
+  :: FunPtr (Ptr Device_T -> CuModuleNVX -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> CuModuleNVX -> Ptr AllocationCallbacks -> IO ()
+
+-- No documentation found for TopLevel "vkDestroyCuModuleNVX"
+destroyCuModuleNVX :: forall io
+                    . (MonadIO io)
+                   => -- No documentation found for Nested "vkDestroyCuModuleNVX" "device"
+                      Device
+                   -> -- No documentation found for Nested "vkDestroyCuModuleNVX" "module"
+                      CuModuleNVX
+                   -> -- No documentation found for Nested "vkDestroyCuModuleNVX" "pAllocator"
+                      ("allocator" ::: Maybe AllocationCallbacks)
+                   -> io ()
+destroyCuModuleNVX device module' allocator = liftIO . evalContT $ do
+  let vkDestroyCuModuleNVXPtr = pVkDestroyCuModuleNVX (deviceCmds (device :: Device))
+  lift $ unless (vkDestroyCuModuleNVXPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyCuModuleNVX is null" Nothing Nothing
+  let vkDestroyCuModuleNVX' = mkVkDestroyCuModuleNVX vkDestroyCuModuleNVXPtr
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  lift $ traceAroundEvent "vkDestroyCuModuleNVX" (vkDestroyCuModuleNVX' (deviceHandle (device)) (module') pAllocator)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyCuFunctionNVX
+  :: FunPtr (Ptr Device_T -> CuFunctionNVX -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> CuFunctionNVX -> Ptr AllocationCallbacks -> IO ()
+
+-- No documentation found for TopLevel "vkDestroyCuFunctionNVX"
+destroyCuFunctionNVX :: forall io
+                      . (MonadIO io)
+                     => -- No documentation found for Nested "vkDestroyCuFunctionNVX" "device"
+                        Device
+                     -> -- No documentation found for Nested "vkDestroyCuFunctionNVX" "function"
+                        CuFunctionNVX
+                     -> -- No documentation found for Nested "vkDestroyCuFunctionNVX" "pAllocator"
+                        ("allocator" ::: Maybe AllocationCallbacks)
+                     -> io ()
+destroyCuFunctionNVX device function allocator = liftIO . evalContT $ do
+  let vkDestroyCuFunctionNVXPtr = pVkDestroyCuFunctionNVX (deviceCmds (device :: Device))
+  lift $ unless (vkDestroyCuFunctionNVXPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyCuFunctionNVX is null" Nothing Nothing
+  let vkDestroyCuFunctionNVX' = mkVkDestroyCuFunctionNVX vkDestroyCuFunctionNVXPtr
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  lift $ traceAroundEvent "vkDestroyCuFunctionNVX" (vkDestroyCuFunctionNVX' (deviceHandle (device)) (function) pAllocator)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdCuLaunchKernelNVX
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr CuLaunchInfoNVX -> IO ()) -> Ptr CommandBuffer_T -> Ptr CuLaunchInfoNVX -> IO ()
+
+-- No documentation found for TopLevel "vkCmdCuLaunchKernelNVX"
+cmdCuLaunchKernelNVX :: forall io
+                      . (MonadIO io)
+                     => -- No documentation found for Nested "vkCmdCuLaunchKernelNVX" "commandBuffer"
+                        CommandBuffer
+                     -> -- No documentation found for Nested "vkCmdCuLaunchKernelNVX" "pLaunchInfo"
+                        CuLaunchInfoNVX
+                     -> io ()
+cmdCuLaunchKernelNVX commandBuffer launchInfo = liftIO . evalContT $ do
+  let vkCmdCuLaunchKernelNVXPtr = pVkCmdCuLaunchKernelNVX (deviceCmds (commandBuffer :: CommandBuffer))
+  lift $ unless (vkCmdCuLaunchKernelNVXPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCuLaunchKernelNVX is null" Nothing Nothing
+  let vkCmdCuLaunchKernelNVX' = mkVkCmdCuLaunchKernelNVX vkCmdCuLaunchKernelNVXPtr
+  pLaunchInfo <- ContT $ withCStruct (launchInfo)
+  lift $ traceAroundEvent "vkCmdCuLaunchKernelNVX" (vkCmdCuLaunchKernelNVX' (commandBufferHandle (commandBuffer)) pLaunchInfo)
+  pure $ ()
+
+
+-- No documentation found for TopLevel "VkCuModuleCreateInfoNVX"
+data CuModuleCreateInfoNVX = CuModuleCreateInfoNVX
+  { -- No documentation found for Nested "VkCuModuleCreateInfoNVX" "dataSize"
+    dataSize :: Word64
+  , -- No documentation found for Nested "VkCuModuleCreateInfoNVX" "pData"
+    data' :: Ptr ()
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CuModuleCreateInfoNVX)
+#endif
+deriving instance Show CuModuleCreateInfoNVX
+
+instance ToCStruct CuModuleCreateInfoNVX where
+  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CuModuleCreateInfoNVX{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr CSize)) (CSize (dataSize))
+    poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (data')
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr CSize)) (CSize (zero))
+    poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (zero)
+    f
+
+instance FromCStruct CuModuleCreateInfoNVX where
+  peekCStruct p = do
+    dataSize <- peek @CSize ((p `plusPtr` 16 :: Ptr CSize))
+    pData <- peek @(Ptr ()) ((p `plusPtr` 24 :: Ptr (Ptr ())))
+    pure $ CuModuleCreateInfoNVX
+             (coerce @CSize @Word64 dataSize) pData
+
+instance Storable CuModuleCreateInfoNVX where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero CuModuleCreateInfoNVX where
+  zero = CuModuleCreateInfoNVX
+           zero
+           zero
+
+
+-- No documentation found for TopLevel "VkCuFunctionCreateInfoNVX"
+data CuFunctionCreateInfoNVX = CuFunctionCreateInfoNVX
+  { -- No documentation found for Nested "VkCuFunctionCreateInfoNVX" "module"
+    module' :: CuModuleNVX
+  , -- No documentation found for Nested "VkCuFunctionCreateInfoNVX" "pName"
+    name :: ByteString
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CuFunctionCreateInfoNVX)
+#endif
+deriving instance Show CuFunctionCreateInfoNVX
+
+instance ToCStruct CuFunctionCreateInfoNVX where
+  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CuFunctionCreateInfoNVX{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr CuModuleNVX)) (module')
+    pName'' <- ContT $ useAsCString (name)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr CChar))) pName''
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr CuModuleNVX)) (zero)
+    pName'' <- ContT $ useAsCString (mempty)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr CChar))) pName''
+    lift $ f
+
+instance FromCStruct CuFunctionCreateInfoNVX where
+  peekCStruct p = do
+    module' <- peek @CuModuleNVX ((p `plusPtr` 16 :: Ptr CuModuleNVX))
+    pName <- packCString =<< peek ((p `plusPtr` 24 :: Ptr (Ptr CChar)))
+    pure $ CuFunctionCreateInfoNVX
+             module' pName
+
+instance Zero CuFunctionCreateInfoNVX where
+  zero = CuFunctionCreateInfoNVX
+           zero
+           mempty
+
+
+-- No documentation found for TopLevel "VkCuLaunchInfoNVX"
+data CuLaunchInfoNVX = CuLaunchInfoNVX
+  { -- No documentation found for Nested "VkCuLaunchInfoNVX" "function"
+    function :: CuFunctionNVX
+  , -- No documentation found for Nested "VkCuLaunchInfoNVX" "gridDimX"
+    gridDimX :: Word32
+  , -- No documentation found for Nested "VkCuLaunchInfoNVX" "gridDimY"
+    gridDimY :: Word32
+  , -- No documentation found for Nested "VkCuLaunchInfoNVX" "gridDimZ"
+    gridDimZ :: Word32
+  , -- No documentation found for Nested "VkCuLaunchInfoNVX" "blockDimX"
+    blockDimX :: Word32
+  , -- No documentation found for Nested "VkCuLaunchInfoNVX" "blockDimY"
+    blockDimY :: Word32
+  , -- No documentation found for Nested "VkCuLaunchInfoNVX" "blockDimZ"
+    blockDimZ :: Word32
+  , -- No documentation found for Nested "VkCuLaunchInfoNVX" "sharedMemBytes"
+    sharedMemBytes :: Word32
+  , -- No documentation found for Nested "VkCuLaunchInfoNVX" "paramCount"
+    paramCount :: Word64
+  , -- No documentation found for Nested "VkCuLaunchInfoNVX" "pParams"
+    params :: Ptr (Ptr ())
+  , -- No documentation found for Nested "VkCuLaunchInfoNVX" "extraCount"
+    extraCount :: Word64
+  , -- No documentation found for Nested "VkCuLaunchInfoNVX" "pExtras"
+    extras :: Ptr (Ptr ())
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CuLaunchInfoNVX)
+#endif
+deriving instance Show CuLaunchInfoNVX
+
+instance ToCStruct CuLaunchInfoNVX where
+  withCStruct x f = allocaBytesAligned 88 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CuLaunchInfoNVX{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr CuFunctionNVX)) (function)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (gridDimX)
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (gridDimY)
+    poke ((p `plusPtr` 32 :: Ptr Word32)) (gridDimZ)
+    poke ((p `plusPtr` 36 :: Ptr Word32)) (blockDimX)
+    poke ((p `plusPtr` 40 :: Ptr Word32)) (blockDimY)
+    poke ((p `plusPtr` 44 :: Ptr Word32)) (blockDimZ)
+    poke ((p `plusPtr` 48 :: Ptr Word32)) (sharedMemBytes)
+    poke ((p `plusPtr` 56 :: Ptr CSize)) (CSize (paramCount))
+    poke ((p `plusPtr` 64 :: Ptr (Ptr (Ptr ())))) (params)
+    poke ((p `plusPtr` 72 :: Ptr CSize)) (CSize (extraCount))
+    poke ((p `plusPtr` 80 :: Ptr (Ptr (Ptr ())))) (extras)
+    f
+  cStructSize = 88
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr CuFunctionNVX)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 44 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 56 :: Ptr CSize)) (CSize (zero))
+    poke ((p `plusPtr` 64 :: Ptr (Ptr (Ptr ())))) (zero)
+    poke ((p `plusPtr` 72 :: Ptr CSize)) (CSize (zero))
+    poke ((p `plusPtr` 80 :: Ptr (Ptr (Ptr ())))) (zero)
+    f
+
+instance FromCStruct CuLaunchInfoNVX where
+  peekCStruct p = do
+    function <- peek @CuFunctionNVX ((p `plusPtr` 16 :: Ptr CuFunctionNVX))
+    gridDimX <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    gridDimY <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
+    gridDimZ <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    blockDimX <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
+    blockDimY <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
+    blockDimZ <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))
+    sharedMemBytes <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
+    paramCount <- peek @CSize ((p `plusPtr` 56 :: Ptr CSize))
+    pParams <- peek @(Ptr (Ptr ())) ((p `plusPtr` 64 :: Ptr (Ptr (Ptr ()))))
+    extraCount <- peek @CSize ((p `plusPtr` 72 :: Ptr CSize))
+    pExtras <- peek @(Ptr (Ptr ())) ((p `plusPtr` 80 :: Ptr (Ptr (Ptr ()))))
+    pure $ CuLaunchInfoNVX
+             function gridDimX gridDimY gridDimZ blockDimX blockDimY blockDimZ sharedMemBytes (coerce @CSize @Word64 paramCount) pParams (coerce @CSize @Word64 extraCount) pExtras
+
+instance Storable CuLaunchInfoNVX where
+  sizeOf ~_ = 88
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero CuLaunchInfoNVX where
+  zero = CuLaunchInfoNVX
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+type NVX_BINARY_IMPORT_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_NVX_BINARY_IMPORT_SPEC_VERSION"
+pattern NVX_BINARY_IMPORT_SPEC_VERSION :: forall a . Integral a => a
+pattern NVX_BINARY_IMPORT_SPEC_VERSION = 1
+
+
+type NVX_BINARY_IMPORT_EXTENSION_NAME = "VK_NVX_binary_import"
+
+-- No documentation found for TopLevel "VK_NVX_BINARY_IMPORT_EXTENSION_NAME"
+pattern NVX_BINARY_IMPORT_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern NVX_BINARY_IMPORT_EXTENSION_NAME = "VK_NVX_binary_import"
+
diff --git a/src/Vulkan/Extensions/VK_NVX_binary_import.hs-boot b/src/Vulkan/Extensions/VK_NVX_binary_import.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_NVX_binary_import.hs-boot
@@ -0,0 +1,153 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_NVX_binary_import - device extension
+--
+-- == VK_NVX_binary_import
+--
+-- [__Name String__]
+--     @VK_NVX_binary_import@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     30
+--
+-- [__Revision__]
+--     1
+--
+-- [__Extension and Version Dependencies__]
+--
+--     -   Requires Vulkan 1.0
+--
+-- [__Contact__]
+--
+--     -   Eric Werness
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NVX_binary_import:%20&body=@ewerness%20 >
+--
+--     -   Liam Middlebrook
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NVX_binary_import:%20&body=@liam-middlebrook%20 >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2021-04-09
+--
+-- [__Contributors__]
+--
+--     -   Eric Werness, NVIDIA
+--
+--     -   Liam Middlebrook, NVIDIA
+--
+-- == Description
+--
+-- This extension allows applications to import CuBIN binaries and execute
+-- them.
+--
+-- == New Object Types
+--
+-- -   'Vulkan.Extensions.Handles.CuFunctionNVX'
+--
+-- -   'Vulkan.Extensions.Handles.CuModuleNVX'
+--
+-- == New Commands
+--
+-- -   'cmdCuLaunchKernelNVX'
+--
+-- -   'createCuFunctionNVX'
+--
+-- -   'createCuModuleNVX'
+--
+-- -   'destroyCuFunctionNVX'
+--
+-- -   'destroyCuModuleNVX'
+--
+-- == New Structures
+--
+-- -   'CuFunctionCreateInfoNVX'
+--
+-- -   'CuLaunchInfoNVX'
+--
+-- -   'CuModuleCreateInfoNVX'
+--
+-- == New Enum Constants
+--
+-- -   'NVX_BINARY_IMPORT_EXTENSION_NAME'
+--
+-- -   'NVX_BINARY_IMPORT_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT':
+--
+--     -   'Vulkan.Extensions.VK_EXT_debug_report.DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT'
+--
+--     -   'Vulkan.Extensions.VK_EXT_debug_report.DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':
+--
+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_CU_FUNCTION_NVX'
+--
+--     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_CU_MODULE_NVX'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX'
+--
+-- == Version History
+--
+-- -   Revision 1, 2021-04-09 (Eric Werness)
+--
+--     -   Internal revisions
+--
+-- = See Also
+--
+-- 'CuFunctionCreateInfoNVX', 'Vulkan.Extensions.Handles.CuFunctionNVX',
+-- 'CuLaunchInfoNVX', 'CuModuleCreateInfoNVX',
+-- 'Vulkan.Extensions.Handles.CuModuleNVX', 'cmdCuLaunchKernelNVX',
+-- 'createCuFunctionNVX', 'createCuModuleNVX', 'destroyCuFunctionNVX',
+-- 'destroyCuModuleNVX'
+--
+-- = Document Notes
+--
+-- For more information, see the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_binary_import Vulkan Specification>
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_NVX_binary_import  ( CuFunctionCreateInfoNVX
+                                               , CuLaunchInfoNVX
+                                               , CuModuleCreateInfoNVX
+                                               ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data CuFunctionCreateInfoNVX
+
+instance ToCStruct CuFunctionCreateInfoNVX
+instance Show CuFunctionCreateInfoNVX
+
+instance FromCStruct CuFunctionCreateInfoNVX
+
+
+data CuLaunchInfoNVX
+
+instance ToCStruct CuLaunchInfoNVX
+instance Show CuLaunchInfoNVX
+
+instance FromCStruct CuLaunchInfoNVX
+
+
+data CuModuleCreateInfoNVX
+
+instance ToCStruct CuModuleCreateInfoNVX
+instance Show CuModuleCreateInfoNVX
+
+instance FromCStruct CuModuleCreateInfoNVX
+
diff --git a/src/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs b/src/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs
--- a/src/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs
+++ b/src/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs
@@ -186,18 +186,15 @@
 -- | VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX - Structure
 -- describing multiview limits that can be supported by an implementation
 --
--- = Members
---
--- The members of the
--- 'PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX' structure
--- describe the following implementation-dependent limits:
---
 -- = Description
 --
 -- If the 'PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX' structure
--- is included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- 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)
 --
diff --git a/src/Vulkan/Extensions/VK_NV_compute_shader_derivatives.hs b/src/Vulkan/Extensions/VK_NV_compute_shader_derivatives.hs
--- a/src/Vulkan/Extensions/VK_NV_compute_shader_derivatives.hs
+++ b/src/Vulkan/Extensions/VK_NV_compute_shader_derivatives.hs
@@ -152,22 +152,24 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceComputeShaderDerivativesFeaturesNV'
--- structure describe the following features:
+-- This structure describes the following features:
 --
 -- = Description
 --
 -- See
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-quad>
--- chapter for more information.
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-quad Quad shader scope>
+-- for more information.
 --
--- If the 'PhysicalDeviceComputeShaderDerivativesFeaturesNV' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether each feature is supported.
--- 'PhysicalDeviceComputeShaderDerivativesFeaturesNV' /can/ also be
--- included in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to enable features.
+-- If the @VkPhysicalDeviceComputeShaderDerivativesFeaturesNVfeatures@.
+-- 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. @VkPhysicalDeviceComputeShaderDerivativesFeaturesNVfeatures@.
+-- /can/ also be used in the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
+-- features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_NV_cooperative_matrix.hs b/src/Vulkan/Extensions/VK_NV_cooperative_matrix.hs
--- a/src/Vulkan/Extensions/VK_NV_cooperative_matrix.hs
+++ b/src/Vulkan/Extensions/VK_NV_cooperative_matrix.hs
@@ -113,7 +113,7 @@
 --
 -- (1) What matrix properties will be supported in practice?
 --
--- RESOLVED: In NVIDIA’s initial implementation, we will support:
+-- __RESOLVED__: In NVIDIA’s initial implementation, we will support:
 --
 -- -   AType = BType = fp16 CType = DType = fp16 MxNxK = 16x8x16 scope =
 --     Subgroup
@@ -256,11 +256,10 @@
 -- variable is overwritten with the number of structures actually written
 -- to @pProperties@. If @pPropertyCount@ is less than the number of
 -- cooperative matrix properties available, at most @pPropertyCount@
--- structures will be written. If @pPropertyCount@ is smaller than the
--- number of cooperative matrix properties available,
--- 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned instead of
--- 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate that not all the
--- available cooperative matrix properties were returned.
+-- structures will be written, and 'Vulkan.Core10.Enums.Result.INCOMPLETE'
+-- will be returned instead of 'Vulkan.Core10.Enums.Result.SUCCESS', to
+-- indicate that not all the available cooperative matrix properties were
+-- returned.
 --
 -- == Valid Usage (Implicit)
 --
@@ -323,18 +322,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceCooperativeMatrixFeaturesNV' structure
--- describe the following features:
+-- This structure describes the following features:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceCooperativeMatrixFeaturesNV' structure is included
--- in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceCooperativeMatrixFeaturesNV' /can/ also be included in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable
--- features.
+-- 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. 'PhysicalDeviceCooperativeMatrixFeaturesNV' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
@@ -397,17 +397,15 @@
 -- | VkPhysicalDeviceCooperativeMatrixPropertiesNV - Structure describing
 -- cooperative matrix properties supported by an implementation
 --
--- = Members
---
--- The members of the 'PhysicalDeviceCooperativeMatrixPropertiesNV'
--- structure describe the following implementation-dependent limits:
---
 -- = Description
 --
 -- If the 'PhysicalDeviceCooperativeMatrixPropertiesNV' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- 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)
 --
diff --git a/src/Vulkan/Extensions/VK_NV_cooperative_matrix.hs-boot b/src/Vulkan/Extensions/VK_NV_cooperative_matrix.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_cooperative_matrix.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_cooperative_matrix.hs-boot
@@ -113,7 +113,7 @@
 --
 -- (1) What matrix properties will be supported in practice?
 --
--- RESOLVED: In NVIDIA’s initial implementation, we will support:
+-- __RESOLVED__: In NVIDIA’s initial implementation, we will support:
 --
 -- -   AType = BType = fp16 CType = DType = fp16 MxNxK = 16x8x16 scope =
 --     Subgroup
diff --git a/src/Vulkan/Extensions/VK_NV_corner_sampled_image.hs b/src/Vulkan/Extensions/VK_NV_corner_sampled_image.hs
--- a/src/Vulkan/Extensions/VK_NV_corner_sampled_image.hs
+++ b/src/Vulkan/Extensions/VK_NV_corner_sampled_image.hs
@@ -102,7 +102,7 @@
 --
 -- 1.  What should this extension be named?
 --
---     DISCUSSION: While naming this extension, we chose the most
+--     __DISCUSSION__: While naming this extension, we chose the most
 --     distinctive aspect of the image organization and referred to such
 --     images as “corner-sampled images”. As a result, we decided to name
 --     the extension NV_corner_sampled_image.
@@ -110,7 +110,7 @@
 -- 2.  Do we need a format feature flag so formats can advertise if they
 --     support corner-sampling?
 --
---     DISCUSSION: Currently NVIDIA supports this for all 2D and 3D
+--     __DISCUSSION__: Currently NVIDIA supports this for all 2D and 3D
 --     formats, but not for cubemaps or depth-stencil formats. A format
 --     feature might be useful if other vendors would only support this on
 --     some formats.
@@ -118,18 +118,18 @@
 -- 3.  Do integer texel coordinates have a different range for
 --     corner-sampled images?
 --
---     RESOLVED: No, these are unchanged.
+--     __RESOLVED__: No, these are unchanged.
 --
 -- 4.  Do unnormalized sampler coordinates work with corner-sampled images?
 --     Are there any functional differences?
 --
---     RESOLVED: Yes they work. Unnormalized coordinates are treated as
---     already scaled for corner-sample usage.
+--     __RESOLVED__: Yes. Unnormalized coordinates are treated as already
+--     scaled for corner-sample usage.
 --
 -- 5.  Should we have a diagram in the “Image Operations” chapter
 --     demonstrating different texel sampling locations?
 --
---     UNRESOLVED: Probaby, but later.
+--     __UNRESOLVED__: Probaby, but later.
 --
 -- == Version History
 --
@@ -186,18 +186,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceCornerSampledImageFeaturesNV'
--- structure describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceCornerSampledImageFeaturesNV' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether each feature is supported.
--- 'PhysicalDeviceCornerSampledImageFeaturesNV' /can/ also be included in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable
--- features.
+-- 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. 'PhysicalDeviceCornerSampledImageFeaturesNV' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_NV_corner_sampled_image.hs-boot b/src/Vulkan/Extensions/VK_NV_corner_sampled_image.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_corner_sampled_image.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_corner_sampled_image.hs-boot
@@ -102,7 +102,7 @@
 --
 -- 1.  What should this extension be named?
 --
---     DISCUSSION: While naming this extension, we chose the most
+--     __DISCUSSION__: While naming this extension, we chose the most
 --     distinctive aspect of the image organization and referred to such
 --     images as “corner-sampled images”. As a result, we decided to name
 --     the extension NV_corner_sampled_image.
@@ -110,7 +110,7 @@
 -- 2.  Do we need a format feature flag so formats can advertise if they
 --     support corner-sampling?
 --
---     DISCUSSION: Currently NVIDIA supports this for all 2D and 3D
+--     __DISCUSSION__: Currently NVIDIA supports this for all 2D and 3D
 --     formats, but not for cubemaps or depth-stencil formats. A format
 --     feature might be useful if other vendors would only support this on
 --     some formats.
@@ -118,18 +118,18 @@
 -- 3.  Do integer texel coordinates have a different range for
 --     corner-sampled images?
 --
---     RESOLVED: No, these are unchanged.
+--     __RESOLVED__: No, these are unchanged.
 --
 -- 4.  Do unnormalized sampler coordinates work with corner-sampled images?
 --     Are there any functional differences?
 --
---     RESOLVED: Yes they work. Unnormalized coordinates are treated as
---     already scaled for corner-sample usage.
+--     __RESOLVED__: Yes. Unnormalized coordinates are treated as already
+--     scaled for corner-sample usage.
 --
 -- 5.  Should we have a diagram in the “Image Operations” chapter
 --     demonstrating different texel sampling locations?
 --
---     UNRESOLVED: Probaby, but later.
+--     __UNRESOLVED__: Probaby, but later.
 --
 -- == Version History
 --
diff --git a/src/Vulkan/Extensions/VK_NV_coverage_reduction_mode.hs b/src/Vulkan/Extensions/VK_NV_coverage_reduction_mode.hs
--- a/src/Vulkan/Extensions/VK_NV_coverage_reduction_mode.hs
+++ b/src/Vulkan/Extensions/VK_NV_coverage_reduction_mode.hs
@@ -231,9 +231,9 @@
 -- return the variable is overwritten with the number of values actually
 -- written to @pCombinations@. If the value of @pCombinationCount@ is less
 -- than the number of combinations supported for the given
--- @physicalDevice@, at most @pCombinationCount@ values will be written
--- @pCombinations@ and 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be
--- returned instead of 'Vulkan.Core10.Enums.Result.SUCCESS' to indicate
+-- @physicalDevice@, at most @pCombinationCount@ values will be written to
+-- @pCombinations@, and 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be
+-- returned instead of 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate
 -- that not all the supported values were returned.
 --
 -- == Valid Usage (Implicit)
@@ -300,18 +300,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceCoverageReductionModeFeaturesNV'
--- structure describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceCoverageReductionModeFeaturesNV' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceCoverageReductionModeFeaturesNV' /can/ also be included
--- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- enable the feature.
+-- 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. 'PhysicalDeviceCoverageReductionModeFeaturesNV' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
@@ -464,8 +465,9 @@
   { -- | @coverageReductionMode@ is a 'CoverageReductionModeNV' value specifying
     -- the coverage reduction mode.
     coverageReductionMode :: CoverageReductionModeNV
-  , -- | @rasterizationSamples@ specifies the number of rasterization samples in
-    -- the supported combination.
+  , -- | @rasterizationSamples@ is a
+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' specifying
+    -- the number of rasterization samples in the supported combination.
     rasterizationSamples :: SampleCountFlagBits
   , -- | @depthStencilSamples@ specifies the number of samples in the depth
     -- stencil attachment in the supported combination. A value of 0 indicates
diff --git a/src/Vulkan/Extensions/VK_NV_dedicated_allocation_image_aliasing.hs b/src/Vulkan/Extensions/VK_NV_dedicated_allocation_image_aliasing.hs
--- a/src/Vulkan/Extensions/VK_NV_dedicated_allocation_image_aliasing.hs
+++ b/src/Vulkan/Extensions/VK_NV_dedicated_allocation_image_aliasing.hs
@@ -121,19 +121,20 @@
 --
 -- = Members
 --
--- The members of the
--- 'PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV' structure
--- describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV'
--- structure is included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether each feature is supported.
--- 'PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV' /can/ also be
--- included in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to enable features.
+-- 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. 'PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV'
+-- /can/ also be used in the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
+-- features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_NV_device_diagnostic_checkpoints.hs b/src/Vulkan/Extensions/VK_NV_device_diagnostic_checkpoints.hs
--- a/src/Vulkan/Extensions/VK_NV_device_diagnostic_checkpoints.hs
+++ b/src/Vulkan/Extensions/VK_NV_device_diagnostic_checkpoints.hs
@@ -295,7 +295,7 @@
 
 
 -- | VkQueueFamilyCheckpointPropertiesNV - return structure for queue family
--- checkpoint info query
+-- checkpoint information query
 --
 -- = Description
 --
@@ -367,8 +367,9 @@
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'getQueueCheckpointDataNV'
 data CheckpointDataNV = CheckpointDataNV
-  { -- | @stage@ indicates which pipeline stage the checkpoint marker data refers
-    -- to.
+  { -- | @stage@ is a
+    -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits' value
+    -- specifying which pipeline stage the checkpoint marker data refers to.
     stage :: PipelineStageFlagBits
   , -- | @pCheckpointMarker@ contains the value of the last checkpoint marker
     -- executed in the stage that @stage@ refers to.
diff --git a/src/Vulkan/Extensions/VK_NV_device_diagnostics_config.hs b/src/Vulkan/Extensions/VK_NV_device_diagnostics_config.hs
--- a/src/Vulkan/Extensions/VK_NV_device_diagnostics_config.hs
+++ b/src/Vulkan/Extensions/VK_NV_device_diagnostics_config.hs
@@ -149,18 +149,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceDiagnosticsConfigFeaturesNV' structure
--- describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceDiagnosticsConfigFeaturesNV' structure is included
--- in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceDiagnosticsConfigFeaturesNV' /can/ also be used in the
--- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable the
--- feature.
+-- 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. 'PhysicalDeviceDiagnosticsConfigFeaturesNV' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
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
@@ -304,7 +304,7 @@
 -- the command buffer reservation process, however as the memory
 -- requirements can be substantial, we want to give developers the ability
 -- to budget the memory themselves. By lowering the @maxSequencesCount@ the
--- memory consumption can be reduced. Furthermore re-use of the memory is
+-- memory consumption can be reduced. Furthermore reuse of the memory is
 -- possible, for example for doing explicit preprocessing and execution in
 -- a ping-pong fashion.
 --
@@ -334,7 +334,7 @@
 --
 -- 8) How do we allow re-using already “generated” @indirectCommands@?
 --
--- Expose a @preprocessBuffer@ to re-use implementation-dependencyFlags
+-- Expose a @preprocessBuffer@ to reuse implementation-dependencyFlags
 -- data. Set the @isPreprocessed@ to true in
 -- 'cmdExecuteGeneratedCommandsNV'.
 --
@@ -506,6 +506,15 @@
 --
 --     -   Initial version
 --
+-- -   Revision 2, 2020-03-09 (Christoph Kubisch)
+--
+--     -   Remove VK_EXT_debug_report interactions
+--
+-- -   Revision 3, 2020-03-09 (Christoph Kubisch)
+--
+--     -   Fix naming VkPhysicalDeviceGenerated to
+--         VkPhysicalDeviceDeviceGenerated
+--
 -- = See Also
 --
 -- 'BindIndexBufferIndirectCommandNV', 'BindShaderGroupIndirectCommandNV',
@@ -696,8 +705,8 @@
   "dynamic" mkVkCmdExecuteGeneratedCommandsNV
   :: FunPtr (Ptr CommandBuffer_T -> Bool32 -> Ptr GeneratedCommandsInfoNV -> IO ()) -> Ptr CommandBuffer_T -> Bool32 -> Ptr GeneratedCommandsInfoNV -> IO ()
 
--- | vkCmdExecuteGeneratedCommandsNV - Performs the generation and execution
--- of commands on the device
+-- | vkCmdExecuteGeneratedCommandsNV - Generate and execute commands on the
+-- device
 --
 -- == Valid Usage
 --
@@ -801,9 +810,9 @@
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-02701# If the
 --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
 --     point used by this command requires any dynamic state, that state
---     /must/ have been set for @commandBuffer@, and done so after any
---     previously bound pipeline with the corresponding state not specified
---     as dynamic
+--     /must/ have been set or inherited for @commandBuffer@, and done so
+--     after any previously bound pipeline with the corresponding state not
+--     specified as dynamic
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-02859# There /must/ not
 --     have been any calls to dynamic state setting commands for any state
@@ -973,7 +982,7 @@
 --     dynamic state enabled, then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
@@ -987,7 +996,7 @@
 --     dynamic state enabled, then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @scissorCount@ parameter of
+--     drawing command, and the @scissorCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
@@ -1003,7 +1012,7 @@
 --     and
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ match the @scissorCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
@@ -1086,7 +1095,7 @@
 --     dynamic state enabled then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @primitiveTopology@ parameter of
+--     drawing command, and the @primitiveTopology@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
 --     /must/ be of the same
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
@@ -1094,6 +1103,47 @@
 --     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
 --     state
 --
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-04875# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-04876# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-04877# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-logicOp-04878# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command and the @logicOp@ /must/ be a valid
+--     'Vulkan.Core10.Enums.LogicOp.LogicOp' value
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-04879# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-primitiveFragmentShadingRateWithMultipleViewports-04552#
 --     If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
@@ -1105,7 +1155,7 @@
 --     then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ be @1@
 --
@@ -1127,6 +1177,16 @@
 --     /must/ be the same as the current subpass color and\/or
 --     depth\/stencil attachments
 --
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pStrides-04884# If the bound
+--     graphics pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @pStrides@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
+--     /must/ not be @NULL@
+--
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-04007# All vertex input
 --     bindings accessed via vertex input variables declared in the vertex
 --     shader entry point’s interface /must/ have either valid or
@@ -1664,18 +1724,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceDeviceGeneratedCommandsFeaturesNV'
--- structure describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceDeviceGeneratedCommandsFeaturesNV' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceDeviceGeneratedCommandsFeaturesNV' /can/ also be used in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable
--- the features.
+-- 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. 'PhysicalDeviceDeviceGeneratedCommandsFeaturesNV' /can/ also
+-- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
+-- to selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
@@ -1731,6 +1792,16 @@
 -- describing push descriptor limits that can be supported by an
 -- implementation
 --
+-- = Description
+--
+-- If the 'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV' 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
@@ -1882,14 +1953,15 @@
 -- 'Vulkan.Core10.Pipeline.PipelineVertexInputStateCreateInfo',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data GraphicsShaderGroupCreateInfoNV = GraphicsShaderGroupCreateInfoNV
-  { -- | @pStages@ is an array of size @stageCount@ structures of type
-    -- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo' describing the
-    -- set of the shader stages to be included in this shader group.
+  { -- | @pStages@ is a pointer to an array
+    -- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo' structures
+    -- specifying the set of the shader stages to be included in this shader
+    -- group.
     stages :: Vector (SomeStruct PipelineShaderStageCreateInfo)
-  , -- | @pVertexInputState@ is a pointer to an instance of the
+  , -- | @pVertexInputState@ is a pointer to a
     -- 'Vulkan.Core10.Pipeline.PipelineVertexInputStateCreateInfo' structure.
     vertexInputState :: Maybe (SomeStruct PipelineVertexInputStateCreateInfo)
-  , -- | @pTessellationState@ is a pointer to an instance of the
+  , -- | @pTessellationState@ is a pointer to a
     -- 'Vulkan.Core10.Pipeline.PipelineTessellationStateCreateInfo' structure,
     -- and is ignored if the shader group does not include a tessellation
     -- control shader stage and tessellation evaluation shader stage.
@@ -2021,14 +2093,14 @@
 -- 'GraphicsShaderGroupCreateInfoNV', 'Vulkan.Core10.Handles.Pipeline',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data GraphicsPipelineShaderGroupsCreateInfoNV = GraphicsPipelineShaderGroupsCreateInfoNV
-  { -- | @pGroups@ is an array of 'GraphicsShaderGroupCreateInfoNV' values
-    -- specifying which state of the original
+  { -- | @pGroups@ is a pointer to an array of 'GraphicsShaderGroupCreateInfoNV'
+    -- structures specifying which state of the original
     -- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' each shader group
     -- overrides.
     groups :: Vector GraphicsShaderGroupCreateInfoNV
-  , -- | @pPipelines@ is an array of graphics 'Vulkan.Core10.Handles.Pipeline',
-    -- which are referenced within the created pipeline, including all their
-    -- shader groups.
+  , -- | @pPipelines@ is a pointer to an array of graphics
+    -- 'Vulkan.Core10.Handles.Pipeline' structures which are referenced within
+    -- the created pipeline, including all their shader groups.
     pipelines :: Vector Pipeline
   }
   deriving (Typeable)
@@ -2463,11 +2535,11 @@
 --     @pushconstantSize@ and for each push constant range that overlaps
 --     that byte, @pushconstantShaderStageFlags@ /must/ include all stages
 --     in that push constant range’s
---     'Vulkan.Core10.PipelineLayout.PushConstantRange'::@pushconstantShaderStageFlags@
+--     'Vulkan.Core10.PipelineLayout.PushConstantRange'::@stageFlags@
 --
 -- -   #VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02984# If
 --     @tokenType@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV',
---     @indirectStateFlags@ /must/ not be ´0´
+--     @indirectStateFlags@ /must/ not be @0@
 --
 -- == Valid Usage (Implicit)
 --
@@ -2706,9 +2778,6 @@
 --     /must/ be a valid combination of
 --     'IndirectCommandsLayoutUsageFlagBitsNV' values
 --
--- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-flags-requiredbitmask#
---     @flags@ /must/ not be @0@
---
 -- -   #VUID-VkIndirectCommandsLayoutCreateInfoNV-pipelineBindPoint-parameter#
 --     @pipelineBindPoint@ /must/ be a valid
 --     'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' value
@@ -2776,7 +2845,6 @@
   pokeZeroCStruct p f = do
     poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV)
     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr IndirectCommandsLayoutUsageFlagsNV)) (zero)
     poke ((p `plusPtr` 20 :: Ptr PipelineBindPoint)) (zero)
     f
 
@@ -2972,8 +3040,9 @@
     -- 'Vulkan.Extensions.Handles.IndirectCommandsLayoutNV' that provides the
     -- command sequence to generate.
     indirectCommandsLayout :: IndirectCommandsLayoutNV
-  , -- | @pStreams@ provides an array of 'IndirectCommandsStreamNV' that provide
-    -- the input data for the tokens used in @indirectCommandsLayout@.
+  , -- | @pStreams@ is a pointer to an array of @streamCount@
+    -- 'IndirectCommandsStreamNV' structures providing the input data for the
+    -- tokens used in @indirectCommandsLayout@.
     streams :: Vector IndirectCommandsStreamNV
   , -- | @sequencesCount@ is the maximum number of sequences to reserve. If
     -- @sequencesCountBuffer@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', this
diff --git a/src/Vulkan/Extensions/VK_NV_device_generated_commands.hs-boot b/src/Vulkan/Extensions/VK_NV_device_generated_commands.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_device_generated_commands.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_device_generated_commands.hs-boot
@@ -304,7 +304,7 @@
 -- the command buffer reservation process, however as the memory
 -- requirements can be substantial, we want to give developers the ability
 -- to budget the memory themselves. By lowering the @maxSequencesCount@ the
--- memory consumption can be reduced. Furthermore re-use of the memory is
+-- memory consumption can be reduced. Furthermore reuse of the memory is
 -- possible, for example for doing explicit preprocessing and execution in
 -- a ping-pong fashion.
 --
@@ -334,7 +334,7 @@
 --
 -- 8) How do we allow re-using already “generated” @indirectCommands@?
 --
--- Expose a @preprocessBuffer@ to re-use implementation-dependencyFlags
+-- Expose a @preprocessBuffer@ to reuse implementation-dependencyFlags
 -- data. Set the @isPreprocessed@ to true in
 -- 'cmdExecuteGeneratedCommandsNV'.
 --
@@ -505,6 +505,15 @@
 -- -   Revision 1, 2020-02-20 (Christoph Kubisch)
 --
 --     -   Initial version
+--
+-- -   Revision 2, 2020-03-09 (Christoph Kubisch)
+--
+--     -   Remove VK_EXT_debug_report interactions
+--
+-- -   Revision 3, 2020-03-09 (Christoph Kubisch)
+--
+--     -   Fix naming VkPhysicalDeviceGenerated to
+--         VkPhysicalDeviceDeviceGenerated
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_NV_fragment_shader_barycentric.hs b/src/Vulkan/Extensions/VK_NV_fragment_shader_barycentric.hs
--- a/src/Vulkan/Extensions/VK_NV_fragment_shader_barycentric.hs
+++ b/src/Vulkan/Extensions/VK_NV_fragment_shader_barycentric.hs
@@ -215,8 +215,7 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceFragmentShaderBarycentricFeaturesNV'
--- structure describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
@@ -225,12 +224,15 @@
 -- for more information.
 --
 -- If the 'PhysicalDeviceFragmentShaderBarycentricFeaturesNV' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceFragmentShaderBarycentricFeaturesNV' /can/ also be
--- included in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to enable features.
+-- 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. 'PhysicalDeviceFragmentShaderBarycentricFeaturesNV' /can/
+-- also be used in the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
+-- features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_NV_fragment_shading_rate_enums.hs b/src/Vulkan/Extensions/VK_NV_fragment_shading_rate_enums.hs
--- a/src/Vulkan/Extensions/VK_NV_fragment_shading_rate_enums.hs
+++ b/src/Vulkan/Extensions/VK_NV_fragment_shading_rate_enums.hs
@@ -43,10 +43,10 @@
 --
 -- This extension builds on the fragment shading rate functionality
 -- provided by the VK_KHR_fragment_shading_rate extension, adding support
--- for \"supersample\" fragment shading rates that trigger multiple
--- fragment shader invocations per pixel as well as a \"no invocations\"
--- shading rate that discards any portions of a primitive that would use
--- that shading rate.
+-- for “supersample” fragment shading rates that trigger multiple fragment
+-- shader invocations per pixel as well as a “no invocations” shading rate
+-- that discards any portions of a primitive that would use that shading
+-- rate.
 --
 -- == New Commands
 --
@@ -93,9 +93,9 @@
 --
 -- 1.  Why was this extension created? How should it be named?
 --
---     RESOLVED: The primary goal of this extension was to expose support
---     for supersample and \"no invocations\" shading rates, which are
---     supported by the VK_NV_shading_rate_image extension but not by
+--     __RESOLVED__: The primary goal of this extension was to expose
+--     support for supersample and “no invocations” shading rates, which
+--     are supported by the VK_NV_shading_rate_image extension but not by
 --     VK_KHR_fragment_shading_rate. Because VK_KHR_fragment_shading_rate
 --     specifies the primitive shading rate using a fragment size in
 --     pixels, it lacks a good way to specify supersample rates. To deal
@@ -109,32 +109,33 @@
 --
 -- 2.  Is this a standalone extension?
 --
---     RESOLVED: No, this extension requires VK_KHR_fragment_shading_rate.
---     In order to use the features of this extension, applications must
---     enable the relevant features of KHR extension.
+--     __RESOLVED__: No, this extension requires
+--     VK_KHR_fragment_shading_rate. In order to use the features of this
+--     extension, applications must enable the relevant features of KHR
+--     extension.
 --
 -- 3.  How are the shading rate enums used, and how were the enum values
 --     assigned?
 --
---     RESOLVED: The shading rates supported by the enums in this extension
---     are accepted as pipeline, primitive, and attachment shading rates
---     and behave identically. For the shading rates also supported by the
---     KHR extension, the values assigned to the corresponding enums are
---     identical to the values already used for the primitive and
---     attachment shading rates in the KHR extension. For those enums, bits
---     0 and 1 specify the base two logarithm of the fragment height and
---     bits 2 and 3 specify the base two logarithm of the fragment width.
---     For the new shading rates added by this extension, we chose to use
---     11 through 14 (10 plus the base two logarithm of the invocation
---     count) for the supersample rates and 15 for the \"no invocations\"
---     rate. None of those values are supported as primitive or attachment
---     shading rates by the KHR extension.
+--     __RESOLVED__: The shading rates supported by the enums in this
+--     extension are accepted as pipeline, primitive, and attachment
+--     shading rates and behave identically. For the shading rates also
+--     supported by the KHR extension, the values assigned to the
+--     corresponding enums are identical to the values already used for the
+--     primitive and attachment shading rates in the KHR extension. For
+--     those enums, bits 0 and 1 specify the base two logarithm of the
+--     fragment height and bits 2 and 3 specify the base two logarithm of
+--     the fragment width. For the new shading rates added by this
+--     extension, we chose to use 11 through 14 (10 plus the base two
+--     logarithm of the invocation count) for the supersample rates and 15
+--     for the “no invocations” rate. None of those values are supported as
+--     primitive or attachment shading rates by the KHR extension.
 --
 -- 4.  Between this extension, VK_KHR_fragment_shading_rate, and
 --     VK_NV_shading_rate_image, there are three different ways to specify
 --     shading rate state in a pipeline. How should we handle this?
 --
---     RESOLVED: We don’t allow the concurrent use of
+--     __RESOLVED__: We don’t allow the concurrent use of
 --     VK_NV_shading_rate_image and VK_KHR_fragment_shading_rate; it is an
 --     error to enable shading rate features from both extensions. But we
 --     do allow applications to enable this extension together with
@@ -373,7 +374,7 @@
                                    -- recorded.
                                    CommandBuffer
                                 -> -- | @shadingRate@ specifies a 'FragmentShadingRateNV' enum indicating the
-                                   -- pipeline fragment shading rate for subsequent draw commands.
+                                   -- pipeline fragment shading rate for subsequent drawing commands.
                                    FragmentShadingRateNV
                                 -> -- | @combinerOps@ specifies a
                                    -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateCombinerOpKHR'
@@ -407,18 +408,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceFragmentShadingRateEnumsFeaturesNV'
--- structure describe the following features:
+-- This structure describes the following features:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceFragmentShadingRateEnumsFeaturesNV' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether each feature is supported.
--- 'PhysicalDeviceFragmentShadingRateEnumsFeaturesNV' /can/ also be used in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable
--- these features.
+-- 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. 'PhysicalDeviceFragmentShadingRateEnumsFeaturesNV' /can/ also
+-- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
+-- to selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
@@ -492,20 +494,19 @@
 -- describing fragment shading rate limits that can be supported by an
 -- implementation
 --
--- = Members
---
--- The members of the 'PhysicalDeviceFragmentShadingRateEnumsPropertiesNV'
--- structure describe the following implementation-dependent properties
--- related to
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-primsrast-fragment-shading-rate fragment shading rates>:
---
 -- = Description
 --
 -- If the 'PhysicalDeviceFragmentShadingRateEnumsPropertiesNV' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- 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.
 --
+-- These properties are related to
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-primsrast-fragment-shading-rate fragment shading rates>.
+--
 -- == Valid Usage (Implicit)
 --
 -- = See Also
@@ -514,9 +515,11 @@
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceFragmentShadingRateEnumsPropertiesNV = PhysicalDeviceFragmentShadingRateEnumsPropertiesNV
   { -- | #limits-maxFragmentShadingRateInvocationCount#
-    -- @maxFragmentShadingRateInvocationCount@ indicates the maximum number of
-    -- fragment shader invocations per fragment supported in pipeline,
-    -- primitive, and attachment fragment shading rates.
+    -- @maxFragmentShadingRateInvocationCount@ is a
+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
+    -- indicating the maximum number of fragment shader invocations per
+    -- fragment supported in pipeline, primitive, and attachment fragment
+    -- shading rates.
     --
     -- #VUID-VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV-maxFragmentShadingRateInvocationCount-parameter#
     -- @maxFragmentShadingRateInvocationCount@ /must/ be a valid
diff --git a/src/Vulkan/Extensions/VK_NV_fragment_shading_rate_enums.hs-boot b/src/Vulkan/Extensions/VK_NV_fragment_shading_rate_enums.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_fragment_shading_rate_enums.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_fragment_shading_rate_enums.hs-boot
@@ -43,10 +43,10 @@
 --
 -- This extension builds on the fragment shading rate functionality
 -- provided by the VK_KHR_fragment_shading_rate extension, adding support
--- for \"supersample\" fragment shading rates that trigger multiple
--- fragment shader invocations per pixel as well as a \"no invocations\"
--- shading rate that discards any portions of a primitive that would use
--- that shading rate.
+-- for “supersample” fragment shading rates that trigger multiple fragment
+-- shader invocations per pixel as well as a “no invocations” shading rate
+-- that discards any portions of a primitive that would use that shading
+-- rate.
 --
 -- == New Commands
 --
@@ -93,9 +93,9 @@
 --
 -- 1.  Why was this extension created? How should it be named?
 --
---     RESOLVED: The primary goal of this extension was to expose support
---     for supersample and \"no invocations\" shading rates, which are
---     supported by the VK_NV_shading_rate_image extension but not by
+--     __RESOLVED__: The primary goal of this extension was to expose
+--     support for supersample and “no invocations” shading rates, which
+--     are supported by the VK_NV_shading_rate_image extension but not by
 --     VK_KHR_fragment_shading_rate. Because VK_KHR_fragment_shading_rate
 --     specifies the primitive shading rate using a fragment size in
 --     pixels, it lacks a good way to specify supersample rates. To deal
@@ -109,32 +109,33 @@
 --
 -- 2.  Is this a standalone extension?
 --
---     RESOLVED: No, this extension requires VK_KHR_fragment_shading_rate.
---     In order to use the features of this extension, applications must
---     enable the relevant features of KHR extension.
+--     __RESOLVED__: No, this extension requires
+--     VK_KHR_fragment_shading_rate. In order to use the features of this
+--     extension, applications must enable the relevant features of KHR
+--     extension.
 --
 -- 3.  How are the shading rate enums used, and how were the enum values
 --     assigned?
 --
---     RESOLVED: The shading rates supported by the enums in this extension
---     are accepted as pipeline, primitive, and attachment shading rates
---     and behave identically. For the shading rates also supported by the
---     KHR extension, the values assigned to the corresponding enums are
---     identical to the values already used for the primitive and
---     attachment shading rates in the KHR extension. For those enums, bits
---     0 and 1 specify the base two logarithm of the fragment height and
---     bits 2 and 3 specify the base two logarithm of the fragment width.
---     For the new shading rates added by this extension, we chose to use
---     11 through 14 (10 plus the base two logarithm of the invocation
---     count) for the supersample rates and 15 for the \"no invocations\"
---     rate. None of those values are supported as primitive or attachment
---     shading rates by the KHR extension.
+--     __RESOLVED__: The shading rates supported by the enums in this
+--     extension are accepted as pipeline, primitive, and attachment
+--     shading rates and behave identically. For the shading rates also
+--     supported by the KHR extension, the values assigned to the
+--     corresponding enums are identical to the values already used for the
+--     primitive and attachment shading rates in the KHR extension. For
+--     those enums, bits 0 and 1 specify the base two logarithm of the
+--     fragment height and bits 2 and 3 specify the base two logarithm of
+--     the fragment width. For the new shading rates added by this
+--     extension, we chose to use 11 through 14 (10 plus the base two
+--     logarithm of the invocation count) for the supersample rates and 15
+--     for the “no invocations” rate. None of those values are supported as
+--     primitive or attachment shading rates by the KHR extension.
 --
 -- 4.  Between this extension, VK_KHR_fragment_shading_rate, and
 --     VK_NV_shading_rate_image, there are three different ways to specify
 --     shading rate state in a pipeline. How should we handle this?
 --
---     RESOLVED: We don’t allow the concurrent use of
+--     __RESOLVED__: We don’t allow the concurrent use of
 --     VK_NV_shading_rate_image and VK_KHR_fragment_shading_rate; it is an
 --     error to enable shading rate features from both extensions. But we
 --     do allow applications to enable this extension together with
diff --git a/src/Vulkan/Extensions/VK_NV_inherited_viewport_scissor.hs b/src/Vulkan/Extensions/VK_NV_inherited_viewport_scissor.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_NV_inherited_viewport_scissor.hs
@@ -0,0 +1,457 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_NV_inherited_viewport_scissor - device extension
+--
+-- == VK_NV_inherited_viewport_scissor
+--
+-- [__Name String__]
+--     @VK_NV_inherited_viewport_scissor@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     279
+--
+-- [__Revision__]
+--     1
+--
+-- [__Extension and Version Dependencies__]
+--
+--     -   Requires Vulkan 1.0
+--
+-- [__Contact__]
+--
+--     -   David Zhao Akeley
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_inherited_viewport_scissor:%20&body=@akeley98%20 >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2021-02-04
+--
+-- [__Contributors__]
+--
+--     -   David Zhao Akeley, NVIDIA
+--
+--     -   Jeff Bolz, NVIDIA
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Christoph Kubisch, NVIDIA
+--
+-- == Description
+--
+-- This extension adds the ability for a secondary command buffer to
+-- inherit the dynamic viewport and scissor state from a primary command
+-- buffer, or a previous secondary command buffer executed within the same
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdExecuteCommands' call. It
+-- addresses a frequent scenario in applications that deal with window
+-- resizing and want to improve utilization of re-usable secondary command
+-- buffers. The functionality is provided through
+-- 'CommandBufferInheritanceViewportScissorInfoNV'. Viewport inheritance is
+-- effectively limited to the 2D rectangle; secondary command buffers must
+-- re-specify the inherited depth range values.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo':
+--
+--     -   'CommandBufferInheritanceViewportScissorInfoNV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceInheritedViewportScissorFeaturesNV'
+--
+-- == New Enum Constants
+--
+-- -   'NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME'
+--
+-- -   'NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV'
+--
+-- == Issues
+--
+-- (1) Why are viewport depth values configured in the
+-- 'CommandBufferInheritanceViewportScissorInfoNV' struct, rather than by a
+-- @vkCmd…​@ function?
+--
+-- __DISCUSSION__:
+--
+-- We considered both adding a new @vkCmdSetViewportDepthNV@ function, and
+-- modifying 'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' to ignore
+-- the @x@, @y@, @width@, and @height@ values when called with a secondary
+-- command buffer that activates this extension.
+--
+-- The primary design considerations for this extension are debuggability
+-- and easy integration into existing applications. The main issue with
+-- adding a new @vkCmdSetViewportDepthNV@ function is reducing
+-- ease-of-integration. A new function pointer will have to be loaded, but
+-- more importantly, a new function would require changes to be supported
+-- in graphics debuggers; this would delay widespread adoption of the
+-- extension.
+--
+-- The proposal to modify
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' would avoid these
+-- issues. However, we expect that the intent of applications using this
+-- extension is to have the viewport values used for drawing exactly match
+-- the inherited values; thus, it would be better for debuggability if no
+-- function for modifying the viewport depth alone is provided. By
+-- specifying viewport depth values when starting secondary command buffer
+-- recording, and requiring the specified depth values to match the
+-- inherited depth values, we allow for validation layers that flag depth
+-- changes as errors.
+--
+-- This design also better matches the hardware model. In fact, there is no
+-- need to re-execute a depth-setting command. The graphics device retains
+-- the viewport depth state; it’s the CPU-side state of
+-- 'Vulkan.Core10.Handles.CommandBuffer' that must be re-initialized.
+--
+-- (2) Why are viewport depth values specified as a partial
+-- 'Vulkan.Core10.Pipeline.Viewport' struct, rather than a leaner
+-- depth-only struct?
+--
+-- __DISCUSSION__:
+--
+-- We considered adding a new @VkViewportDepthNV@ struct containing only
+-- @minDepth@ and @maxDepth@. However, as application developers would need
+-- to maintain both a @VK_NV_inherited_viewport_scissor@ code path and a
+-- fallback code path (at least in the short term), we ultimately chose to
+-- continue using the existing 'Vulkan.Core10.Pipeline.Viewport' structure.
+-- Doing so would allow application developers to reuse the same
+-- 'Vulkan.Core10.Pipeline.Viewport' array for both code paths, rather than
+-- constructing separate @VkViewportDepthNV@ and
+-- 'Vulkan.Core10.Pipeline.Viewport' arrays for each code path.
+--
+-- == Version History
+--
+-- -   Revision 1, 2020-02-04 (David Zhao Akeley)
+--
+--     -   Internal revisions
+--
+-- = See Also
+--
+-- 'CommandBufferInheritanceViewportScissorInfoNV',
+-- 'PhysicalDeviceInheritedViewportScissorFeaturesNV'
+--
+-- = Document Notes
+--
+-- For more information, see the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_inherited_viewport_scissor 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_inherited_viewport_scissor  ( PhysicalDeviceInheritedViewportScissorFeaturesNV(..)
+                                                           , CommandBufferInheritanceViewportScissorInfoNV(..)
+                                                           , NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION
+                                                           , pattern NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION
+                                                           , NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME
+                                                           , pattern NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME
+                                                           ) where
+
+import Foreign.Marshal.Alloc (allocaBytesAligned)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import 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 Foreign.Ptr (Ptr)
+import Data.Word (Word32)
+import Data.Kind (Type)
+import Control.Monad.Trans.Cont (ContT(..))
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Pipeline (Viewport)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV))
+-- | VkPhysicalDeviceInheritedViewportScissorFeaturesNV - Structure
+-- describing the viewport scissor inheritance behavior for an
+-- implementation
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceInheritedViewportScissorFeaturesNV' 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. 'PhysicalDeviceInheritedViewportScissorFeaturesNV' /can/ also
+-- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
+-- to selectively enable these features.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceInheritedViewportScissorFeaturesNV = PhysicalDeviceInheritedViewportScissorFeaturesNV
+  { -- | #features-inheritedViewportScissor2D# @inheritedViewportScissor2D@
+    -- indicates whether secondary command buffers can inherit most of the
+    -- dynamic state affected by
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT',
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT',
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT',
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' or
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR', from a primary
+    -- command buffer.
+    inheritedViewportScissor2D :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceInheritedViewportScissorFeaturesNV)
+#endif
+deriving instance Show PhysicalDeviceInheritedViewportScissorFeaturesNV
+
+instance ToCStruct PhysicalDeviceInheritedViewportScissorFeaturesNV where
+  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceInheritedViewportScissorFeaturesNV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (inheritedViewportScissor2D))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceInheritedViewportScissorFeaturesNV where
+  peekCStruct p = do
+    inheritedViewportScissor2D <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceInheritedViewportScissorFeaturesNV
+             (bool32ToBool inheritedViewportScissor2D)
+
+instance Storable PhysicalDeviceInheritedViewportScissorFeaturesNV where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceInheritedViewportScissorFeaturesNV where
+  zero = PhysicalDeviceInheritedViewportScissorFeaturesNV
+           zero
+
+
+-- | VkCommandBufferInheritanceViewportScissorInfoNV - Structure specifying
+-- command buffer inheritance information
+--
+-- = Description
+--
+-- If the @pNext@ chain of
+-- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' includes a
+-- 'CommandBufferInheritanceViewportScissorInfoNV' structure, then that
+-- structure controls whether a command buffer /can/ inherit the following
+-- state from other command buffers:
+--
+-- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR'
+--
+-- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--
+-- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--
+-- as well as the following state, with restrictions on inherited depth
+-- values and viewport count:
+--
+-- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT'
+--
+-- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--
+-- If @viewportScissor2D@ is 'Vulkan.Core10.FundamentalTypes.FALSE', then
+-- the command buffer does not inherit the listed dynamic state, and
+-- /should/ set this state itself. If this structure is not present, the
+-- behavior is as if @viewportScissor2D@ is
+-- 'Vulkan.Core10.FundamentalTypes.FALSE'.
+--
+-- If @viewportScissor2D@ is 'Vulkan.Core10.FundamentalTypes.TRUE', then
+-- the listed dynamic state is inherited, and the command buffer /must/ not
+-- set this state, except that the viewport and scissor count /may/ be set
+-- by binding a graphics pipeline that does not specify this state as
+-- dynamic.
+--
+-- Note
+--
+-- Due to this restriction, applications /should/ ensure either all or none
+-- of the graphics pipelines bound in this secondary command buffer use
+-- dynamic viewport\/scissor counts.
+--
+-- When the command buffer is executed as part of a the execution of a
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdExecuteCommands' command, the
+-- inherited state (if enabled) is determined by the following procedure,
+-- performed separately for each dynamic state, and separately for each
+-- value for dynamic state that consists of multiple values (e.g. multiple
+-- viewports).
+--
+-- -   With \(i\) being the index of the executed command buffer in the
+--     @pCommandBuffers@ array of
+--     'Vulkan.Core10.CommandBufferBuilding.cmdExecuteCommands', if
+--     \(i > 0\) and any secondary command buffer from index \(0\) to
+--     \(i-1\) modifies the state, the inherited state is provisionally set
+--     to the final value set by the last such secondary command buffer.
+--     Binding a graphics pipeline that defines the state statically is
+--     equivalent to setting the state to an undefined value.
+--
+-- -   Otherwise, the tentatative inherited state is that of the primary
+--     command buffer at the point the
+--     'Vulkan.Core10.CommandBufferBuilding.cmdExecuteCommands' command was
+--     recorded; if the state is undefined, then so is the provisional
+--     inherited state.
+--
+-- -   If the provisional inherited state is an undefined value, then the
+--     state is not inherited.
+--
+-- -   If the provisional inherited state is a viewport, with \(n\) being
+--     its viewport index, then if \(n \ge\) @viewportDepthCount@, or if
+--     either 'Vulkan.Core10.Pipeline.Viewport'::@minDepth@ or
+--     'Vulkan.Core10.Pipeline.Viewport'::@maxDepth@ are not equal to the
+--     respective values of the \(n^{th}\) element of @pViewportDepths@,
+--     then the state is not inherited.
+--
+-- -   If the provisional inherited state passes both checks, then it
+--     becomes the actual inherited state.
+--
+-- Note
+--
+-- There is no support for inheriting dynamic state from a secondary
+-- command buffer executed as part of a different
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdExecuteCommands' command.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkCommandBufferInheritanceViewportScissorInfoNV-viewportScissor2D-04782#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedViewportScissor2D inherited viewport scissor>
+--     feature is not enabled, @viewportScissor2D@ /must/ be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-VkCommandBufferInheritanceViewportScissorInfoNV-viewportScissor2D-04783#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>
+--     feature is not enabled and @viewportScissor2D@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE', then @viewportDepthCount@
+--     /must/ be @1@
+--
+-- -   #VUID-VkCommandBufferInheritanceViewportScissorInfoNV-viewportScissor2D-04784#
+--     If @viewportScissor2D@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @viewportDepthCount@ /must/ be greater than @0@
+--
+-- -   #VUID-VkCommandBufferInheritanceViewportScissorInfoNV-viewportScissor2D-04785#
+--     If @viewportScissor2D@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then @pViewportDepths@ /must/ be a valid pointer to an array of
+--     @viewportDepthCount@ valid 'Vulkan.Core10.Pipeline.Viewport'
+--     structures, except any requirements on @x@, @y@, @width@, and
+--     @height@ do not apply.
+--
+-- -   #VUID-VkCommandBufferInheritanceViewportScissorInfoNV-viewportScissor2D-04786#
+--     If @viewportScissor2D@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
+--     then the command buffer /must/ be recorded with the
+--     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkCommandBufferInheritanceViewportScissorInfoNV-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV'
+--
+-- = See Also
+--
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'Vulkan.Core10.Pipeline.Viewport'
+data CommandBufferInheritanceViewportScissorInfoNV = CommandBufferInheritanceViewportScissorInfoNV
+  { -- | @viewportScissor2D@ specifies whether the listed dynamic state is
+    -- inherited.
+    viewportScissor2D :: Bool
+  , -- | @viewportDepthCount@ specifies the maximum number of viewports to
+    -- inherit. When @viewportScissor2D@ is
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE', the behavior is as if this value
+    -- is zero.
+    viewportDepthCount :: Word32
+  , -- | @pViewportDepths@ is a pointer to a 'Vulkan.Core10.Pipeline.Viewport'
+    -- structure specifying the expected depth range for each inherited
+    -- viewport.
+    viewportDepths :: Viewport
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CommandBufferInheritanceViewportScissorInfoNV)
+#endif
+deriving instance Show CommandBufferInheritanceViewportScissorInfoNV
+
+instance ToCStruct CommandBufferInheritanceViewportScissorInfoNV where
+  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CommandBufferInheritanceViewportScissorInfoNV{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (viewportScissor2D))
+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (viewportDepthCount)
+    pViewportDepths'' <- ContT $ withCStruct (viewportDepths)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Viewport))) pViewportDepths''
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
+    pViewportDepths'' <- ContT $ withCStruct (zero)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Viewport))) pViewportDepths''
+    lift $ f
+
+instance FromCStruct CommandBufferInheritanceViewportScissorInfoNV where
+  peekCStruct p = do
+    viewportScissor2D <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    viewportDepthCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    pViewportDepths <- peekCStruct @Viewport =<< peek ((p `plusPtr` 24 :: Ptr (Ptr Viewport)))
+    pure $ CommandBufferInheritanceViewportScissorInfoNV
+             (bool32ToBool viewportScissor2D) viewportDepthCount pViewportDepths
+
+instance Zero CommandBufferInheritanceViewportScissorInfoNV where
+  zero = CommandBufferInheritanceViewportScissorInfoNV
+           zero
+           zero
+           zero
+
+
+type NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION"
+pattern NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION :: forall a . Integral a => a
+pattern NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION = 1
+
+
+type NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME = "VK_NV_inherited_viewport_scissor"
+
+-- No documentation found for TopLevel "VK_NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME"
+pattern NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME = "VK_NV_inherited_viewport_scissor"
+
diff --git a/src/Vulkan/Extensions/VK_NV_inherited_viewport_scissor.hs-boot b/src/Vulkan/Extensions/VK_NV_inherited_viewport_scissor.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_NV_inherited_viewport_scissor.hs-boot
@@ -0,0 +1,175 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_NV_inherited_viewport_scissor - device extension
+--
+-- == VK_NV_inherited_viewport_scissor
+--
+-- [__Name String__]
+--     @VK_NV_inherited_viewport_scissor@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     279
+--
+-- [__Revision__]
+--     1
+--
+-- [__Extension and Version Dependencies__]
+--
+--     -   Requires Vulkan 1.0
+--
+-- [__Contact__]
+--
+--     -   David Zhao Akeley
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_inherited_viewport_scissor:%20&body=@akeley98%20 >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2021-02-04
+--
+-- [__Contributors__]
+--
+--     -   David Zhao Akeley, NVIDIA
+--
+--     -   Jeff Bolz, NVIDIA
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Christoph Kubisch, NVIDIA
+--
+-- == Description
+--
+-- This extension adds the ability for a secondary command buffer to
+-- inherit the dynamic viewport and scissor state from a primary command
+-- buffer, or a previous secondary command buffer executed within the same
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdExecuteCommands' call. It
+-- addresses a frequent scenario in applications that deal with window
+-- resizing and want to improve utilization of re-usable secondary command
+-- buffers. The functionality is provided through
+-- 'CommandBufferInheritanceViewportScissorInfoNV'. Viewport inheritance is
+-- effectively limited to the 2D rectangle; secondary command buffers must
+-- re-specify the inherited depth range values.
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo':
+--
+--     -   'CommandBufferInheritanceViewportScissorInfoNV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceInheritedViewportScissorFeaturesNV'
+--
+-- == New Enum Constants
+--
+-- -   'NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME'
+--
+-- -   'NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV'
+--
+-- == Issues
+--
+-- (1) Why are viewport depth values configured in the
+-- 'CommandBufferInheritanceViewportScissorInfoNV' struct, rather than by a
+-- @vkCmd…​@ function?
+--
+-- __DISCUSSION__:
+--
+-- We considered both adding a new @vkCmdSetViewportDepthNV@ function, and
+-- modifying 'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' to ignore
+-- the @x@, @y@, @width@, and @height@ values when called with a secondary
+-- command buffer that activates this extension.
+--
+-- The primary design considerations for this extension are debuggability
+-- and easy integration into existing applications. The main issue with
+-- adding a new @vkCmdSetViewportDepthNV@ function is reducing
+-- ease-of-integration. A new function pointer will have to be loaded, but
+-- more importantly, a new function would require changes to be supported
+-- in graphics debuggers; this would delay widespread adoption of the
+-- extension.
+--
+-- The proposal to modify
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' would avoid these
+-- issues. However, we expect that the intent of applications using this
+-- extension is to have the viewport values used for drawing exactly match
+-- the inherited values; thus, it would be better for debuggability if no
+-- function for modifying the viewport depth alone is provided. By
+-- specifying viewport depth values when starting secondary command buffer
+-- recording, and requiring the specified depth values to match the
+-- inherited depth values, we allow for validation layers that flag depth
+-- changes as errors.
+--
+-- This design also better matches the hardware model. In fact, there is no
+-- need to re-execute a depth-setting command. The graphics device retains
+-- the viewport depth state; it’s the CPU-side state of
+-- 'Vulkan.Core10.Handles.CommandBuffer' that must be re-initialized.
+--
+-- (2) Why are viewport depth values specified as a partial
+-- 'Vulkan.Core10.Pipeline.Viewport' struct, rather than a leaner
+-- depth-only struct?
+--
+-- __DISCUSSION__:
+--
+-- We considered adding a new @VkViewportDepthNV@ struct containing only
+-- @minDepth@ and @maxDepth@. However, as application developers would need
+-- to maintain both a @VK_NV_inherited_viewport_scissor@ code path and a
+-- fallback code path (at least in the short term), we ultimately chose to
+-- continue using the existing 'Vulkan.Core10.Pipeline.Viewport' structure.
+-- Doing so would allow application developers to reuse the same
+-- 'Vulkan.Core10.Pipeline.Viewport' array for both code paths, rather than
+-- constructing separate @VkViewportDepthNV@ and
+-- 'Vulkan.Core10.Pipeline.Viewport' arrays for each code path.
+--
+-- == Version History
+--
+-- -   Revision 1, 2020-02-04 (David Zhao Akeley)
+--
+--     -   Internal revisions
+--
+-- = See Also
+--
+-- 'CommandBufferInheritanceViewportScissorInfoNV',
+-- 'PhysicalDeviceInheritedViewportScissorFeaturesNV'
+--
+-- = Document Notes
+--
+-- For more information, see the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_inherited_viewport_scissor 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_inherited_viewport_scissor  ( CommandBufferInheritanceViewportScissorInfoNV
+                                                           , PhysicalDeviceInheritedViewportScissorFeaturesNV
+                                                           ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data CommandBufferInheritanceViewportScissorInfoNV
+
+instance ToCStruct CommandBufferInheritanceViewportScissorInfoNV
+instance Show CommandBufferInheritanceViewportScissorInfoNV
+
+instance FromCStruct CommandBufferInheritanceViewportScissorInfoNV
+
+
+data PhysicalDeviceInheritedViewportScissorFeaturesNV
+
+instance ToCStruct PhysicalDeviceInheritedViewportScissorFeaturesNV
+instance Show PhysicalDeviceInheritedViewportScissorFeaturesNV
+
+instance FromCStruct PhysicalDeviceInheritedViewportScissorFeaturesNV
+
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
@@ -180,7 +180,7 @@
 --
 -- 1.  How to name this extension?
 --
---     RESOLVED: VK_NV_mesh_shader
+--     __RESOLVED__: VK_NV_mesh_shader
 --
 --     Other options considered:
 --
@@ -194,25 +194,25 @@
 --
 -- 2.  Do we need a new VkPrimitiveTopology?
 --
---     RESOLVED: NO, we skip the InputAssembler stage
+--     __RESOLVED__: No. We skip the InputAssembler stage.
 --
 -- 3.  Should we allow Instancing?
 --
---     RESOLVED: NO, there is no fixed function input, other than the IDs.
---     However, allow offsetting with a \"first\" value.
+--     __RESOLVED__: No. There is no fixed function input, other than the
+--     IDs. However, allow offsetting with a “first” value.
 --
 -- 4.  Should we use existing vkCmdDraw or introduce new functions?
 --
---     RESOLVED: Introduce new functions.
+--     __RESOLVED__: Introduce new functions.
 --
---     New functions make it easier to separate from \"programmable
---     primitive shading\" chapter, less \"dual use\" language about
---     existing functions having alternative behavior. The text around the
---     existing \"draws\" is heavily based around emitting vertices.
+--     New functions make it easier to separate from “programmable
+--     primitive shading” chapter, less “dual use” language about existing
+--     functions having alternative behavior. The text around the existing
+--     “draws” is heavily based around emitting vertices.
 --
 -- 5.  If new functions, how to name?
 --
---     RESOLVED: CmdDrawMeshTasks*
+--     __RESOLVED__: CmdDrawMeshTasks*
 --
 --     Other options considered:
 --
@@ -225,13 +225,13 @@
 -- 6.  Should VK_SHADER_STAGE_ALL_GRAPHICS be updated to include the new
 --     stages?
 --
---     RESOLVED: No. If an application were to be recompiled with headers
---     that include additional shader stage bits in
+--     __RESOLVED__: No. If an application were to be recompiled with
+--     headers that include additional shader stage bits in
 --     VK_SHADER_STAGE_ALL_GRAPHICS, then the previously valid application
 --     would no longer be valid on implementations that don’t support mesh
 --     or task shaders. This means the change would not be backwards
 --     compatible. It’s too bad VkShaderStageFlagBits doesn’t have a
---     dedicated \"all supported graphics stages\" bit like
+--     dedicated “all supported graphics stages” bit like
 --     VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, which would have avoided this
 --     problem.
 --
@@ -428,9 +428,9 @@
 -- -   #VUID-vkCmdDrawMeshTasksNV-commandBuffer-02701# If the
 --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
 --     point used by this command requires any dynamic state, that state
---     /must/ have been set for @commandBuffer@, and done so after any
---     previously bound pipeline with the corresponding state not specified
---     as dynamic
+--     /must/ have been set or inherited for @commandBuffer@, and done so
+--     after any previously bound pipeline with the corresponding state not
+--     specified as dynamic
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-None-02859# There /must/ not have been
 --     any calls to dynamic state setting commands for any state not
@@ -597,7 +597,7 @@
 --     dynamic state enabled, then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
@@ -611,7 +611,7 @@
 --     dynamic state enabled, then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @scissorCount@ parameter of
+--     drawing command, and the @scissorCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
@@ -627,7 +627,7 @@
 --     and
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ match the @scissorCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
@@ -710,7 +710,7 @@
 --     dynamic state enabled then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @primitiveTopology@ parameter of
+--     drawing command, and the @primitiveTopology@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
 --     /must/ be of the same
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
@@ -718,6 +718,47 @@
 --     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
 --     state
 --
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-04875# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-04876# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-04877# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-logicOp-04878# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command and the @logicOp@ /must/ be a valid
+--     'Vulkan.Core10.Enums.LogicOp.LogicOp' value
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-04879# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
 -- -   #VUID-vkCmdDrawMeshTasksNV-primitiveFragmentShadingRateWithMultipleViewports-04552#
 --     If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
@@ -729,7 +770,7 @@
 --     then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ be @1@
 --
@@ -750,6 +791,16 @@
 --     /must/ be the same as the current subpass color and\/or
 --     depth\/stencil attachments
 --
+-- -   #VUID-vkCmdDrawMeshTasksNV-pStrides-04884# If the bound graphics
+--     pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @pStrides@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
+--     /must/ not be @NULL@
+--
 -- -   #VUID-vkCmdDrawMeshTasksNV-taskCount-02119# @taskCount@ /must/ be
 --     less than or equal to
 --     'PhysicalDeviceMeshShaderPropertiesNV'::@maxDrawMeshTasksCount@
@@ -933,9 +984,9 @@
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02701# If the
 --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
 --     point used by this command requires any dynamic state, that state
---     /must/ have been set for @commandBuffer@, and done so after any
---     previously bound pipeline with the corresponding state not specified
---     as dynamic
+--     /must/ have been set or inherited for @commandBuffer@, and done so
+--     after any previously bound pipeline with the corresponding state not
+--     specified as dynamic
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-02859# There /must/ not have
 --     been any calls to dynamic state setting commands for any state not
@@ -1105,7 +1156,7 @@
 --     dynamic state enabled, then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
@@ -1119,7 +1170,7 @@
 --     dynamic state enabled, then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @scissorCount@ parameter of
+--     drawing command, and the @scissorCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
@@ -1135,7 +1186,7 @@
 --     and
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ match the @scissorCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
@@ -1218,7 +1269,7 @@
 --     dynamic state enabled then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @primitiveTopology@ parameter of
+--     drawing command, and the @primitiveTopology@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
 --     /must/ be of the same
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
@@ -1226,6 +1277,47 @@
 --     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
 --     state
 --
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-04875# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-04876# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-04877# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-logicOp-04878# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command and the @logicOp@ /must/ be a valid
+--     'Vulkan.Core10.Enums.LogicOp.LogicOp' value
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-04879# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-primitiveFragmentShadingRateWithMultipleViewports-04552#
 --     If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
@@ -1237,7 +1329,7 @@
 --     then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ be @1@
 --
@@ -1259,6 +1351,16 @@
 --     /must/ be the same as the current subpass color and\/or
 --     depth\/stencil attachments
 --
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pStrides-04884# If the bound
+--     graphics pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @pStrides@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
+--     /must/ not be @NULL@
+--
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02708# If @buffer@ is
 --     non-sparse then it /must/ be bound completely and contiguously to a
 --     single 'Vulkan.Core10.Handles.DeviceMemory' object
@@ -1486,9 +1588,9 @@
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02701# If the
 --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
 --     point used by this command requires any dynamic state, that state
---     /must/ have been set for @commandBuffer@, and done so after any
---     previously bound pipeline with the corresponding state not specified
---     as dynamic
+--     /must/ have been set or inherited for @commandBuffer@, and done so
+--     after any previously bound pipeline with the corresponding state not
+--     specified as dynamic
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02859# There /must/ not
 --     have been any calls to dynamic state setting commands for any state
@@ -1658,7 +1760,7 @@
 --     dynamic state enabled, then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
@@ -1672,7 +1774,7 @@
 --     dynamic state enabled, then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @scissorCount@ parameter of
+--     drawing command, and the @scissorCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
@@ -1688,7 +1790,7 @@
 --     and
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ match the @scissorCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
@@ -1771,7 +1873,7 @@
 --     dynamic state enabled then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @primitiveTopology@ parameter of
+--     drawing command, and the @primitiveTopology@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
 --     /must/ be of the same
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
@@ -1779,6 +1881,47 @@
 --     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
 --     state
 --
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04875# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04876# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04877# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-logicOp-04878# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command and the @logicOp@ /must/ be a valid
+--     'Vulkan.Core10.Enums.LogicOp.LogicOp' value
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04879# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-primitiveFragmentShadingRateWithMultipleViewports-04552#
 --     If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
@@ -1790,7 +1933,7 @@
 --     then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ have been called in the current command buffer prior to this
---     draw command, and the @viewportCount@ parameter of
+--     drawing command, and the @viewportCount@ parameter of
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 --     /must/ be @1@
 --
@@ -1812,6 +1955,16 @@
 --     /must/ be the same as the current subpass color and\/or
 --     depth\/stencil attachments
 --
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pStrides-04884# If the bound
+--     graphics pipeline was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @pStrides@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
+--     /must/ not be @NULL@
+--
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02708# If @buffer@ is
 --     non-sparse then it /must/ be bound completely and contiguously to a
 --     single 'Vulkan.Core10.Handles.DeviceMemory' object
@@ -1956,14 +2109,21 @@
 -- | VkPhysicalDeviceMeshShaderFeaturesNV - Structure describing mesh shading
 -- features that can be supported by an implementation
 --
+-- = Members
+--
+-- This structure describes the following features:
+--
 -- = Description
 --
 -- If the 'PhysicalDeviceMeshShaderFeaturesNV' structure is included in the
--- @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with a value indicating whether the feature is supported.
--- 'PhysicalDeviceMeshShaderFeaturesNV' /can/ also be included in @pNext@
--- chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable the features.
+-- @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. 'PhysicalDeviceMeshShaderFeaturesNV' /can/ also be used in
+-- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
@@ -2024,17 +2184,15 @@
 -- | VkPhysicalDeviceMeshShaderPropertiesNV - Structure describing mesh
 -- shading properties
 --
--- = Members
---
--- The members of the 'PhysicalDeviceMeshShaderPropertiesNV' structure
--- describe the following implementation-dependent limits:
---
 -- = Description
 --
 -- If the 'PhysicalDeviceMeshShaderPropertiesNV' structure is included in
--- the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- 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)
 --
diff --git a/src/Vulkan/Extensions/VK_NV_mesh_shader.hs-boot b/src/Vulkan/Extensions/VK_NV_mesh_shader.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_mesh_shader.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_mesh_shader.hs-boot
@@ -180,7 +180,7 @@
 --
 -- 1.  How to name this extension?
 --
---     RESOLVED: VK_NV_mesh_shader
+--     __RESOLVED__: VK_NV_mesh_shader
 --
 --     Other options considered:
 --
@@ -194,25 +194,25 @@
 --
 -- 2.  Do we need a new VkPrimitiveTopology?
 --
---     RESOLVED: NO, we skip the InputAssembler stage
+--     __RESOLVED__: No. We skip the InputAssembler stage.
 --
 -- 3.  Should we allow Instancing?
 --
---     RESOLVED: NO, there is no fixed function input, other than the IDs.
---     However, allow offsetting with a \"first\" value.
+--     __RESOLVED__: No. There is no fixed function input, other than the
+--     IDs. However, allow offsetting with a “first” value.
 --
 -- 4.  Should we use existing vkCmdDraw or introduce new functions?
 --
---     RESOLVED: Introduce new functions.
+--     __RESOLVED__: Introduce new functions.
 --
---     New functions make it easier to separate from \"programmable
---     primitive shading\" chapter, less \"dual use\" language about
---     existing functions having alternative behavior. The text around the
---     existing \"draws\" is heavily based around emitting vertices.
+--     New functions make it easier to separate from “programmable
+--     primitive shading” chapter, less “dual use” language about existing
+--     functions having alternative behavior. The text around the existing
+--     “draws” is heavily based around emitting vertices.
 --
 -- 5.  If new functions, how to name?
 --
---     RESOLVED: CmdDrawMeshTasks*
+--     __RESOLVED__: CmdDrawMeshTasks*
 --
 --     Other options considered:
 --
@@ -225,13 +225,13 @@
 -- 6.  Should VK_SHADER_STAGE_ALL_GRAPHICS be updated to include the new
 --     stages?
 --
---     RESOLVED: No. If an application were to be recompiled with headers
---     that include additional shader stage bits in
+--     __RESOLVED__: No. If an application were to be recompiled with
+--     headers that include additional shader stage bits in
 --     VK_SHADER_STAGE_ALL_GRAPHICS, then the previously valid application
 --     would no longer be valid on implementations that don’t support mesh
 --     or task shaders. This means the change would not be backwards
 --     compatible. It’s too bad VkShaderStageFlagBits doesn’t have a
---     dedicated \"all supported graphics stages\" bit like
+--     dedicated “all supported graphics stages” bit like
 --     VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, which would have avoided this
 --     problem.
 --
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
@@ -857,10 +857,10 @@
 --
 -- = Description
 --
--- Similar to other objects in Vulkan, the acceleration structure creation
--- merely creates an object with a specific “shape” as specified by the
--- information in 'AccelerationStructureInfoNV' and @compactedSize@ in
--- @pCreateInfo@. Populating the data in the object after allocating and
+-- Similarly to other objects in Vulkan, the acceleration structure
+-- creation merely creates an object with a specific “shape” as specified
+-- by the information in 'AccelerationStructureInfoNV' and @compactedSize@
+-- in @pCreateInfo@. Populating the data in the object after allocating and
 -- binding memory is done with 'cmdBuildAccelerationStructureNV' and
 -- 'cmdCopyAccelerationStructureNV'.
 --
@@ -1047,8 +1047,9 @@
                                                 -- #VUID-vkGetAccelerationStructureMemoryRequirementsNV-device-parameter#
                                                 -- @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
                                                 Device
-                                             -> -- | @pInfo@ specifies the acceleration structure to get memory requirements
-                                                -- for.
+                                             -> -- | @pInfo@ is a pointer to a
+                                                -- 'AccelerationStructureMemoryRequirementsInfoNV' structure specifying the
+                                                -- acceleration structure to get memory requirements for.
                                                 --
                                                 -- #VUID-vkGetAccelerationStructureMemoryRequirementsNV-pInfo-parameter#
                                                 -- @pInfo@ /must/ be a valid pointer to a valid
@@ -1706,9 +1707,9 @@
 -- -   #VUID-vkCmdTraceRaysNV-commandBuffer-02701# If the
 --     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
 --     point used by this command requires any dynamic state, that state
---     /must/ have been set for @commandBuffer@, and done so after any
---     previously bound pipeline with the corresponding state not specified
---     as dynamic
+--     /must/ have been set or inherited for @commandBuffer@, and done so
+--     after any previously bound pipeline with the corresponding state not
+--     specified as dynamic
 --
 -- -   #VUID-vkCmdTraceRaysNV-None-02859# There /must/ not have been any
 --     calls to dynamic state setting commands for any state not specified
@@ -1827,7 +1828,7 @@
 --
 -- -   #VUID-vkCmdTraceRaysNV-None-03429# Any shader group handle
 --     referenced by this call /must/ have been queried from the currently
---     bound ray tracing shader pipeline
+--     bound ray tracing pipeline
 --
 -- -   #VUID-vkCmdTraceRaysNV-commandBuffer-04624# @commandBuffer@ /must/
 --     not be a protected command buffer
@@ -2713,13 +2714,15 @@
     -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'
     -- specifying how the pipeline will be generated.
     flags :: PipelineCreateFlags
-  , -- | @pStages@ is an array of size @stageCount@ structures of type
-    -- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo' describing the
-    -- set of the shader stages to be included in the ray tracing pipeline.
+  , -- | @pStages@ is a pointer to an array of
+    -- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo' structures
+    -- specifying the set of the shader stages to be included in the ray
+    -- tracing pipeline.
     stages :: Vector (SomeStruct PipelineShaderStageCreateInfo)
-  , -- | @pGroups@ is an array of size @groupCount@ structures of type
-    -- 'RayTracingShaderGroupCreateInfoNV' describing the set of the shader
-    -- stages to be included in each shader group in the ray tracing pipeline.
+  , -- | @pGroups@ is a pointer to an array of
+    -- 'RayTracingShaderGroupCreateInfoNV' structures describing the set of the
+    -- shader stages to be included in each shader group in the ray tracing
+    -- pipeline.
     groups :: Vector RayTracingShaderGroupCreateInfoNV
   , -- | @maxRecursionDepth@ is the
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depth maximum recursion depth>
@@ -3592,7 +3595,7 @@
 
 
 -- | VkWriteDescriptorSetAccelerationStructureNV - Structure specifying
--- acceleration structure descriptor info
+-- acceleration structure descriptor information
 --
 -- == Valid Usage
 --
@@ -3631,7 +3634,9 @@
 -- 'Vulkan.Extensions.Handles.AccelerationStructureNV',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data WriteDescriptorSetAccelerationStructureNV = WriteDescriptorSetAccelerationStructureNV
-  { -- | @pAccelerationStructures@ are the acceleration structures to update.
+  { -- | @pAccelerationStructures@ is a pointer to an array of
+    -- 'Vulkan.Extensions.Handles.AccelerationStructureNV' structures
+    -- specifying the acceleration structures to update.
     accelerationStructures :: Vector AccelerationStructureNV }
   deriving (Typeable)
 #if defined(GENERIC_INSTANCES)
@@ -3751,9 +3756,12 @@
 -- = Description
 --
 -- If the 'PhysicalDeviceRayTracingPropertiesNV' structure is included in
--- the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- 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.
 --
 -- Limits specified by this structure /must/ match those specified with the
 -- same name in
@@ -3767,7 +3775,7 @@
 --
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
 data PhysicalDeviceRayTracingPropertiesNV = PhysicalDeviceRayTracingPropertiesNV
-  { -- | @shaderGroupHandleSize@ size in bytes of the shader header.
+  { -- | @shaderGroupHandleSize@ is the size in bytes of the shader header.
     shaderGroupHandleSize :: Word32
   , -- | #limits-maxRecursionDepth# @maxRecursionDepth@ is the maximum number of
     -- levels of recursion allowed in a trace command.
diff --git a/src/Vulkan/Extensions/VK_NV_representative_fragment_test.hs b/src/Vulkan/Extensions/VK_NV_representative_fragment_test.hs
--- a/src/Vulkan/Extensions/VK_NV_representative_fragment_test.hs
+++ b/src/Vulkan/Extensions/VK_NV_representative_fragment_test.hs
@@ -197,18 +197,20 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceRepresentativeFragmentTestFeaturesNV'
--- structure describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceRepresentativeFragmentTestFeaturesNV' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceRepresentativeFragmentTestFeaturesNV' /can/ also be
--- included in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
--- to enable the feature.
+-- 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. 'PhysicalDeviceRepresentativeFragmentTestFeaturesNV' /can/
+-- also be used in the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
+-- features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_NV_scissor_exclusive.hs b/src/Vulkan/Extensions/VK_NV_scissor_exclusive.hs
--- a/src/Vulkan/Extensions/VK_NV_scissor_exclusive.hs
+++ b/src/Vulkan/Extensions/VK_NV_scissor_exclusive.hs
@@ -306,8 +306,7 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceExclusiveScissorFeaturesNV' structure
--- describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
@@ -316,12 +315,14 @@
 -- for more information.
 --
 -- If the 'PhysicalDeviceExclusiveScissorFeaturesNV' structure is included
--- in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceExclusiveScissorFeaturesNV' /can/ also be included in the
--- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable the
--- feature.
+-- 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. 'PhysicalDeviceExclusiveScissorFeaturesNV' /can/ also be used
+-- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_NV_shader_image_footprint.hs b/src/Vulkan/Extensions/VK_NV_shader_image_footprint.hs
--- a/src/Vulkan/Extensions/VK_NV_shader_image_footprint.hs
+++ b/src/Vulkan/Extensions/VK_NV_shader_image_footprint.hs
@@ -104,7 +104,7 @@
 --
 -- When using SPIR-V generated from the OpenGL Shading Language, the new
 -- instruction will be generated from code using the new
--- @textureFootprint@*NV built-in functions from the
+-- @textureFootprint*NV@ built-in functions from the
 -- @GL_NV_shader_texture_footprint@ shading language extension.
 --
 -- == New Structures
@@ -299,6 +299,10 @@
 -- shader image footprint features that can be supported by an
 -- implementation
 --
+-- = Members
+--
+-- This structure describes the following feature:
+--
 -- = Description
 --
 -- See
@@ -306,12 +310,14 @@
 -- for more information.
 --
 -- If the 'PhysicalDeviceShaderImageFootprintFeaturesNV' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether each feature is supported.
--- 'PhysicalDeviceShaderImageFootprintFeaturesNV' /can/ also be included in
--- the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable
--- features.
+-- 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. 'PhysicalDeviceShaderImageFootprintFeaturesNV' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_NV_shader_image_footprint.hs-boot b/src/Vulkan/Extensions/VK_NV_shader_image_footprint.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_shader_image_footprint.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_shader_image_footprint.hs-boot
@@ -104,7 +104,7 @@
 --
 -- When using SPIR-V generated from the OpenGL Shading Language, the new
 -- instruction will be generated from code using the new
--- @textureFootprint@*NV built-in functions from the
+-- @textureFootprint*NV@ built-in functions from the
 -- @GL_NV_shader_texture_footprint@ shading language extension.
 --
 -- == New Structures
diff --git a/src/Vulkan/Extensions/VK_NV_shader_sm_builtins.hs b/src/Vulkan/Extensions/VK_NV_shader_sm_builtins.hs
--- a/src/Vulkan/Extensions/VK_NV_shader_sm_builtins.hs
+++ b/src/Vulkan/Extensions/VK_NV_shader_sm_builtins.hs
@@ -103,14 +103,14 @@
 --
 -- 1.  What should we call this extension?
 --
---     RESOLVED: Using NV_shader_sm_builtins. Other options considered
+--     __RESOLVED__: @NV_shader_sm_builtins@. Other options considered
 --     included:
 --
---     -   NV_shader_smid - but SMID is really easy to typo\/confuse as
+--     -   @NV_shader_smid@ - but SMID is really easy to typo\/confuse as
 --         SIMD.
 --
---     -   NV_shader_sm_info - but __Info__ is typically reserved for input
---         structures
+--     -   @NV_shader_sm_info@ - but __Info__ is typically reserved for
+--         input structures
 --
 -- == Version History
 --
@@ -165,17 +165,15 @@
 -- | VkPhysicalDeviceShaderSMBuiltinsPropertiesNV - Structure describing
 -- shader SM Builtins properties supported by an implementation
 --
--- = Members
---
--- The members of the 'PhysicalDeviceShaderSMBuiltinsPropertiesNV'
--- structure describe the following implementation-dependent limits:
---
 -- = Description
 --
 -- If the 'PhysicalDeviceShaderSMBuiltinsPropertiesNV' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- 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)
 --
@@ -237,18 +235,19 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceShaderSMBuiltinsFeaturesNV' structure
--- describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
 -- If the 'PhysicalDeviceShaderSMBuiltinsFeaturesNV' structure is included
--- in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceShaderSMBuiltinsFeaturesNV' /can/ also be included in the
--- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable the
--- feature.
+-- 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. 'PhysicalDeviceShaderSMBuiltinsFeaturesNV' /can/ also be used
+-- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_NV_shader_sm_builtins.hs-boot b/src/Vulkan/Extensions/VK_NV_shader_sm_builtins.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_shader_sm_builtins.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_shader_sm_builtins.hs-boot
@@ -103,14 +103,14 @@
 --
 -- 1.  What should we call this extension?
 --
---     RESOLVED: Using NV_shader_sm_builtins. Other options considered
+--     __RESOLVED__: @NV_shader_sm_builtins@. Other options considered
 --     included:
 --
---     -   NV_shader_smid - but SMID is really easy to typo\/confuse as
+--     -   @NV_shader_smid@ - but SMID is really easy to typo\/confuse as
 --         SIMD.
 --
---     -   NV_shader_sm_info - but __Info__ is typically reserved for input
---         structures
+--     -   @NV_shader_sm_info@ - but __Info__ is typically reserved for
+--         input structures
 --
 -- == Version History
 --
diff --git a/src/Vulkan/Extensions/VK_NV_shading_rate_image.hs b/src/Vulkan/Extensions/VK_NV_shading_rate_image.hs
--- a/src/Vulkan/Extensions/VK_NV_shading_rate_image.hs
+++ b/src/Vulkan/Extensions/VK_NV_shading_rate_image.hs
@@ -142,7 +142,7 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':
 --
---     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV'
+--     -   'ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV'
 --
 -- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':
 --
@@ -152,17 +152,17 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.ImageLayout.ImageLayout':
 --
---     -   'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV'
+--     -   'IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV'
 --
 -- -   Extending
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits':
 --
---     -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV'
+--     -   'IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV'
 --
 -- -   Extending
 --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':
 --
---     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
+--     -   'PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
@@ -201,8 +201,7 @@
 -- perform such a query, it could instead just set its own order, also
 -- using custom per-pixel sample locations if required.
 --
--- (2) For the pipeline stage
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV',
+-- (2) For the pipeline stage 'PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV',
 -- should we specify a precise location in the pipeline the shading rate
 -- image is accessed (after geometry shading, but before the early fragment
 -- tests) or leave it under-specified in case there are other
@@ -277,6 +276,10 @@
 module Vulkan.Extensions.VK_NV_shading_rate_image  ( cmdBindShadingRateImageNV
                                                    , cmdSetViewportShadingRatePaletteNV
                                                    , cmdSetCoarseSampleOrderNV
+                                                   , pattern IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV
+                                                   , pattern ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV
+                                                   , pattern IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV
+                                                   , pattern PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV
                                                    , ShadingRatePaletteNV(..)
                                                    , PipelineViewportShadingRateImageStateCreateInfoNV(..)
                                                    , PhysicalDeviceShadingRateImageFeaturesNV(..)
@@ -368,6 +371,13 @@
 import Vulkan.Core10.Handles (ImageView)
 import Vulkan.Core10.Handles (ImageView(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.AccessFlagBits (AccessFlags)
+import Vulkan.Core10.Enums.AccessFlagBits (AccessFlagBits(ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR))
+import Vulkan.Core10.Enums.ImageLayout (ImageLayout(IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR))
+import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)
+import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlagBits(IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR))
+import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)
+import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits(PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV))
@@ -401,7 +411,7 @@
 -- -   #VUID-vkCmdBindShadingRateImageNV-imageView-02061# If @imageView@ is
 --     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ have been
 --     created with a @usage@ value including
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV'
+--     'IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV'
 --
 -- -   #VUID-vkCmdBindShadingRateImageNV-imageView-02062# If @imageView@ is
 --     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageLayout@ /must/
@@ -411,9 +421,8 @@
 --
 -- -   #VUID-vkCmdBindShadingRateImageNV-imageLayout-02063# If @imageView@
 --     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageLayout@
---     /must/ be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV'
---     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'
+--     /must/ be 'IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV' or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'
 --
 -- == Valid Usage (Implicit)
 --
@@ -682,6 +691,22 @@
   pure $ ()
 
 
+-- No documentation found for TopLevel "VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV"
+pattern IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR
+
+
+-- No documentation found for TopLevel "VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV"
+pattern ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV"
+pattern IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV"
+pattern PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
+
+
 -- | VkShadingRatePaletteNV - Structure specifying a single shading rate
 -- palette
 --
@@ -822,8 +847,7 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceShadingRateImageFeaturesNV' structure
--- describe the following features:
+-- This structure describes the following features:
 --
 -- = Description
 --
@@ -832,12 +856,14 @@
 -- for more information.
 --
 -- If the 'PhysicalDeviceShadingRateImageFeaturesNV' structure is included
--- in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--- it is filled with values indicating whether the feature is supported.
--- 'PhysicalDeviceShadingRateImageFeaturesNV' /can/ also be included in the
--- @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable
--- features.
+-- 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. 'PhysicalDeviceShadingRateImageFeaturesNV' /can/ also be used
+-- in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
@@ -901,20 +927,19 @@
 -- | VkPhysicalDeviceShadingRateImagePropertiesNV - Structure describing
 -- shading rate image limits that can be supported by an implementation
 --
--- = Members
---
--- The members of the 'PhysicalDeviceShadingRateImagePropertiesNV'
--- structure describe the following implementation-dependent properties
--- related to the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-image shading rate image>
--- feature:
---
 -- = Description
 --
 -- If the 'PhysicalDeviceShadingRateImagePropertiesNV' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
--- it is filled with the implementation-dependent limits.
+-- 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.
+--
+-- These properties are related to the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-image shading rate image>
+-- feature.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_NV_shading_rate_image.hs-boot b/src/Vulkan/Extensions/VK_NV_shading_rate_image.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_shading_rate_image.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_shading_rate_image.hs-boot
@@ -142,7 +142,7 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':
 --
---     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV'
+--     -   'ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV'
 --
 -- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':
 --
@@ -152,17 +152,17 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.ImageLayout.ImageLayout':
 --
---     -   'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV'
+--     -   'IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV'
 --
 -- -   Extending
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits':
 --
---     -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV'
+--     -   'IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV'
 --
 -- -   Extending
 --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':
 --
---     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
+--     -   'PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
@@ -201,8 +201,7 @@
 -- perform such a query, it could instead just set its own order, also
 -- using custom per-pixel sample locations if required.
 --
--- (2) For the pipeline stage
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV',
+-- (2) For the pipeline stage 'PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV',
 -- should we specify a precise location in the pipeline the shading rate
 -- image is accessed (after geometry shading, but before the early fragment
 -- tests) or leave it under-specified in case there are other
diff --git a/src/Vulkan/Extensions/VK_QCOM_render_pass_store_ops.hs b/src/Vulkan/Extensions/VK_QCOM_render_pass_store_ops.hs
--- a/src/Vulkan/Extensions/VK_QCOM_render_pass_store_ops.hs
+++ b/src/Vulkan/Extensions/VK_QCOM_render_pass_store_ops.hs
@@ -68,9 +68,9 @@
 --
 -- == New Enum Constants
 --
--- -   'QCOM_render_pass_store_ops_EXTENSION_NAME'
+-- -   'QCOM_RENDER_PASS_STORE_OPS_EXTENSION_NAME'
 --
--- -   'QCOM_render_pass_store_ops_SPEC_VERSION'
+-- -   'QCOM_RENDER_PASS_STORE_OPS_SPEC_VERSION'
 --
 -- -   Extending 'Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp':
 --
@@ -97,24 +97,24 @@
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
-module Vulkan.Extensions.VK_QCOM_render_pass_store_ops  ( QCOM_render_pass_store_ops_SPEC_VERSION
-                                                        , pattern QCOM_render_pass_store_ops_SPEC_VERSION
-                                                        , QCOM_render_pass_store_ops_EXTENSION_NAME
-                                                        , pattern QCOM_render_pass_store_ops_EXTENSION_NAME
+module Vulkan.Extensions.VK_QCOM_render_pass_store_ops  ( QCOM_RENDER_PASS_STORE_OPS_SPEC_VERSION
+                                                        , pattern QCOM_RENDER_PASS_STORE_OPS_SPEC_VERSION
+                                                        , QCOM_RENDER_PASS_STORE_OPS_EXTENSION_NAME
+                                                        , pattern QCOM_RENDER_PASS_STORE_OPS_EXTENSION_NAME
                                                         ) where
 
 import Data.String (IsString)
 
-type QCOM_render_pass_store_ops_SPEC_VERSION = 2
+type QCOM_RENDER_PASS_STORE_OPS_SPEC_VERSION = 2
 
--- No documentation found for TopLevel "VK_QCOM_render_pass_store_ops_SPEC_VERSION"
-pattern QCOM_render_pass_store_ops_SPEC_VERSION :: forall a . Integral a => a
-pattern QCOM_render_pass_store_ops_SPEC_VERSION = 2
+-- No documentation found for TopLevel "VK_QCOM_RENDER_PASS_STORE_OPS_SPEC_VERSION"
+pattern QCOM_RENDER_PASS_STORE_OPS_SPEC_VERSION :: forall a . Integral a => a
+pattern QCOM_RENDER_PASS_STORE_OPS_SPEC_VERSION = 2
 
 
-type QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops"
+type QCOM_RENDER_PASS_STORE_OPS_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops"
 
--- No documentation found for TopLevel "VK_QCOM_render_pass_store_ops_EXTENSION_NAME"
-pattern QCOM_render_pass_store_ops_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
-pattern QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops"
+-- No documentation found for TopLevel "VK_QCOM_RENDER_PASS_STORE_OPS_EXTENSION_NAME"
+pattern QCOM_RENDER_PASS_STORE_OPS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern QCOM_RENDER_PASS_STORE_OPS_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops"
 
diff --git a/src/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs b/src/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs
--- a/src/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs
+++ b/src/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs
@@ -15,7 +15,7 @@
 --     283
 --
 -- [__Revision__]
---     1
+--     2
 --
 -- [__Extension and Version Dependencies__]
 --
@@ -33,7 +33,7 @@
 -- == Other Extension Metadata
 --
 -- [__Last Modified Date__]
---     2020-10-15
+--     2021-03-09
 --
 -- [__Interactions and External Dependencies__]
 --
@@ -41,12 +41,16 @@
 --
 --     -   This extension interacts with @VK_EXT_fragment_density_map@
 --
+--     -   This extension interacts with @VK_KHR_fragment_shading_rate@
+--
 -- [__Contributors__]
 --
 --     -   Jeff Leger, Qualcomm Technologies, Inc.
 --
 --     -   Brandon Light, Qualcomm Technologies, Inc.
 --
+--     -   Matthew Netsch, Qualcomm Technologies, Inc.
+--
 -- == Description
 --
 -- This extension provides a mechanism for applications to enable driver
@@ -56,13 +60,13 @@
 -- Mobile devices can be rotated and mobile applications need to render
 -- properly when a device is held in a landscape or portrait orientation.
 -- When the current orientation differs from the device’s native
--- orientation, a rotation is required so that the \"up\" direction of the
+-- orientation, a rotation is required so that the “up” direction of the
 -- rendered scene matches the current orientation.
 --
 -- If the Display Processing Unit (DPU) doesnt natively support rotation,
 -- the Vulkan presentation engine can handle this rotation in a separate
 -- composition pass. Alternatively, the application can render frames
--- \"pre-rotated\" to avoid this extra pass. The latter is preferred to
+-- “pre-rotated” to avoid this extra pass. The latter is preferred to
 -- reduce power consumption and achieve the best performance because it
 -- avoids tasking the GPU with extra work to perform the copy\/rotate
 -- operation.
@@ -70,7 +74,7 @@
 -- Unlike OpenGL ES, the burden of pre-rotation in Vulkan falls on the
 -- application. To implement pre-rotation, applications render into
 -- swapchain images matching the device native aspect ratio of the display
--- and \"pre-rotate\" the rendering content to match the device’s current
+-- and “pre-rotate” the rendering content to match the device’s current
 -- orientation. The burden is more than adjusting the Model View Projection
 -- (MVP) matrix in the vertex shader to account for rotation and aspect
 -- ratio. The coordinate systems of scissors, viewports, derivatives and
@@ -103,13 +107,15 @@
 --     'CommandBufferInheritanceRenderPassTransformInfoQCOM' specifying the
 --     render pass transform parameters.
 --
--- -   The @renderArea@, viewPorts and scissors are all provided in the
---     current (non-rotated) coordinate system. The implementation will
---     transform those into the native (rotated) coordinate system.
+-- -   The @renderArea@, viewports, scissors, and @fragmentSize@ are all
+--     provided in the current (non-rotated) coordinate system. The
+--     implementation will transform those into the native (rotated)
+--     coordinate system.
 --
 -- -   The implementation is responsible for transforming shader built-ins
---     (@FragCoord@, @PointCoord@, @SamplePosition@, interpolateAt(), dFdx,
---     dFdy, fWidth) into the rotated coordinate system.
+--     (@FragCoord@, @PointCoord@, @SamplePosition@,
+--     @PrimitiveShadingRateKHR@, interpolateAt(), dFdx, dFdy, fWidth) into
+--     the rotated coordinate system.
 --
 -- -   The implementation is responsible for transforming @position@ to the
 --     rotated coordinate system.
@@ -191,25 +197,49 @@
 -- 3) How does this extension interact with VK_EXT_fragment_density_map?
 --
 -- __RESOLVED__ Some implementations may not be able to support a render
--- pass that enables both renderpass transform and fragment density maps.
+-- pass that enables both render pass transform and fragment density maps.
 -- For simplicity, this extension disallows enabling both features within a
 -- single render pass.
 --
 -- 4) What should this extension be named?
 --
--- We considered names such as \"rotated_rendering\", \"pre_rotation\" and
+-- We considered names such as “rotated_rendering”, “pre_rotation” and
 -- others. Since the functionality is limited to a render pass, it seemed
--- the name should include \"render_pass\". While the current extension is
+-- the name should include “render_pass”. While the current extension is
 -- limited to rotations, it could be extended to other transforms (like
 -- mirror) in the future.
 --
--- __RESOLVED__ The name \"render_pass_transform\" seems like the most
+-- __RESOLVED__ The name “render_pass_transform” seems like the most
 -- accurate description of the introduced functionality.
 --
+-- 5) How does this extension interact with VK_KHR_fragment_shading_rate?
+--
+-- __RESOLVED__: For the same reasons as issue 3, this extension disallows
+-- enabling both @pFragmentShadingRateAttachment@ and render pass transform
+-- within a single render pass.
+--
+-- However, pipeline shading rate and primitive shading rate are supported,
+-- and their respective @fragmentSize@ and @PrimitiveShadingRateKHR@ are
+-- provided in the current (non-rotated) coordinate system. The
+-- implementation is responsible for transforming them to the rotated
+-- coordinate system.
+--
+-- The
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate set of supported shading rates>
+-- /may/ be different per transform. Supported rates queried from
+-- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.getPhysicalDeviceFragmentShadingRatesKHR'
+-- are in the native (rotated) coordinate system. This means that the
+-- application /must/ swap the x\/y of the reported rates to get the set of
+-- rates supported for 90 and 270 degree rotation.
+--
 -- == Version History
 --
 -- -   Revision 1, 2020-02-05 (Jeff Leger)
 --
+-- -   Revision 2, 2021-03-09 (Matthew Netsch)
+--
+--     -   Adds interactions with VK_KHR_fragment_shading_rate
+--
 -- = See Also
 --
 -- 'CommandBufferInheritanceRenderPassTransformInfoQCOM',
@@ -405,11 +435,11 @@
            zero
 
 
-type QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1
+type QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 2
 
 -- No documentation found for TopLevel "VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION"
 pattern QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION :: forall a . Integral a => a
-pattern QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1
+pattern QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 2
 
 
 type QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform"
diff --git a/src/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs-boot b/src/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs-boot
--- a/src/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs-boot
+++ b/src/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs-boot
@@ -15,7 +15,7 @@
 --     283
 --
 -- [__Revision__]
---     1
+--     2
 --
 -- [__Extension and Version Dependencies__]
 --
@@ -33,7 +33,7 @@
 -- == Other Extension Metadata
 --
 -- [__Last Modified Date__]
---     2020-10-15
+--     2021-03-09
 --
 -- [__Interactions and External Dependencies__]
 --
@@ -41,12 +41,16 @@
 --
 --     -   This extension interacts with @VK_EXT_fragment_density_map@
 --
+--     -   This extension interacts with @VK_KHR_fragment_shading_rate@
+--
 -- [__Contributors__]
 --
 --     -   Jeff Leger, Qualcomm Technologies, Inc.
 --
 --     -   Brandon Light, Qualcomm Technologies, Inc.
 --
+--     -   Matthew Netsch, Qualcomm Technologies, Inc.
+--
 -- == Description
 --
 -- This extension provides a mechanism for applications to enable driver
@@ -56,13 +60,13 @@
 -- Mobile devices can be rotated and mobile applications need to render
 -- properly when a device is held in a landscape or portrait orientation.
 -- When the current orientation differs from the device’s native
--- orientation, a rotation is required so that the \"up\" direction of the
+-- orientation, a rotation is required so that the “up” direction of the
 -- rendered scene matches the current orientation.
 --
 -- If the Display Processing Unit (DPU) doesnt natively support rotation,
 -- the Vulkan presentation engine can handle this rotation in a separate
 -- composition pass. Alternatively, the application can render frames
--- \"pre-rotated\" to avoid this extra pass. The latter is preferred to
+-- “pre-rotated” to avoid this extra pass. The latter is preferred to
 -- reduce power consumption and achieve the best performance because it
 -- avoids tasking the GPU with extra work to perform the copy\/rotate
 -- operation.
@@ -70,7 +74,7 @@
 -- Unlike OpenGL ES, the burden of pre-rotation in Vulkan falls on the
 -- application. To implement pre-rotation, applications render into
 -- swapchain images matching the device native aspect ratio of the display
--- and \"pre-rotate\" the rendering content to match the device’s current
+-- and “pre-rotate” the rendering content to match the device’s current
 -- orientation. The burden is more than adjusting the Model View Projection
 -- (MVP) matrix in the vertex shader to account for rotation and aspect
 -- ratio. The coordinate systems of scissors, viewports, derivatives and
@@ -103,13 +107,15 @@
 --     'CommandBufferInheritanceRenderPassTransformInfoQCOM' specifying the
 --     render pass transform parameters.
 --
--- -   The @renderArea@, viewPorts and scissors are all provided in the
---     current (non-rotated) coordinate system. The implementation will
---     transform those into the native (rotated) coordinate system.
+-- -   The @renderArea@, viewports, scissors, and @fragmentSize@ are all
+--     provided in the current (non-rotated) coordinate system. The
+--     implementation will transform those into the native (rotated)
+--     coordinate system.
 --
 -- -   The implementation is responsible for transforming shader built-ins
---     (@FragCoord@, @PointCoord@, @SamplePosition@, interpolateAt(), dFdx,
---     dFdy, fWidth) into the rotated coordinate system.
+--     (@FragCoord@, @PointCoord@, @SamplePosition@,
+--     @PrimitiveShadingRateKHR@, interpolateAt(), dFdx, dFdy, fWidth) into
+--     the rotated coordinate system.
 --
 -- -   The implementation is responsible for transforming @position@ to the
 --     rotated coordinate system.
@@ -191,24 +197,48 @@
 -- 3) How does this extension interact with VK_EXT_fragment_density_map?
 --
 -- __RESOLVED__ Some implementations may not be able to support a render
--- pass that enables both renderpass transform and fragment density maps.
+-- pass that enables both render pass transform and fragment density maps.
 -- For simplicity, this extension disallows enabling both features within a
 -- single render pass.
 --
 -- 4) What should this extension be named?
 --
--- We considered names such as \"rotated_rendering\", \"pre_rotation\" and
+-- We considered names such as “rotated_rendering”, “pre_rotation” and
 -- others. Since the functionality is limited to a render pass, it seemed
--- the name should include \"render_pass\". While the current extension is
+-- the name should include “render_pass”. While the current extension is
 -- limited to rotations, it could be extended to other transforms (like
 -- mirror) in the future.
 --
--- __RESOLVED__ The name \"render_pass_transform\" seems like the most
+-- __RESOLVED__ The name “render_pass_transform” seems like the most
 -- accurate description of the introduced functionality.
 --
+-- 5) How does this extension interact with VK_KHR_fragment_shading_rate?
+--
+-- __RESOLVED__: For the same reasons as issue 3, this extension disallows
+-- enabling both @pFragmentShadingRateAttachment@ and render pass transform
+-- within a single render pass.
+--
+-- However, pipeline shading rate and primitive shading rate are supported,
+-- and their respective @fragmentSize@ and @PrimitiveShadingRateKHR@ are
+-- provided in the current (non-rotated) coordinate system. The
+-- implementation is responsible for transforming them to the rotated
+-- coordinate system.
+--
+-- The
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate set of supported shading rates>
+-- /may/ be different per transform. Supported rates queried from
+-- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.getPhysicalDeviceFragmentShadingRatesKHR'
+-- are in the native (rotated) coordinate system. This means that the
+-- application /must/ swap the x\/y of the reported rates to get the set of
+-- rates supported for 90 and 270 degree rotation.
+--
 -- == Version History
 --
 -- -   Revision 1, 2020-02-05 (Jeff Leger)
+--
+-- -   Revision 2, 2021-03-09 (Matthew Netsch)
+--
+--     -   Adds interactions with VK_KHR_fragment_shading_rate
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_QCOM_rotated_copy_commands.hs b/src/Vulkan/Extensions/VK_QCOM_rotated_copy_commands.hs
--- a/src/Vulkan/Extensions/VK_QCOM_rotated_copy_commands.hs
+++ b/src/Vulkan/Extensions/VK_QCOM_rotated_copy_commands.hs
@@ -15,7 +15,7 @@
 --     334
 --
 -- [__Revision__]
---     0
+--     1
 --
 -- [__Extension and Version Dependencies__]
 --
@@ -32,14 +32,14 @@
 --
 -- == Other Extension Metadata
 --
--- [Last Modified Date]
+-- [__Last Modified Date__]
 --     2020-09-18
 --
 -- [__Interactions and External Dependencies__]
 --
 --     -   None
 --
--- [Contributors]
+-- [__Contributors__]
 --
 --     -   Jeff Leger, Qualcomm Technologies, Inc.
 --
@@ -61,12 +61,13 @@
 -- == Issues
 --
 -- 1) What is an appropriate name for the added extension structure? The
--- style guide says \"Structures which extend other structures through the
--- pNext chain should reflect the name of the base structure they
--- extend.\", but in this case a single extension structure is used to
--- extend three base structures (vkCmdBlitImage2KHR,
--- vkCmdCopyImageToBuffer2KHR and vkCmdCopyBufferToImage2KHR). Creating
--- three identical structures with unique names seemed undesirable.
+-- style guide says “Structures which extend other structures through the
+-- pNext chain should reflect the name of the base structure they extend.”,
+-- but in this case a single extension structure is used to extend three
+-- base structures (vkCmdBlitImage2KHR, vkCmdCopyImageToBuffer2KHR and
+-- vkCmdCopyBufferToImage2KHR). Creating three identical structures with
+-- unique names seemed undesirable.
+--
 -- __RESOLVED__: Deviate from the style guide for extension structure
 -- naming.
 --
@@ -209,11 +210,11 @@
            zero
 
 
-type QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 0
+type QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 1
 
 -- No documentation found for TopLevel "VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION"
 pattern QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION :: forall a . Integral a => a
-pattern QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 0
+pattern QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 1
 
 
 type QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME = "VK_QCOM_rotated_copy_commands"
diff --git a/src/Vulkan/Extensions/VK_QCOM_rotated_copy_commands.hs-boot b/src/Vulkan/Extensions/VK_QCOM_rotated_copy_commands.hs-boot
--- a/src/Vulkan/Extensions/VK_QCOM_rotated_copy_commands.hs-boot
+++ b/src/Vulkan/Extensions/VK_QCOM_rotated_copy_commands.hs-boot
@@ -15,7 +15,7 @@
 --     334
 --
 -- [__Revision__]
---     0
+--     1
 --
 -- [__Extension and Version Dependencies__]
 --
@@ -32,14 +32,14 @@
 --
 -- == Other Extension Metadata
 --
--- [Last Modified Date]
+-- [__Last Modified Date__]
 --     2020-09-18
 --
 -- [__Interactions and External Dependencies__]
 --
 --     -   None
 --
--- [Contributors]
+-- [__Contributors__]
 --
 --     -   Jeff Leger, Qualcomm Technologies, Inc.
 --
@@ -61,12 +61,13 @@
 -- == Issues
 --
 -- 1) What is an appropriate name for the added extension structure? The
--- style guide says \"Structures which extend other structures through the
--- pNext chain should reflect the name of the base structure they
--- extend.\", but in this case a single extension structure is used to
--- extend three base structures (vkCmdBlitImage2KHR,
--- vkCmdCopyImageToBuffer2KHR and vkCmdCopyBufferToImage2KHR). Creating
--- three identical structures with unique names seemed undesirable.
+-- style guide says “Structures which extend other structures through the
+-- pNext chain should reflect the name of the base structure they extend.”,
+-- but in this case a single extension structure is used to extend three
+-- base structures (vkCmdBlitImage2KHR, vkCmdCopyImageToBuffer2KHR and
+-- vkCmdCopyBufferToImage2KHR). Creating three identical structures with
+-- unique names seemed undesirable.
+--
 -- __RESOLVED__: Deviate from the style guide for extension structure
 -- naming.
 --
diff --git a/src/Vulkan/Extensions/VK_VALVE_mutable_descriptor_type.hs b/src/Vulkan/Extensions/VK_VALVE_mutable_descriptor_type.hs
--- a/src/Vulkan/Extensions/VK_VALVE_mutable_descriptor_type.hs
+++ b/src/Vulkan/Extensions/VK_VALVE_mutable_descriptor_type.hs
@@ -3,123 +3,8 @@
 --
 -- VK_VALVE_mutable_descriptor_type - device extension
 --
--- == VK_VALVE_mutable_descriptor_type
---
--- [__Name String__]
---     @VK_VALVE_mutable_descriptor_type@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     352
---
--- [__Revision__]
---     1
---
--- [__Extension and Version Dependencies__]
---
---     -   Requires Vulkan 1.0
---
---     -   Requires @VK_KHR_maintenance3@
---
--- [__Special Use__]
---
---     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse D3D support>
---
--- [__Contact__]
---
---     -   Joshua Ashton
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_VALVE_mutable_descriptor_type:%20&body=@Joshua-Ashton%20 >
---
---     -   Hans-Kristian Arntzen
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_VALVE_mutable_descriptor_type:%20&body=@HansKristian-Work%20 >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2020-12-02
---
--- [__IP Status__]
---     No known IP claims.
---
--- [__Contributors__]
---
---     -   Joshua Ashton, Valve
---
---     -   Hans-Kristian Arntzen, Valve
---
--- == Description
---
--- This extension allows applications to reduce descriptor memory footprint
--- by allowing a descriptor to be able to mutate to a given list of
--- descriptor types depending on which descriptor types are written into,
--- or copied into a descriptor set.
---
--- The main use case this extension intends to address is descriptor
--- indexing with
--- 'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT'
--- where the descriptor types are completely generic, as this means
--- applications can allocate one large descriptor set, rather than having
--- one large descriptor set per descriptor type, which significantly bloats
--- descriptor memory usage and causes performance issues.
---
--- This extension also adds a mechanism to declare that a descriptor pool,
--- and therefore the descriptor sets that are allocated from it, reside
--- only in host memory; as such these descriptors can only be
--- updated\/copied, but not bound.
---
--- These features together allow much more efficient emulation of the raw
--- D3D12 binding model. This extension is primarily intended to be useful
--- for API layering efforts.
---
--- == New Structures
---
--- -   'MutableDescriptorTypeListVALVE'
---
--- -   Extending
---     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutCreateInfo',
---     'Vulkan.Core10.DescriptorSet.DescriptorPoolCreateInfo':
---
---     -   'MutableDescriptorTypeCreateInfoVALVE'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceMutableDescriptorTypeFeaturesVALVE'
---
--- == New Enum Constants
---
--- -   'VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME'
---
--- -   'VALVE_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION'
---
--- -   Extending
---     'Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DescriptorPoolCreateFlagBits':
---
---     -   'Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE'
---
--- -   Extending
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DescriptorSetLayoutCreateFlagBits':
---
---     -   'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE'
---
--- -   Extending 'Vulkan.Core10.Enums.DescriptorType.DescriptorType':
---
---     -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_MUTABLE_VALVE'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE'
---
--- == Version History
---
--- -   Revision 1, 2020-12-01 (Joshua Ashton, Hans-Kristian Arntzen)
---
---     -   Initial specification, squashed from public draft.
+-- -   Joshua Ashton
+--     <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_VALVE_mutable_descriptor_type:%20&body=@Joshua-Ashton%20 >
 --
 -- = See Also
 --
@@ -181,11 +66,15 @@
 --
 -- = Members
 --
--- The members of the 'PhysicalDeviceMutableDescriptorTypeFeaturesVALVE'
--- structure describe the following features:
+-- This structure describes the following feature:
 --
 -- = Description
 --
+-- -   @sType@ is the type of this structure.
+--
+-- -   @pNext@ is @NULL@ or a pointer to a structure extending this
+--     structure.
+--
 -- -   #features-mutableDescriptorType# @mutableDescriptorType@ indicates
 --     that the implementation /must/ support using the
 --     'Vulkan.Core10.Enums.DescriptorType.DescriptorType' of
@@ -231,6 +120,16 @@
 --
 --     -   'Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE'
 --         /must/ be supported.
+--
+-- If the 'PhysicalDeviceMutableDescriptorTypeFeaturesVALVE' 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. 'PhysicalDeviceMutableDescriptorTypeFeaturesVALVE' /can/ also
+-- be used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo'
+-- to selectively enable these features.
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_VALVE_mutable_descriptor_type.hs-boot b/src/Vulkan/Extensions/VK_VALVE_mutable_descriptor_type.hs-boot
--- a/src/Vulkan/Extensions/VK_VALVE_mutable_descriptor_type.hs-boot
+++ b/src/Vulkan/Extensions/VK_VALVE_mutable_descriptor_type.hs-boot
@@ -3,123 +3,8 @@
 --
 -- VK_VALVE_mutable_descriptor_type - device extension
 --
--- == VK_VALVE_mutable_descriptor_type
---
--- [__Name String__]
---     @VK_VALVE_mutable_descriptor_type@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     352
---
--- [__Revision__]
---     1
---
--- [__Extension and Version Dependencies__]
---
---     -   Requires Vulkan 1.0
---
---     -   Requires @VK_KHR_maintenance3@
---
--- [__Special Use__]
---
---     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse D3D support>
---
--- [__Contact__]
---
---     -   Joshua Ashton
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_VALVE_mutable_descriptor_type:%20&body=@Joshua-Ashton%20 >
---
---     -   Hans-Kristian Arntzen
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_VALVE_mutable_descriptor_type:%20&body=@HansKristian-Work%20 >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2020-12-02
---
--- [__IP Status__]
---     No known IP claims.
---
--- [__Contributors__]
---
---     -   Joshua Ashton, Valve
---
---     -   Hans-Kristian Arntzen, Valve
---
--- == Description
---
--- This extension allows applications to reduce descriptor memory footprint
--- by allowing a descriptor to be able to mutate to a given list of
--- descriptor types depending on which descriptor types are written into,
--- or copied into a descriptor set.
---
--- The main use case this extension intends to address is descriptor
--- indexing with
--- 'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT'
--- where the descriptor types are completely generic, as this means
--- applications can allocate one large descriptor set, rather than having
--- one large descriptor set per descriptor type, which significantly bloats
--- descriptor memory usage and causes performance issues.
---
--- This extension also adds a mechanism to declare that a descriptor pool,
--- and therefore the descriptor sets that are allocated from it, reside
--- only in host memory; as such these descriptors can only be
--- updated\/copied, but not bound.
---
--- These features together allow much more efficient emulation of the raw
--- D3D12 binding model. This extension is primarily intended to be useful
--- for API layering efforts.
---
--- == New Structures
---
--- -   'MutableDescriptorTypeListVALVE'
---
--- -   Extending
---     'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutCreateInfo',
---     'Vulkan.Core10.DescriptorSet.DescriptorPoolCreateInfo':
---
---     -   'MutableDescriptorTypeCreateInfoVALVE'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceMutableDescriptorTypeFeaturesVALVE'
---
--- == New Enum Constants
---
--- -   'VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME'
---
--- -   'VALVE_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION'
---
--- -   Extending
---     'Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DescriptorPoolCreateFlagBits':
---
---     -   'Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE'
---
--- -   Extending
---     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DescriptorSetLayoutCreateFlagBits':
---
---     -   'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE'
---
--- -   Extending 'Vulkan.Core10.Enums.DescriptorType.DescriptorType':
---
---     -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_MUTABLE_VALVE'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE'
---
--- == Version History
---
--- -   Revision 1, 2020-12-01 (Joshua Ashton, Hans-Kristian Arntzen)
---
---     -   Initial specification, squashed from public draft.
+-- -   Joshua Ashton
+--     <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_VALVE_mutable_descriptor_type:%20&body=@Joshua-Ashton%20 >
 --
 -- = See Also
 --
diff --git a/src/Vulkan/SPIRVRequirements.hs b/src/Vulkan/SPIRVRequirements.hs
--- a/src/Vulkan/SPIRVRequirements.hs
+++ b/src/Vulkan/SPIRVRequirements.hs
@@ -122,7 +122,7 @@
 import Vulkan.Extensions.VK_KHR_variable_pointers (pattern KHR_VARIABLE_POINTERS_EXTENSION_NAME)
 import Vulkan.Extensions.VK_KHR_vulkan_memory_model (pattern KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME)
 import Vulkan.Extensions.VK_KHR_workgroup_memory_explicit_layout (pattern KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME)
-import Vulkan.Version (pattern MAKE_VERSION)
+import Vulkan.Version (pattern MAKE_API_VERSION)
 import Vulkan.Extensions.VK_NVX_multiview_per_view_attributes (pattern NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_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)
@@ -161,7 +161,7 @@
 spirvExtensionRequirements :: ByteString -> ([InstanceRequirement], [DeviceRequirement])
 spirvExtensionRequirements = \case
   "SPV_KHR_variable_pointers" ->
-    (,) [RequireInstanceVersion $ MAKE_VERSION 1 1 0] [RequireDeviceVersion $ MAKE_VERSION 1 1 0]
+    (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 1 0]
   "SPV_AMD_shader_explicit_vertex_parameter" -> (,)
     []
     [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing
@@ -230,11 +230,11 @@
                              }
     ]
   "SPV_KHR_shader_draw_parameters" ->
-    (,) [RequireInstanceVersion $ MAKE_VERSION 1 1 0] [RequireDeviceVersion $ MAKE_VERSION 1 1 0]
+    (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 1 0]
   "SPV_KHR_8bit_storage" ->
-    (,) [RequireInstanceVersion $ MAKE_VERSION 1 2 0] [RequireDeviceVersion $ MAKE_VERSION 1 2 0]
+    (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 2 0]
   "SPV_KHR_16bit_storage" ->
-    (,) [RequireInstanceVersion $ MAKE_VERSION 1 1 0] [RequireDeviceVersion $ MAKE_VERSION 1 1 0]
+    (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 1 0]
   "SPV_KHR_shader_clock" -> (,)
     [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
@@ -247,9 +247,9 @@
                              }
     ]
   "SPV_KHR_float_controls" ->
-    (,) [RequireInstanceVersion $ MAKE_VERSION 1 2 0] [RequireDeviceVersion $ MAKE_VERSION 1 2 0]
+    (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 2 0]
   "SPV_KHR_storage_buffer_storage_class" ->
-    (,) [RequireInstanceVersion $ MAKE_VERSION 1 1 0] [RequireDeviceVersion $ MAKE_VERSION 1 1 0]
+    (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 1 0]
   "SPV_KHR_post_depth_coverage" -> (,)
     []
     [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing
@@ -318,7 +318,7 @@
                              }
     ]
   "SPV_EXT_shader_viewport_index_layer" ->
-    (,) [RequireInstanceVersion $ MAKE_VERSION 1 2 0] [RequireDeviceVersion $ MAKE_VERSION 1 2 0]
+    (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 2 0]
   "SPV_NVX_multiview_per_view_attributes" -> (,)
     [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
@@ -335,9 +335,9 @@
                              }
     ]
   "SPV_EXT_descriptor_indexing" ->
-    (,) [RequireInstanceVersion $ MAKE_VERSION 1 2 0] [RequireDeviceVersion $ MAKE_VERSION 1 2 0]
+    (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 2 0]
   "SPV_KHR_vulkan_memory_model" ->
-    (,) [RequireInstanceVersion $ MAKE_VERSION 1 2 0] [RequireDeviceVersion $ MAKE_VERSION 1 2 0]
+    (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 2 0]
   "SPV_NV_compute_shader_derivatives" -> (,)
     [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
@@ -508,7 +508,7 @@
                              }
     ]
   "SPV_KHR_physical_storage_buffer" ->
-    (,) [RequireInstanceVersion $ MAKE_VERSION 1 2 0] [RequireDeviceVersion $ MAKE_VERSION 1 2 0]
+    (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 2 0]
   "SPV_EXT_physical_storage_buffer" -> (,)
     [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
@@ -612,7 +612,8 @@
                              , deviceExtensionMinVersion = 0
                              }
     ]
-  "SPV_KHR_multiview" -> (,) [RequireInstanceVersion $ MAKE_VERSION 1 1 0] [RequireDeviceVersion $ MAKE_VERSION 1 1 0]
+  "SPV_KHR_multiview" ->
+    (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 1 0]
   "SPV_KHR_workgroup_memory_explicit_layout" -> (,)
     [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
@@ -639,16 +640,20 @@
 
 spirvCapabilityRequirements :: ByteString -> ([InstanceRequirement], [DeviceRequirement])
 spirvCapabilityRequirements = \case
-  "Matrix"            -> (,) [RequireInstanceVersion $ MAKE_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_VERSION 1 0 0]
-  "Shader"            -> (,) [RequireInstanceVersion $ MAKE_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_VERSION 1 0 0]
-  "InputAttachment"   -> (,) [RequireInstanceVersion $ MAKE_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_VERSION 1 0 0]
-  "Sampled1D"         -> (,) [RequireInstanceVersion $ MAKE_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_VERSION 1 0 0]
-  "Image1D"           -> (,) [RequireInstanceVersion $ MAKE_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_VERSION 1 0 0]
-  "SampledBuffer"     -> (,) [RequireInstanceVersion $ MAKE_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_VERSION 1 0 0]
-  "ImageBuffer"       -> (,) [RequireInstanceVersion $ MAKE_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_VERSION 1 0 0]
-  "ImageQuery"        -> (,) [RequireInstanceVersion $ MAKE_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_VERSION 1 0 0]
-  "DerivativeControl" -> (,) [RequireInstanceVersion $ MAKE_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_VERSION 1 0 0]
-  "Geometry"          -> (,)
+  "Matrix" -> (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]
+  "Shader" -> (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]
+  "InputAttachment" ->
+    (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]
+  "Sampled1D" -> (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]
+  "Image1D"   -> (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]
+  "SampledBuffer" ->
+    (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]
+  "ImageBuffer" ->
+    (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]
+  "ImageQuery" -> (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]
+  "DerivativeControl" ->
+    (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]
+  "Geometry" -> (,)
     []
     [ RequireDeviceFeature { featureName   = "geometryShader"
                            , checkFeature  = geometryShader :: PhysicalDeviceFeatures -> Bool
@@ -677,7 +682,7 @@
                            }
     ]
   "Int64Atomics" -> (,)
-    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0
+    [ RequireInstanceVersion $ MAKE_API_VERSION 1 2 0
     , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                                , instanceExtensionMinVersion = 0
@@ -688,7 +693,7 @@
       , checkFeature  = shaderBufferInt64Atomics :: PhysicalDeviceVulkan12Features -> Bool
       , enableFeature = \f -> f { shaderBufferInt64Atomics = True } :: PhysicalDeviceVulkan12Features
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME
                              , deviceExtensionMinVersion = 0
@@ -868,7 +873,7 @@
                            }
     ]
   "StorageImageExtendedFormats" ->
-    (,) [RequireInstanceVersion $ MAKE_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_VERSION 1 0 0]
+    (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]
   "InterpolationFunction" -> (,)
     []
     [ RequireDeviceFeature { featureName   = "sampleRateShading"
@@ -900,38 +905,39 @@
                            }
     ]
   "DrawParameters" -> (,)
-    [RequireInstanceVersion $ MAKE_VERSION 1 2 0]
+    [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
     [ RequireDeviceFeature { featureName   = "shaderDrawParameters"
                            , checkFeature  = shaderDrawParameters :: PhysicalDeviceVulkan11Features -> Bool
                            , enableFeature = \f -> f { shaderDrawParameters = True } :: PhysicalDeviceVulkan11Features
                            }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     ]
   "MultiView" -> (,)
-    [RequireInstanceVersion $ MAKE_VERSION 1 2 0]
+    [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
     [ RequireDeviceFeature { featureName   = "multiview"
                            , checkFeature  = multiview :: PhysicalDeviceVulkan11Features -> Bool
                            , enableFeature = \f -> f { multiview = True } :: PhysicalDeviceVulkan11Features
                            }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     ]
-  "DeviceGroup" -> (,) [RequireInstanceVersion $ MAKE_VERSION 1 1 0] [RequireDeviceVersion $ MAKE_VERSION 1 1 0]
+  "DeviceGroup" ->
+    (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 1 0]
   "VariablePointersStorageBuffer" -> (,)
-    [RequireInstanceVersion $ MAKE_VERSION 1 2 0]
+    [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
     [ RequireDeviceFeature
       { featureName   = "variablePointersStorageBuffer"
       , checkFeature  = variablePointersStorageBuffer :: PhysicalDeviceVulkan11Features -> Bool
       , enableFeature = \f -> f { variablePointersStorageBuffer = True } :: PhysicalDeviceVulkan11Features
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     ]
   "VariablePointers" -> (,)
-    [RequireInstanceVersion $ MAKE_VERSION 1 2 0]
+    [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
     [ RequireDeviceFeature { featureName   = "variablePointers"
                            , checkFeature  = variablePointers :: PhysicalDeviceVulkan11Features -> Bool
                            , enableFeature = \f -> f { variablePointers = True } :: PhysicalDeviceVulkan11Features
                            }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     ]
   "ShaderClockKHR" -> (,)
     [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing
@@ -1005,21 +1011,21 @@
                              }
     ]
   "ShaderViewportIndex" -> (,)
-    [RequireInstanceVersion $ MAKE_VERSION 1 2 0]
+    [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
     [ RequireDeviceFeature
       { featureName   = "shaderOutputViewportIndex"
       , checkFeature  = shaderOutputViewportIndex :: PhysicalDeviceVulkan12Features -> Bool
       , enableFeature = \f -> f { shaderOutputViewportIndex = True } :: PhysicalDeviceVulkan12Features
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     ]
   "ShaderLayer" -> (,)
-    [RequireInstanceVersion $ MAKE_VERSION 1 2 0]
+    [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
     [ RequireDeviceFeature { featureName   = "shaderOutputLayer"
                            , checkFeature  = shaderOutputLayer :: PhysicalDeviceVulkan12Features -> Bool
                            , enableFeature = \f -> f { shaderOutputLayer = True } :: PhysicalDeviceVulkan12Features
                            }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     ]
   "ShaderViewportIndexLayerEXT" -> (,)
     []
@@ -1058,110 +1064,110 @@
                              }
     ]
   "StorageBuffer16BitAccess" -> (,)
-    [RequireInstanceVersion $ MAKE_VERSION 1 2 0]
+    [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
     [ RequireDeviceFeature
       { featureName   = "storageBuffer16BitAccess"
       , checkFeature  = storageBuffer16BitAccess :: PhysicalDeviceVulkan11Features -> Bool
       , enableFeature = \f -> f { storageBuffer16BitAccess = True } :: PhysicalDeviceVulkan11Features
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     ]
   "UniformAndStorageBuffer16BitAccess" -> (,)
-    [RequireInstanceVersion $ MAKE_VERSION 1 2 0]
+    [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
     [ RequireDeviceFeature
       { featureName   = "uniformAndStorageBuffer16BitAccess"
       , checkFeature  = uniformAndStorageBuffer16BitAccess :: PhysicalDeviceVulkan11Features -> Bool
       , enableFeature = \f -> f { uniformAndStorageBuffer16BitAccess = True } :: PhysicalDeviceVulkan11Features
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     ]
   "StoragePushConstant16" -> (,)
-    [RequireInstanceVersion $ MAKE_VERSION 1 2 0]
+    [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
     [ RequireDeviceFeature { featureName   = "storagePushConstant16"
                            , checkFeature  = storagePushConstant16 :: PhysicalDeviceVulkan11Features -> Bool
                            , enableFeature = \f -> f { storagePushConstant16 = True } :: PhysicalDeviceVulkan11Features
                            }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     ]
   "StorageInputOutput16" -> (,)
-    [RequireInstanceVersion $ MAKE_VERSION 1 2 0]
+    [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
     [ RequireDeviceFeature { featureName   = "storageInputOutput16"
                            , checkFeature  = storageInputOutput16 :: PhysicalDeviceVulkan11Features -> Bool
                            , enableFeature = \f -> f { storageInputOutput16 = True } :: PhysicalDeviceVulkan11Features
                            }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     ]
   "GroupNonUniform" -> (,)
-    [RequireInstanceVersion $ MAKE_VERSION 1 1 0]
+    [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
     [ RequireDeviceProperty
       { propertyName  = "VkPhysicalDeviceVulkan11Properties"
       , checkProperty = \p ->
         SUBGROUP_FEATURE_BASIC_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 1 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 1 0
     ]
   "GroupNonUniformVote" -> (,)
-    [RequireInstanceVersion $ MAKE_VERSION 1 1 0]
+    [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
     [ RequireDeviceProperty
       { propertyName  = "VkPhysicalDeviceVulkan11Properties"
       , checkProperty = \p ->
         SUBGROUP_FEATURE_VOTE_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 1 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 1 0
     ]
   "GroupNonUniformArithmetic" -> (,)
-    [RequireInstanceVersion $ MAKE_VERSION 1 1 0]
+    [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
     [ RequireDeviceProperty
       { propertyName  = "VkPhysicalDeviceVulkan11Properties"
       , checkProperty = \p ->
         SUBGROUP_FEATURE_ARITHMETIC_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 1 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 1 0
     ]
   "GroupNonUniformBallot" -> (,)
-    [RequireInstanceVersion $ MAKE_VERSION 1 1 0]
+    [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
     [ RequireDeviceProperty
       { propertyName  = "VkPhysicalDeviceVulkan11Properties"
       , checkProperty = \p ->
         SUBGROUP_FEATURE_BALLOT_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 1 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 1 0
     ]
   "GroupNonUniformShuffle" -> (,)
-    [RequireInstanceVersion $ MAKE_VERSION 1 1 0]
+    [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
     [ RequireDeviceProperty
       { propertyName  = "VkPhysicalDeviceVulkan11Properties"
       , checkProperty = \p ->
         SUBGROUP_FEATURE_SHUFFLE_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 1 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 1 0
     ]
   "GroupNonUniformShuffleRelative" -> (,)
-    [RequireInstanceVersion $ MAKE_VERSION 1 1 0]
+    [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
     [ RequireDeviceProperty
       { propertyName  = "VkPhysicalDeviceVulkan11Properties"
       , checkProperty = \p ->
         SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 1 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 1 0
     ]
   "GroupNonUniformClustered" -> (,)
-    [RequireInstanceVersion $ MAKE_VERSION 1 1 0]
+    [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
     [ RequireDeviceProperty
       { propertyName  = "VkPhysicalDeviceVulkan11Properties"
       , checkProperty = \p ->
         SUBGROUP_FEATURE_CLUSTERED_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 1 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 1 0
     ]
   "GroupNonUniformQuad" -> (,)
-    [RequireInstanceVersion $ MAKE_VERSION 1 1 0]
+    [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0]
     [ RequireDeviceProperty
       { propertyName  = "VkPhysicalDeviceVulkan11Properties"
       , checkProperty = \p ->
         SUBGROUP_FEATURE_QUAD_BIT .&&. subgroupSupportedOperations (p :: PhysicalDeviceVulkan11Properties)
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 1 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 1 0
     ]
   "GroupNonUniformPartitionedNV" -> (,)
     []
@@ -1182,9 +1188,10 @@
                              , deviceExtensionMinVersion = 0
                              }
     ]
-  "ShaderNonUniform" -> (,) [RequireInstanceVersion $ MAKE_VERSION 1 2 0] [RequireDeviceVersion $ MAKE_VERSION 1 2 0]
+  "ShaderNonUniform" ->
+    (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 2 0]
   "RuntimeDescriptorArray" -> (,)
-    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0
+    [ RequireInstanceVersion $ MAKE_API_VERSION 1 2 0
     , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                                , instanceExtensionMinVersion = 0
@@ -1194,7 +1201,7 @@
                            , checkFeature  = runtimeDescriptorArray :: PhysicalDeviceVulkan12Features -> Bool
                            , enableFeature = \f -> f { runtimeDescriptorArray = True } :: PhysicalDeviceVulkan12Features
                            }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
                              , deviceExtensionMinVersion = 0
@@ -1205,7 +1212,7 @@
                              }
     ]
   "InputAttachmentArrayDynamicIndexing" -> (,)
-    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0
+    [ RequireInstanceVersion $ MAKE_API_VERSION 1 2 0
     , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                                , instanceExtensionMinVersion = 0
@@ -1216,7 +1223,7 @@
       , checkFeature  = shaderInputAttachmentArrayDynamicIndexing :: PhysicalDeviceVulkan12Features -> Bool
       , enableFeature = \f -> f { shaderInputAttachmentArrayDynamicIndexing = True } :: PhysicalDeviceVulkan12Features
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
                              , deviceExtensionMinVersion = 0
@@ -1227,7 +1234,7 @@
                              }
     ]
   "UniformTexelBufferArrayDynamicIndexing" -> (,)
-    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0
+    [ RequireInstanceVersion $ MAKE_API_VERSION 1 2 0
     , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                                , instanceExtensionMinVersion = 0
@@ -1239,7 +1246,7 @@
       , enableFeature = \f ->
                           f { shaderUniformTexelBufferArrayDynamicIndexing = True } :: PhysicalDeviceVulkan12Features
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
                              , deviceExtensionMinVersion = 0
@@ -1250,7 +1257,7 @@
                              }
     ]
   "StorageTexelBufferArrayDynamicIndexing" -> (,)
-    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0
+    [ RequireInstanceVersion $ MAKE_API_VERSION 1 2 0
     , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                                , instanceExtensionMinVersion = 0
@@ -1262,7 +1269,7 @@
       , enableFeature = \f ->
                           f { shaderStorageTexelBufferArrayDynamicIndexing = True } :: PhysicalDeviceVulkan12Features
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
                              , deviceExtensionMinVersion = 0
@@ -1273,7 +1280,7 @@
                              }
     ]
   "UniformBufferArrayNonUniformIndexing" -> (,)
-    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0
+    [ RequireInstanceVersion $ MAKE_API_VERSION 1 2 0
     , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                                , instanceExtensionMinVersion = 0
@@ -1284,7 +1291,7 @@
       , checkFeature  = shaderUniformBufferArrayNonUniformIndexing :: PhysicalDeviceVulkan12Features -> Bool
       , enableFeature = \f -> f { shaderUniformBufferArrayNonUniformIndexing = True } :: PhysicalDeviceVulkan12Features
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
                              , deviceExtensionMinVersion = 0
@@ -1295,7 +1302,7 @@
                              }
     ]
   "SampledImageArrayNonUniformIndexing" -> (,)
-    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0
+    [ RequireInstanceVersion $ MAKE_API_VERSION 1 2 0
     , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                                , instanceExtensionMinVersion = 0
@@ -1306,7 +1313,7 @@
       , checkFeature  = shaderSampledImageArrayNonUniformIndexing :: PhysicalDeviceVulkan12Features -> Bool
       , enableFeature = \f -> f { shaderSampledImageArrayNonUniformIndexing = True } :: PhysicalDeviceVulkan12Features
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
                              , deviceExtensionMinVersion = 0
@@ -1317,7 +1324,7 @@
                              }
     ]
   "StorageBufferArrayNonUniformIndexing" -> (,)
-    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0
+    [ RequireInstanceVersion $ MAKE_API_VERSION 1 2 0
     , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                                , instanceExtensionMinVersion = 0
@@ -1328,7 +1335,7 @@
       , checkFeature  = shaderStorageBufferArrayNonUniformIndexing :: PhysicalDeviceVulkan12Features -> Bool
       , enableFeature = \f -> f { shaderStorageBufferArrayNonUniformIndexing = True } :: PhysicalDeviceVulkan12Features
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
                              , deviceExtensionMinVersion = 0
@@ -1339,7 +1346,7 @@
                              }
     ]
   "StorageImageArrayNonUniformIndexing" -> (,)
-    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0
+    [ RequireInstanceVersion $ MAKE_API_VERSION 1 2 0
     , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                                , instanceExtensionMinVersion = 0
@@ -1350,7 +1357,7 @@
       , checkFeature  = shaderStorageImageArrayNonUniformIndexing :: PhysicalDeviceVulkan12Features -> Bool
       , enableFeature = \f -> f { shaderStorageImageArrayNonUniformIndexing = True } :: PhysicalDeviceVulkan12Features
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
                              , deviceExtensionMinVersion = 0
@@ -1361,7 +1368,7 @@
                              }
     ]
   "InputAttachmentArrayNonUniformIndexing" -> (,)
-    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0
+    [ RequireInstanceVersion $ MAKE_API_VERSION 1 2 0
     , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                                , instanceExtensionMinVersion = 0
@@ -1373,7 +1380,7 @@
       , enableFeature = \f ->
                           f { shaderInputAttachmentArrayNonUniformIndexing = True } :: PhysicalDeviceVulkan12Features
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
                              , deviceExtensionMinVersion = 0
@@ -1384,7 +1391,7 @@
                              }
     ]
   "UniformTexelBufferArrayNonUniformIndexing" -> (,)
-    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0
+    [ RequireInstanceVersion $ MAKE_API_VERSION 1 2 0
     , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                                , instanceExtensionMinVersion = 0
@@ -1396,7 +1403,7 @@
       , enableFeature = \f ->
                           f { shaderUniformTexelBufferArrayNonUniformIndexing = True } :: PhysicalDeviceVulkan12Features
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
                              , deviceExtensionMinVersion = 0
@@ -1407,7 +1414,7 @@
                              }
     ]
   "StorageTexelBufferArrayNonUniformIndexing" -> (,)
-    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0
+    [ RequireInstanceVersion $ MAKE_API_VERSION 1 2 0
     , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                                , instanceExtensionMinVersion = 0
@@ -1419,7 +1426,7 @@
       , enableFeature = \f ->
                           f { shaderStorageTexelBufferArrayNonUniformIndexing = True } :: PhysicalDeviceVulkan12Features
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
                              , deviceExtensionMinVersion = 0
@@ -1430,7 +1437,7 @@
                              }
     ]
   "Float16" -> (,)
-    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0
+    [ RequireInstanceVersion $ MAKE_API_VERSION 1 2 0
     , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                                , instanceExtensionMinVersion = 0
@@ -1440,14 +1447,14 @@
                            , checkFeature  = shaderFloat16 :: PhysicalDeviceVulkan12Features -> Bool
                            , enableFeature = \f -> f { shaderFloat16 = True } :: PhysicalDeviceVulkan12Features
                            }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME
                              , deviceExtensionMinVersion = 0
                              }
     ]
   "Int8" -> (,)
-    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0
+    [ RequireInstanceVersion $ MAKE_API_VERSION 1 2 0
     , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                                , instanceExtensionMinVersion = 0
@@ -1457,14 +1464,14 @@
                            , checkFeature  = shaderInt8 :: PhysicalDeviceVulkan12Features -> Bool
                            , enableFeature = \f -> f { shaderInt8 = True } :: PhysicalDeviceVulkan12Features
                            }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME
                              , deviceExtensionMinVersion = 0
                              }
     ]
   "StorageBuffer8BitAccess" -> (,)
-    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0
+    [ RequireInstanceVersion $ MAKE_API_VERSION 1 2 0
     , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                                , instanceExtensionMinVersion = 0
@@ -1475,7 +1482,7 @@
       , checkFeature  = storageBuffer8BitAccess :: PhysicalDeviceVulkan12Features -> Bool
       , enableFeature = \f -> f { storageBuffer8BitAccess = True } :: PhysicalDeviceVulkan12Features
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = KHR_8BIT_STORAGE_EXTENSION_NAME
                              , deviceExtensionMinVersion = 0
@@ -1486,7 +1493,7 @@
                              }
     ]
   "UniformAndStorageBuffer8BitAccess" -> (,)
-    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0
+    [ RequireInstanceVersion $ MAKE_API_VERSION 1 2 0
     , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                                , instanceExtensionMinVersion = 0
@@ -1497,7 +1504,7 @@
       , checkFeature  = uniformAndStorageBuffer8BitAccess :: PhysicalDeviceVulkan12Features -> Bool
       , enableFeature = \f -> f { uniformAndStorageBuffer8BitAccess = True } :: PhysicalDeviceVulkan12Features
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = KHR_8BIT_STORAGE_EXTENSION_NAME
                              , deviceExtensionMinVersion = 0
@@ -1508,7 +1515,7 @@
                              }
     ]
   "StoragePushConstant8" -> (,)
-    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0
+    [ RequireInstanceVersion $ MAKE_API_VERSION 1 2 0
     , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                                , instanceExtensionMinVersion = 0
@@ -1518,7 +1525,7 @@
                            , checkFeature  = storagePushConstant8 :: PhysicalDeviceVulkan12Features -> Bool
                            , enableFeature = \f -> f { storagePushConstant8 = True } :: PhysicalDeviceVulkan12Features
                            }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = KHR_8BIT_STORAGE_EXTENSION_NAME
                              , deviceExtensionMinVersion = 0
@@ -1529,32 +1536,32 @@
                              }
     ]
   "VulkanMemoryModel" -> (,)
-    [RequireInstanceVersion $ MAKE_VERSION 1 2 0]
+    [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
     [ RequireDeviceFeature { featureName   = "vulkanMemoryModel"
                            , checkFeature  = vulkanMemoryModel :: PhysicalDeviceVulkan12Features -> Bool
                            , enableFeature = \f -> f { vulkanMemoryModel = True } :: PhysicalDeviceVulkan12Features
                            }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME
                              , deviceExtensionMinVersion = 0
                              }
     ]
   "VulkanMemoryModelDeviceScope" -> (,)
-    [RequireInstanceVersion $ MAKE_VERSION 1 2 0]
+    [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
     [ RequireDeviceFeature
       { featureName   = "vulkanMemoryModelDeviceScope"
       , checkFeature  = vulkanMemoryModelDeviceScope :: PhysicalDeviceVulkan12Features -> Bool
       , enableFeature = \f -> f { vulkanMemoryModelDeviceScope = True } :: PhysicalDeviceVulkan12Features
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME
                              , deviceExtensionMinVersion = 0
                              }
     ]
   "DenormPreserve" -> (,)
-    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0
+    [ RequireInstanceVersion $ MAKE_API_VERSION 1 2 0
     , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                                , instanceExtensionMinVersion = 0
@@ -1563,14 +1570,14 @@
     [ RequireDeviceProperty { propertyName  = "VkPhysicalDeviceVulkan12Properties"
                             , checkProperty = \p -> shaderDenormPreserveFloat16 (p :: PhysicalDeviceVulkan12Properties)
                             }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME
                              , deviceExtensionMinVersion = 0
                              }
     ]
   "DenormFlushToZero" -> (,)
-    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0
+    [ RequireInstanceVersion $ MAKE_API_VERSION 1 2 0
     , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                                , instanceExtensionMinVersion = 0
@@ -1580,14 +1587,14 @@
       { propertyName  = "VkPhysicalDeviceVulkan12Properties"
       , checkProperty = \p -> shaderDenormFlushToZeroFloat16 (p :: PhysicalDeviceVulkan12Properties)
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME
                              , deviceExtensionMinVersion = 0
                              }
     ]
   "SignedZeroInfNanPreserve" -> (,)
-    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0
+    [ RequireInstanceVersion $ MAKE_API_VERSION 1 2 0
     , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                                , instanceExtensionMinVersion = 0
@@ -1597,14 +1604,14 @@
       { propertyName  = "VkPhysicalDeviceVulkan12Properties"
       , checkProperty = \p -> shaderSignedZeroInfNanPreserveFloat16 (p :: PhysicalDeviceVulkan12Properties)
       }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME
                              , deviceExtensionMinVersion = 0
                              }
     ]
   "RoundingModeRTE" -> (,)
-    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0
+    [ RequireInstanceVersion $ MAKE_API_VERSION 1 2 0
     , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                                , instanceExtensionMinVersion = 0
@@ -1613,14 +1620,14 @@
     [ RequireDeviceProperty { propertyName  = "VkPhysicalDeviceVulkan12Properties"
                             , checkProperty = \p -> shaderRoundingModeRTEFloat16 (p :: PhysicalDeviceVulkan12Properties)
                             }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME
                              , deviceExtensionMinVersion = 0
                              }
     ]
   "RoundingModeRTZ" -> (,)
-    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0
+    [ RequireInstanceVersion $ MAKE_API_VERSION 1 2 0
     , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                                , instanceExtensionMinVersion = 0
@@ -1629,7 +1636,7 @@
     [ RequireDeviceProperty { propertyName  = "VkPhysicalDeviceVulkan12Properties"
                             , checkProperty = \p -> shaderRoundingModeRTZFloat16 (p :: PhysicalDeviceVulkan12Properties)
                             }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME
                              , deviceExtensionMinVersion = 0
@@ -1924,7 +1931,7 @@
                              }
     ]
   "PhysicalStorageBufferAddresses" -> (,)
-    [ RequireInstanceVersion $ MAKE_VERSION 1 2 0
+    [ RequireInstanceVersion $ MAKE_API_VERSION 1 2 0
     , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                                , instanceExtensionMinVersion = 0
@@ -1934,7 +1941,7 @@
                            , checkFeature  = bufferDeviceAddress :: PhysicalDeviceVulkan12Features -> Bool
                            , enableFeature = \f -> f { bufferDeviceAddress = True } :: PhysicalDeviceVulkan12Features
                            }
-    , RequireDeviceVersion $ MAKE_VERSION 1 2 0
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 2 0
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = KHR_BUFFER_DEVICE_ADDRESS_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
@@ -2,10 +2,14 @@
 -- No documentation found for Chapter "Version"
 module Vulkan.Version  ( pattern HEADER_VERSION
                        , pattern HEADER_VERSION_COMPLETE
+                       , pattern MAKE_API_VERSION
                        , pattern MAKE_VERSION
                        , _VERSION_MAJOR
                        , _VERSION_MINOR
                        , _VERSION_PATCH
+                       , _API_VERSION_MAJOR
+                       , _API_VERSION_MINOR
+                       , _API_VERSION_PATCH
                        ) where
 
 import Data.Bits ((.&.))
@@ -15,26 +19,44 @@
 import Data.Word (Word32)
 
 pattern HEADER_VERSION :: Word32
-pattern HEADER_VERSION = 174
+pattern HEADER_VERSION = 179
 
 
 pattern HEADER_VERSION_COMPLETE :: Word32
-pattern HEADER_VERSION_COMPLETE = MAKE_VERSION 1 2 174
+pattern HEADER_VERSION_COMPLETE = MAKE_API_VERSION 1 2 179
 
 
-pattern MAKE_VERSION :: Word32 -> Word32 -> Word32 -> Word32
-pattern MAKE_VERSION major minor patch <-
+pattern MAKE_API_VERSION :: Word32 -> Word32 -> Word32 -> Word32
+pattern MAKE_API_VERSION major minor patch <-
   (\v -> (_VERSION_MAJOR v, _VERSION_MINOR v, _VERSION_PATCH v) -> (major, minor, patch))
-  where MAKE_VERSION major minor patch = major `shiftL` 22 .|. minor `shiftL` 12 .|. patch
+  where MAKE_API_VERSION major minor patch = major `shiftL` 22 .|. minor `shiftL` 12 .|. patch
 
+{-# complete MAKE_API_VERSION #-}
+
+{-# deprecated MAKE_VERSION "This pattern is deprecated. MAKE_API_VERSION should be used instead." #-}
+pattern MAKE_VERSION :: Word32 -> Word32 -> Word32 -> Word32
+pattern MAKE_VERSION major minor patch = MAKE_API_VERSION major minor patch
+
 {-# complete MAKE_VERSION #-}
 
+{-# deprecated _VERSION_MAJOR "This function is deprecated. _API_VERSION_MAJOR should be used instead." #-}
 _VERSION_MAJOR :: Word32 -> Word32
-_VERSION_MAJOR v = v `shiftR` 22
+_VERSION_MAJOR = _API_VERSION_MAJOR
 
+{-# deprecated _VERSION_MINOR "This function is deprecated. _API_VERSION_MINOR should be used instead." #-}
 _VERSION_MINOR :: Word32 -> Word32
-_VERSION_MINOR v = v `shiftR` 12 .&. 0x3ff
+_VERSION_MINOR = _API_VERSION_MINOR
 
+{-# deprecated _VERSION_PATCH "This function is deprecated. _API_VERSION_PATCH should be used instead." #-}
 _VERSION_PATCH :: Word32 -> Word32
-_VERSION_PATCH v = v .&. 0xfff
+_VERSION_PATCH = _API_VERSION_PATCH
+
+_API_VERSION_MAJOR :: Word32 -> Word32
+_API_VERSION_MAJOR v = v `shiftR` 22
+
+_API_VERSION_MINOR :: Word32 -> Word32
+_API_VERSION_MINOR v = v `shiftR` 12 .&. 0x3ff
+
+_API_VERSION_PATCH :: Word32 -> Word32
+_API_VERSION_PATCH v = v .&. 0xfff
 
diff --git a/vulkan.cabal b/vulkan.cabal
--- a/vulkan.cabal
+++ b/vulkan.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           vulkan
-version:        3.10.1
+version:        3.10.2
 synopsis:       Bindings to the Vulkan graphics API.
 category:       Graphics
 homepage:       https://github.com/expipiplus1/vulkan#readme
@@ -281,6 +281,7 @@
       Vulkan.Extensions.VK_EXT_blend_operation_advanced
       Vulkan.Extensions.VK_EXT_buffer_device_address
       Vulkan.Extensions.VK_EXT_calibrated_timestamps
+      Vulkan.Extensions.VK_EXT_color_write_enable
       Vulkan.Extensions.VK_EXT_conditional_rendering
       Vulkan.Extensions.VK_EXT_conservative_rasterization
       Vulkan.Extensions.VK_EXT_custom_border_color
@@ -297,6 +298,7 @@
       Vulkan.Extensions.VK_EXT_display_control
       Vulkan.Extensions.VK_EXT_display_surface_counter
       Vulkan.Extensions.VK_EXT_extended_dynamic_state
+      Vulkan.Extensions.VK_EXT_extended_dynamic_state2
       Vulkan.Extensions.VK_EXT_external_memory_dma_buf
       Vulkan.Extensions.VK_EXT_external_memory_host
       Vulkan.Extensions.VK_EXT_filter_cubic
@@ -321,6 +323,7 @@
       Vulkan.Extensions.VK_EXT_pipeline_creation_feedback
       Vulkan.Extensions.VK_EXT_post_depth_coverage
       Vulkan.Extensions.VK_EXT_private_data
+      Vulkan.Extensions.VK_EXT_provoking_vertex
       Vulkan.Extensions.VK_EXT_queue_family_foreign
       Vulkan.Extensions.VK_EXT_robustness2
       Vulkan.Extensions.VK_EXT_sample_locations
@@ -344,6 +347,8 @@
       Vulkan.Extensions.VK_EXT_validation_features
       Vulkan.Extensions.VK_EXT_validation_flags
       Vulkan.Extensions.VK_EXT_vertex_attribute_divisor
+      Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state
+      Vulkan.Extensions.VK_EXT_ycbcr_2plane_444_formats
       Vulkan.Extensions.VK_EXT_ycbcr_image_arrays
       Vulkan.Extensions.VK_FUCHSIA_external_memory
       Vulkan.Extensions.VK_FUCHSIA_external_semaphore
@@ -462,6 +467,7 @@
       Vulkan.Extensions.VK_NV_framebuffer_mixed_samples
       Vulkan.Extensions.VK_NV_geometry_shader_passthrough
       Vulkan.Extensions.VK_NV_glsl_shader
+      Vulkan.Extensions.VK_NV_inherited_viewport_scissor
       Vulkan.Extensions.VK_NV_mesh_shader
       Vulkan.Extensions.VK_NV_ray_tracing
       Vulkan.Extensions.VK_NV_representative_fragment_test
@@ -474,6 +480,7 @@
       Vulkan.Extensions.VK_NV_viewport_array2
       Vulkan.Extensions.VK_NV_viewport_swizzle
       Vulkan.Extensions.VK_NV_win32_keyed_mutex
+      Vulkan.Extensions.VK_NVX_binary_import
       Vulkan.Extensions.VK_NVX_image_view_handle
       Vulkan.Extensions.VK_NVX_multiview_per_view_attributes
       Vulkan.Extensions.VK_QCOM_render_pass_shader_resolve
