diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -2,6 +2,9 @@
 
 ## WIP
 
+## [3.11.1] - 2021-06-28
+- Bump API version to v1.2.183
+
 ## [3.11.0.2] - 2021-06-26
 - Tweak cabal file to please `cabal check`
 
diff --git a/package.yaml b/package.yaml
--- a/package.yaml
+++ b/package.yaml
@@ -1,5 +1,5 @@
 name: vulkan
-version: "3.11.0.2"
+version: "3.11.1"
 synopsis: Bindings to the Vulkan graphics API.
 description: Please see [the readme](https://github.com/expipiplus1/vulkan/#readme)
 category: Graphics
diff --git a/src/Vulkan/CStruct/Extends.hs b/src/Vulkan/CStruct/Extends.hs
--- a/src/Vulkan/CStruct/Extends.hs
+++ b/src/Vulkan/CStruct/Extends.hs
@@ -828,6 +828,7 @@
   Extends DeviceCreateInfo PhysicalDeviceShaderDrawParametersFeatures = ()
   Extends DeviceCreateInfo PhysicalDeviceShaderFloat16Int8Features = ()
   Extends DeviceCreateInfo PhysicalDeviceHostQueryResetFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceGlobalPriorityQueryFeaturesEXT = ()
   Extends DeviceCreateInfo PhysicalDeviceDeviceMemoryReportFeaturesEXT = ()
   Extends DeviceCreateInfo DeviceDeviceMemoryReportCreateInfoEXT = ()
   Extends DeviceCreateInfo PhysicalDeviceDescriptorIndexingFeatures = ()
@@ -1049,6 +1050,7 @@
   Extends PhysicalDeviceFeatures2 PhysicalDeviceInheritedViewportScissorFeaturesNV = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceProvokingVertexFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceRayTracingMotionBlurFeaturesNV = ()
   Extends PhysicalDeviceImageFormatInfo2 PhysicalDeviceExternalImageFormatInfo = ()
   Extends PhysicalDeviceImageFormatInfo2 ImageFormatListCreateInfo = ()
   Extends PhysicalDeviceImageFormatInfo2 PhysicalDeviceImageDrmFormatModifierInfoEXT = ()
@@ -1104,7 +1106,6 @@
   Extends PhysicalDeviceProperties2 PhysicalDeviceFragmentShadingRateEnumsPropertiesNV = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceProvokingVertexPropertiesEXT = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceDrmPropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceRayTracingMotionBlurFeaturesNV = ()
   Extends PhysicalDeviceSurfaceInfo2KHR SurfaceFullScreenExclusiveInfoEXT = ()
   Extends PhysicalDeviceSurfaceInfo2KHR SurfaceFullScreenExclusiveWin32InfoEXT = ()
   Extends PipelineColorBlendStateCreateInfo PipelineColorBlendAdvancedStateCreateInfoEXT = ()
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
@@ -537,6 +537,9 @@
 --
 -- -   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
+--
 -- == Return Codes
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
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
@@ -7106,6 +7106,9 @@
 -- -   #VUID-vkCmdClearColorImage-image-00007# @image@ /must/ not have a
 --     compressed or depth\/stencil format
 --
+-- -   #VUID-vkCmdClearColorImage-pColor-04961# @pColor@ /must/ be a valid
+--     pointer to a 'ClearColorValue' union
+--
 -- -   #VUID-vkCmdClearColorImage-commandBuffer-01805# If @commandBuffer@
 --     is an unprotected command buffer, then @image@ /must/ not be a
 --     protected image
@@ -11448,6 +11451,10 @@
 --     that specifies a @loadOp@ (or @stencilLoadOp@, if the attachment has
 --     a depth\/stencil format) of
 --     'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR'
+--
+-- -   #VUID-VkRenderPassBeginInfo-clearValueCount-04962# If
+--     @clearValueCount@ is not @0@, @pClearValues@ /must/ be a valid
+--     pointer to an array of @clearValueCount@ 'ClearValue' unions
 --
 -- -   #VUID-VkRenderPassBeginInfo-renderPass-00904# @renderPass@ /must/ be
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>
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
@@ -120,6 +120,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_shader_interlock (PhysicalDeviceFragmentShaderInterlockFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_fragment_shading_rate_enums (PhysicalDeviceFragmentShadingRateEnumsFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shading_rate (PhysicalDeviceFragmentShadingRateFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_global_priority_query (PhysicalDeviceGlobalPriorityQueryFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset (PhysicalDeviceHostQueryResetFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_robustness (PhysicalDeviceImageRobustnessFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer (PhysicalDeviceImagelessFramebufferFeatures)
@@ -745,6 +746,7 @@
 --     'Vulkan.Extensions.VK_EXT_fragment_shader_interlock.PhysicalDeviceFragmentShaderInterlockFeaturesEXT',
 --     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PhysicalDeviceFragmentShadingRateEnumsFeaturesNV',
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PhysicalDeviceFragmentShadingRateFeaturesKHR',
+--     'Vulkan.Extensions.VK_EXT_global_priority_query.PhysicalDeviceGlobalPriorityQueryFeaturesEXT',
 --     'Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset.PhysicalDeviceHostQueryResetFeatures',
 --     'Vulkan.Extensions.VK_EXT_image_robustness.PhysicalDeviceImageRobustnessFeaturesEXT',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.PhysicalDeviceImagelessFramebufferFeatures',
@@ -962,6 +964,7 @@
     | Just Refl <- eqT @e @PhysicalDeviceDescriptorIndexingFeatures = Just f
     | Just Refl <- eqT @e @DeviceDeviceMemoryReportCreateInfoEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDeviceMemoryReportFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceGlobalPriorityQueryFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceHostQueryResetFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderFloat16Int8Features = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderDrawParametersFeatures = Just f
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
@@ -149,7 +149,7 @@
 --     pipelines.
 --
 -- -   'PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV' specifies that the
---     pipeline is allowed to use OpTraceRaysMotionNV.
+--     pipeline is allowed to use OpTraceRayMotionNV.
 --
 -- It is valid to set both 'PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT' and
 -- 'PIPELINE_CREATE_DERIVATIVE_BIT'. This allows a pipeline to be both a
diff --git a/src/Vulkan/Core10/Enums/QueryPipelineStatisticFlagBits.hs b/src/Vulkan/Core10/Enums/QueryPipelineStatisticFlagBits.hs
--- a/src/Vulkan/Core10/Enums/QueryPipelineStatisticFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/QueryPipelineStatisticFlagBits.hs
@@ -46,9 +46,10 @@
 -- multiple times, affecting some of the counts.
 --
 -- If a pipeline has @rasterizerDiscardEnable@ enabled, implementations
--- /may/ discard primitives after the final vertex processing stage. As a
--- result, if @rasterizerDiscardEnable@ is enabled, the clipping input and
--- output primitives counters /may/ not be incremented.
+-- /may/ discard primitives after the final
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>.
+-- As a result, if @rasterizerDiscardEnable@ is enabled, the clipping input
+-- and output primitives counters /may/ not be incremented.
 --
 -- When a pipeline statistics query finishes, the result for that query is
 -- marked as available. The application /can/ copy the result to a buffer
diff --git a/src/Vulkan/Core10/Enums/SubpassDescriptionFlagBits.hs b/src/Vulkan/Core10/Enums/SubpassDescriptionFlagBits.hs
--- a/src/Vulkan/Core10/Enums/SubpassDescriptionFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/SubpassDescriptionFlagBits.hs
@@ -57,10 +57,11 @@
 pattern SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = SubpassDescriptionFlagBits 0x00000002
 -- | 'SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX' specifies that shaders
 -- compiled for this subpass write the attributes for all views in a single
--- invocation of each vertex processing stage. All pipelines compiled
--- against a subpass that includes this bit /must/ write per-view
--- attributes to the @*PerViewNV[]@ shader outputs, in addition to the
--- non-per-view (e.g. @Position@) outputs.
+-- invocation of each
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>.
+-- All pipelines compiled against a subpass that includes this bit /must/
+-- write per-view attributes to the @*PerViewNV[]@ shader outputs, in
+-- addition to the non-per-view (e.g. @Position@) outputs.
 pattern SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX      = SubpassDescriptionFlagBits 0x00000001
 
 conNameSubpassDescriptionFlagBits :: String
diff --git a/src/Vulkan/Core10/Event.hs b/src/Vulkan/Core10/Event.hs
--- a/src/Vulkan/Core10/Event.hs
+++ b/src/Vulkan/Core10/Event.hs
@@ -409,15 +409,12 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkResetEvent-event-03821# There /must/ be an execution
---     dependency between
---     'Vulkan.Core10.CommandBufferBuilding.cmdResetEvent' and the
---     execution of any 'Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents'
---     that includes @event@ in its @pEvents@ parameter
+--     dependency between 'resetEvent' and the execution of any
+--     'Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents' that includes
+--     @event@ in its @pEvents@ parameter
 --
 -- -   #VUID-vkResetEvent-event-03822# There /must/ be an execution
---     dependency between
---     'Vulkan.Core10.CommandBufferBuilding.cmdResetEvent' and the
---     execution of any
+--     dependency between 'resetEvent' and the execution of any
 --     'Vulkan.Extensions.VK_KHR_synchronization2.cmdWaitEvents2KHR' that
 --     includes @event@ in its @pEvents@ parameter
 --
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
@@ -1314,9 +1314,9 @@
     -- @colorAttachmentCount@ 'AttachmentReference' structures defining the
     -- resolve attachments for this subpass and their layouts.
     resolveAttachments :: Vector AttachmentReference
-  , -- | @pDepthStencilAttachment@ is a pointer to an array of
-    -- 'AttachmentReference' structures specifying the depth\/stencil
-    -- attachment for this subpass and its layout.
+  , -- | @pDepthStencilAttachment@ is a pointer to a 'AttachmentReference'
+    -- structure 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
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
@@ -643,8 +643,8 @@
 -- also adjust the @y@ value to point to the lower left corner of the
 -- viewport instead of the upper left corner. Using the negative @height@
 -- allows the application to avoid having to negate the y component of the
--- @Position@ output from the last vertex processing stage in shaders that
--- also target other graphics APIs.
+-- @Position@ output from the last
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>.
 --
 -- The width and height of the
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxViewportDimensions implementation-dependent maximum viewport dimensions>
@@ -1004,14 +1004,16 @@
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxGeometryShaderInvocations@
 --
 -- -   #VUID-VkPipelineShaderStageCreateInfo-stage-02596# If @stage@ is a
---     vertex processing stage, and the identified entry point writes to
---     @Layer@ for any primitive, it /must/ write the same value to @Layer@
---     for all vertices of a given primitive
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>,
+--     and the identified entry point writes to @Layer@ for any primitive,
+--     it /must/ write the same value to @Layer@ for all vertices of a
+--     given primitive
 --
 -- -   #VUID-VkPipelineShaderStageCreateInfo-stage-02597# If @stage@ is a
---     vertex processing stage, and the identified entry point writes to
---     @ViewportIndex@ for any primitive, it /must/ write the same value to
---     @ViewportIndex@ for all vertices of a given primitive
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>,
+--     and the identified entry point writes to @ViewportIndex@ for any
+--     primitive, it /must/ write the same value to @ViewportIndex@ for all
+--     vertices of a given primitive
 --
 -- -   #VUID-VkPipelineShaderStageCreateInfo-stage-00718# If @stage@ is
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',
@@ -3412,9 +3414,20 @@
 --
 -- Pre-rasterization shader state is defined by:
 --
--- -   'PipelineShaderStageCreateInfo' entries for each vertex processing
---     shader stage used
+-- -   'PipelineShaderStageCreateInfo' entries for:
 --
+--     -   Vertex shaders
+--
+--     -   Tessellation control shaders
+--
+--     -   Tessellation evaluation shaders
+--
+--     -   Geometry shaders
+--
+--     -   Task shaders
+--
+--     -   Mesh shaders
+--
 -- -   Within the 'Vulkan.Core10.Handles.PipelineLayout', all bindings that
 --     affect the specified shader stages
 --
@@ -3653,9 +3666,10 @@
 --     <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
+--     the fragment shader and last
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization 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
 --
@@ -4019,7 +4033,8 @@
 --     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
+--     /must/ be the last
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02319# If the
 --     pipeline is being created with
@@ -4046,8 +4061,10 @@
 -- -   #VUID-VkGraphicsPipelineCreateInfo-geometryStreams-02321# 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 last vertex processing stage is a geometry shader, and that
---     geometry shader uses the @GeometryStreams@ capability, then
+--     and the last
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader 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
 --
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
@@ -686,6 +686,7 @@
   getNext PhysicalDeviceFeatures2{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends PhysicalDeviceFeatures2 e => b) -> Maybe b
   extends _ f
+    | Just Refl <- eqT @e @PhysicalDeviceRayTracingMotionBlurFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceProvokingVertexFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceInheritedViewportScissorFeaturesNV = Just f
@@ -856,7 +857,6 @@
 --     'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryProperties',
 --     'Vulkan.Extensions.VK_EXT_provoking_vertex.PhysicalDeviceProvokingVertexPropertiesEXT',
 --     'Vulkan.Extensions.VK_KHR_push_descriptor.PhysicalDevicePushDescriptorPropertiesKHR',
---     'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.PhysicalDeviceRayTracingMotionBlurFeaturesNV',
 --     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.PhysicalDeviceRayTracingPipelinePropertiesKHR',
 --     'Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV',
 --     'Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2PropertiesEXT',
@@ -907,7 +907,6 @@
   getNext PhysicalDeviceProperties2{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends PhysicalDeviceProperties2 e => b) -> Maybe b
   extends _ f
-    | Just Refl <- eqT @e @PhysicalDeviceRayTracingMotionBlurFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDrmPropertiesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceProvokingVertexPropertiesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFragmentShadingRateEnumsPropertiesNV = Just f
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
@@ -63,7 +63,7 @@
 --
 -- @subpass@ and @inputAttachmentIndex@ index into the render pass as:
 --
--- > pname:pCreateInfo->pSubpasses[subpass].pInputAttachments[inputAttachmentIndex]
+-- > pCreateInfo->pSubpasses[subpass].pInputAttachments[inputAttachmentIndex]
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_global_priority_query.hs b/src/Vulkan/Extensions/VK_EXT_global_priority_query.hs
--- a/src/Vulkan/Extensions/VK_EXT_global_priority_query.hs
+++ b/src/Vulkan/Extensions/VK_EXT_global_priority_query.hs
@@ -56,7 +56,8 @@
 -- == New Structures
 --
 -- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2':
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
 --
 --     -   'PhysicalDeviceGlobalPriorityQueryFeaturesEXT'
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_global_priority_query.hs-boot b/src/Vulkan/Extensions/VK_EXT_global_priority_query.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_global_priority_query.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_global_priority_query.hs-boot
@@ -56,7 +56,8 @@
 -- == New Structures
 --
 -- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2':
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
 --
 --     -   'PhysicalDeviceGlobalPriorityQueryFeaturesEXT'
 --
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
@@ -205,9 +205,11 @@
 -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'.
 -- A query pool created with this type will capture 2 integers -
 -- numPrimitivesWritten and numPrimitivesNeeded - for the specified vertex
--- stream output from the last vertex processing stage. The vertex stream
--- output queried is zero by default, but can be specified with the new
--- 'cmdBeginQueryIndexedEXT' and 'cmdEndQueryIndexedEXT' commands.
+-- stream output from the last
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>.
+-- The vertex stream output queried is zero by default, but can be
+-- specified with the new 'cmdBeginQueryIndexedEXT' and
+-- 'cmdEndQueryIndexedEXT' commands.
 --
 -- == Version History
 --
@@ -543,9 +545,10 @@
 --     with a @usage@ value containing
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT'
 --
--- -   #VUID-vkCmdBeginTransformFeedbackEXT-None-04128# The last vertex
---     processing stage of the bound graphics pipeline /must/ have been
---     declared with the @Xfb@ execution mode
+-- -   #VUID-vkCmdBeginTransformFeedbackEXT-None-04128# The last
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>
+--     of the bound graphics pipeline /must/ have been declared with the
+--     @Xfb@ execution mode
 --
 -- -   #VUID-vkCmdBeginTransformFeedbackEXT-None-02373# Transform feedback
 --     /must/ not be made active in a render pass instance with multiview
@@ -1914,7 +1917,8 @@
     maxTransformFeedbackStreams :: Word32
   , -- | #limits-maxTransformFeedbackBuffers# @maxTransformFeedbackBuffers@ is
     -- the maximum number of transform feedback buffers that can be bound for
-    -- capturing shader outputs from the last vertex processing stage.
+    -- capturing shader outputs from the last
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>.
     maxTransformFeedbackBuffers :: Word32
   , -- | #limits-maxTransformFeedbackBufferSize# @maxTransformFeedbackBufferSize@
     -- is the maximum size that can be specified when binding a buffer for
diff --git a/src/Vulkan/Extensions/VK_EXT_transform_feedback.hs-boot b/src/Vulkan/Extensions/VK_EXT_transform_feedback.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_transform_feedback.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_transform_feedback.hs-boot
@@ -205,9 +205,11 @@
 -- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'.
 -- A query pool created with this type will capture 2 integers -
 -- numPrimitivesWritten and numPrimitivesNeeded - for the specified vertex
--- stream output from the last vertex processing stage. The vertex stream
--- output queried is zero by default, but can be specified with the new
--- 'cmdBeginQueryIndexedEXT' and 'cmdEndQueryIndexedEXT' commands.
+-- stream output from the last
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>.
+-- The vertex stream output queried is zero by default, but can be
+-- specified with the new 'cmdBeginQueryIndexedEXT' and
+-- 'cmdEndQueryIndexedEXT' commands.
 --
 -- == Version History
 --
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
@@ -2205,6 +2205,10 @@
 --     sum of @query@ plus @accelerationStructureCount@ /must/ be less than
 --     or equal to the number of queries in @queryPool@
 --
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-04964#
+--     All acceleration structures in @pAccelerationStructures@ /must/ have
+--     been built prior to the execution of this command
+--
 -- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructures-03431#
 --     All acceleration structures in @pAccelerationStructures@ /must/ have
 --     been built with
@@ -2326,6 +2330,10 @@
 --
 -- == Valid Usage
 --
+-- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-04964#
+--     All acceleration structures in @pAccelerationStructures@ /must/ have
+--     been built prior to the execution of this command
+--
 -- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructures-03431#
 --     All acceleration structures in @pAccelerationStructures@ /must/ have
 --     been built with
@@ -6287,6 +6295,10 @@
 --     be 'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR' or
 --     'COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR'
 --
+-- -   #VUID-VkCopyAccelerationStructureInfoKHR-src-04963# The source
+--     acceleration structure @src@ /must/ have been built prior to the
+--     execution of this command
+--
 -- -   #VUID-VkCopyAccelerationStructureInfoKHR-src-03411# If @mode@ is
 --     'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR', @src@ /must/ have
 --     been built with
@@ -6388,6 +6400,10 @@
 --
 -- == Valid Usage
 --
+-- -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-src-04959# The
+--     source acceleration structure @src@ /must/ have been built prior to
+--     the execution of this command
+--
 -- -   #VUID-VkCopyAccelerationStructureToMemoryInfoKHR-dst-03561# The
 --     memory pointed to by @dst@ /must/ be at least as large as the
 --     serialization size of @src@, as reported by
@@ -6467,6 +6483,12 @@
 -- deserializing an acceleration structure
 --
 -- == Valid Usage
+--
+-- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-src-04960# The
+--     source memory pointed to by @src@ /must/ contain data previously
+--     serialized using 'cmdCopyAccelerationStructureToMemoryKHR',
+--     potentially modified to relocate acceleration structure references
+--     as described in that command
 --
 -- -   #VUID-VkCopyMemoryToAccelerationStructureInfoKHR-mode-03413# @mode@
 --     /must/ be 'COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR'
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
@@ -2200,6 +2200,7 @@
 -- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-03903# If @srcAccessMask@
 --     includes 'ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR', @srcStageMask@
 --     /must/ include 'PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR',
+--     @VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI@,
 --     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
 --     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
 --
@@ -2429,6 +2430,7 @@
 -- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-03903# If @dstAccessMask@
 --     includes 'ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR', @dstStageMask@
 --     /must/ include 'PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR',
+--     @VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI@,
 --     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
 --     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
 --
@@ -2619,14 +2621,16 @@
     -- be included in the
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes first synchronization scope>.
     srcStageMask :: PipelineStageFlags2KHR
-  , -- | @srcAccessMask@ is a 'AccessFlags2KHR' mask of pipeline
+  , -- | @srcAccessMask@ is a 'AccessFlags2KHR' mask of access flags to be
+    -- included in the
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes first access scope>.
     srcAccessMask :: AccessFlags2KHR
   , -- | @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 :: PipelineStageFlags2KHR
-  , -- | @dstAccessMask@ is a 'AccessFlags2KHR' mask of pipeline
+  , -- | @dstAccessMask@ is a 'AccessFlags2KHR' mask of access flags to be
+    -- included in the
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes second access scope>.
     dstAccessMask :: AccessFlags2KHR
   }
@@ -2829,6 +2833,7 @@
 --     @srcAccessMask@ includes 'ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR',
 --     @srcStageMask@ /must/ include
 --     'PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR',
+--     @VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI@,
 --     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
 --     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
 --
@@ -3076,6 +3081,7 @@
 --     @dstAccessMask@ includes 'ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR',
 --     @dstStageMask@ /must/ include
 --     'PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR',
+--     @VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI@,
 --     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
 --     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
 --
@@ -3596,14 +3602,16 @@
     -- be included in the
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes first synchronization scope>.
     srcStageMask :: PipelineStageFlags2KHR
-  , -- | @srcAccessMask@ is a 'AccessFlags2KHR' mask of pipeline
+  , -- | @srcAccessMask@ is a 'AccessFlags2KHR' mask of access flags to be
+    -- included in the
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes first access scope>.
     srcAccessMask :: AccessFlags2KHR
   , -- | @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 :: PipelineStageFlags2KHR
-  , -- | @dstAccessMask@ is a 'AccessFlags2KHR' mask of pipeline
+  , -- | @dstAccessMask@ is a 'AccessFlags2KHR' mask of access flags to be
+    -- included in the
     -- <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
@@ -3831,6 +3839,7 @@
 --     @srcAccessMask@ includes 'ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR',
 --     @srcStageMask@ /must/ include
 --     'PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR',
+--     @VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI@,
 --     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
 --     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
 --
@@ -4078,6 +4087,7 @@
 --     @dstAccessMask@ includes 'ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR',
 --     @dstStageMask@ /must/ include
 --     'PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR',
+--     @VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI@,
 --     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
 --     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
 --
@@ -4337,14 +4347,16 @@
     -- be included in the
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes first synchronization scope>.
     srcStageMask :: PipelineStageFlags2KHR
-  , -- | @srcAccessMask@ is a 'AccessFlags2KHR' mask of pipeline
+  , -- | @srcAccessMask@ is a 'AccessFlags2KHR' mask of access flags to be
+    -- included in the
     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes first access scope>.
     srcAccessMask :: AccessFlags2KHR
   , -- | @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 :: PipelineStageFlags2KHR
-  , -- | @dstAccessMask@ is a 'AccessFlags2KHR' mask of pipeline
+  , -- | @dstAccessMask@ is a 'AccessFlags2KHR' mask of access flags to be
+    -- included in the
     -- <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
@@ -5591,7 +5603,8 @@
 -- the pipeline where vertex buffers are consumed.
 pattern PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR         = PipelineStageFlagBits2KHR 0x0000002000000000
 -- | 'PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR' is equivalent to
--- specifying all supported stages from:
+-- specifying all supported
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stages>:
 --
 -- -   'PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR'
 --
diff --git a/src/Vulkan/Extensions/VK_NVX_binary_import.hs b/src/Vulkan/Extensions/VK_NVX_binary_import.hs
--- a/src/Vulkan/Extensions/VK_NVX_binary_import.hs
+++ b/src/Vulkan/Extensions/VK_NVX_binary_import.hs
@@ -155,6 +155,9 @@
 import Data.Coerce (coerce)
 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)
@@ -181,6 +184,8 @@
 import Data.ByteString (ByteString)
 import Data.Kind (Type)
 import Control.Monad.Trans.Cont (ContT(..))
+import Data.Vector (Vector)
+import Vulkan.CStruct.Utils (advancePtrBytes)
 import Vulkan.NamedType ((:::))
 import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
 import Vulkan.Core10.Handles (CommandBuffer)
@@ -496,16 +501,12 @@
     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
+    params :: Vector (Ptr ())
   , -- No documentation found for Nested "VkCuLaunchInfoNVX" "pExtras"
-    extras :: Ptr (Ptr ())
+    extras :: Vector (Ptr ())
   }
-  deriving (Typeable, Eq)
+  deriving (Typeable)
 #if defined(GENERIC_INSTANCES)
 deriving instance Generic (CuLaunchInfoNVX)
 #endif
@@ -513,22 +514,26 @@
 
 instance ToCStruct CuLaunchInfoNVX where
   withCStruct x f = allocaBytes 88 $ \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
+  pokeCStruct p CuLaunchInfoNVX{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr CuFunctionNVX)) (function)
+    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (gridDimX)
+    lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) (gridDimY)
+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (gridDimZ)
+    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (blockDimX)
+    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (blockDimY)
+    lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) (blockDimZ)
+    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (sharedMemBytes)
+    lift $ poke ((p `plusPtr` 56 :: Ptr CSize)) ((fromIntegral (Data.Vector.length $ (params)) :: CSize))
+    pPParams' <- ContT $ allocaBytes @(Ptr ()) ((Data.Vector.length (params)) * 8)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPParams' `plusPtr` (8 * (i)) :: Ptr (Ptr ())) (e)) (params)
+    lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr (Ptr ())))) (pPParams')
+    lift $ poke ((p `plusPtr` 72 :: Ptr CSize)) ((fromIntegral (Data.Vector.length $ (extras)) :: CSize))
+    pPExtras' <- ContT $ allocaBytes @(Ptr ()) ((Data.Vector.length (extras)) * 8)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPExtras' `plusPtr` (8 * (i)) :: Ptr (Ptr ())) (e)) (extras)
+    lift $ poke ((p `plusPtr` 80 :: Ptr (Ptr (Ptr ())))) (pPExtras')
+    lift $ f
   cStructSize = 88
   cStructAlignment = 8
   pokeZeroCStruct p f = do
@@ -542,10 +547,6 @@
     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
@@ -560,16 +561,12 @@
     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 ()))))
+    pParams' <- generateM (fromIntegral (coerce @CSize @Word64 paramCount)) (\i -> peek @(Ptr ()) ((pParams `advancePtrBytes` (8 * (i)) :: Ptr (Ptr ()))))
     extraCount <- peek @CSize ((p `plusPtr` 72 :: Ptr CSize))
     pExtras <- peek @(Ptr (Ptr ())) ((p `plusPtr` 80 :: Ptr (Ptr (Ptr ()))))
+    pExtras' <- generateM (fromIntegral (coerce @CSize @Word64 extraCount)) (\i -> peek @(Ptr ()) ((pExtras `advancePtrBytes` (8 * (i)) :: 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 ())
+             function gridDimX gridDimY gridDimZ blockDimX blockDimY blockDimZ sharedMemBytes pParams' pExtras'
 
 instance Zero CuLaunchInfoNVX where
   zero = CuLaunchInfoNVX
@@ -581,10 +578,8 @@
            zero
            zero
            zero
-           zero
-           zero
-           zero
-           zero
+           mempty
+           mempty
 
 
 type NVX_BINARY_IMPORT_SPEC_VERSION = 1
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
@@ -56,14 +56,17 @@
 --
 -- This extension adds a new way to write shaders to be used with multiview
 -- subpasses, where the attributes for all views are written out by a
--- single invocation of the vertex processing stages. Related SPIR-V and
--- GLSL extensions @SPV_NVX_multiview_per_view_attributes@ and
+-- single invocation of the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stages>.
+-- Related SPIR-V and GLSL extensions
+-- @SPV_NVX_multiview_per_view_attributes@ and
 -- @GL_NVX_multiview_per_view_attributes@ introduce per-view position and
 -- viewport mask attributes arrays, and this extension defines how those
 -- per-view attribute arrays are interpreted by Vulkan. Pipelines using
--- per-view attributes /may/ only execute the vertex processing stages once
--- for all views rather than once per-view, which reduces redundant shading
--- work.
+-- per-view attributes /may/ only execute the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stages>
+-- once for all views rather than once per-view, which reduces redundant
+-- shading work.
 --
 -- A subpass creation flag controls whether the subpass uses this
 -- extension. A subpass /must/ either exclusively use this extension or not
diff --git a/src/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs-boot b/src/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs-boot
--- a/src/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs-boot
+++ b/src/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs-boot
@@ -56,14 +56,17 @@
 --
 -- This extension adds a new way to write shaders to be used with multiview
 -- subpasses, where the attributes for all views are written out by a
--- single invocation of the vertex processing stages. Related SPIR-V and
--- GLSL extensions @SPV_NVX_multiview_per_view_attributes@ and
+-- single invocation of the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stages>.
+-- Related SPIR-V and GLSL extensions
+-- @SPV_NVX_multiview_per_view_attributes@ and
 -- @GL_NVX_multiview_per_view_attributes@ introduce per-view position and
 -- viewport mask attributes arrays, and this extension defines how those
 -- per-view attribute arrays are interpreted by Vulkan. Pipelines using
--- per-view attributes /may/ only execute the vertex processing stages once
--- for all views rather than once per-view, which reduces redundant shading
--- work.
+-- per-view attributes /may/ only execute the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stages>
+-- once for all views rather than once per-view, which reduces redundant
+-- shading work.
 --
 -- A subpass creation flag controls whether the subpass uses this
 -- extension. A subpass /must/ either exclusively use this extension or not
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
@@ -63,10 +63,11 @@
 --
 -- There are new programmable shader types — the task and mesh shader — to
 -- generate these collections to be processed by fixed-function primitive
--- assembly and rasterization logic. When the task and mesh shaders are
--- dispatched, they replace the standard programmable vertex processing
--- pipeline, including vertex array attribute fetching, vertex shader
--- processing, tessellation, and the geometry shader processing.
+-- assembly and rasterization logic. When task and mesh shaders are
+-- dispatched, they replace the core
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization stages>,
+-- including vertex array attribute fetching, vertex shader processing,
+-- tessellation, and geometry shader processing.
 --
 -- This extension also adds support for the following SPIR-V extension in
 -- Vulkan:
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
@@ -63,10 +63,11 @@
 --
 -- There are new programmable shader types — the task and mesh shader — to
 -- generate these collections to be processed by fixed-function primitive
--- assembly and rasterization logic. When the task and mesh shaders are
--- dispatched, they replace the standard programmable vertex processing
--- pipeline, including vertex array attribute fetching, vertex shader
--- processing, tessellation, and the geometry shader processing.
+-- assembly and rasterization logic. When task and mesh shaders are
+-- dispatched, they replace the core
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization stages>,
+-- including vertex array attribute fetching, vertex shader processing,
+-- tessellation, and geometry shader processing.
 --
 -- This extension also adds support for the following SPIR-V extension in
 -- Vulkan:
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
@@ -1151,6 +1151,10 @@
 --     or
 --     'Vulkan.Extensions.VK_KHR_acceleration_structure.COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR'
 --
+-- -   #VUID-vkCmdCopyAccelerationStructureNV-src-04963# The source
+--     acceleration structure @src@ /must/ have been built prior to the
+--     execution of this command
+--
 -- -   #VUID-vkCmdCopyAccelerationStructureNV-src-03411# If @mode@ is
 --     'Vulkan.Extensions.VK_KHR_acceleration_structure.COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR',
 --     @src@ /must/ have been built with
@@ -1279,6 +1283,10 @@
 --     @accelerationStructure@ /must/ be bound completely and contiguously
 --     to a single 'Vulkan.Core10.Handles.DeviceMemory' object via
 --     'bindAccelerationStructureMemoryNV'
+--
+-- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-pAccelerationStructures-04958#
+--     All acceleration structures in @pAccelerationStructures@ /must/ have
+--     been built prior to the execution of this command
 --
 -- -   #VUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructures-03431#
 --     All acceleration structures in @pAccelerationStructures@ /must/ have
diff --git a/src/Vulkan/Extensions/VK_NV_ray_tracing_motion_blur.hs b/src/Vulkan/Extensions/VK_NV_ray_tracing_motion_blur.hs
--- a/src/Vulkan/Extensions/VK_NV_ray_tracing_motion_blur.hs
+++ b/src/Vulkan/Extensions/VK_NV_ray_tracing_motion_blur.hs
@@ -63,7 +63,7 @@
 -- -   Motion instances to move existing instances over time
 --
 -- The motion represented here is parameterized across a normalized
--- timestep between 0.0 and 1.0. A motion trace using OpTraceRaysMotionNV
+-- timestep between 0.0 and 1.0. A motion trace using OpTraceRayMotionNV
 -- provides a time within that normalized range to be used when
 -- intersecting that ray with geometry. The geometry can be provided with
 -- motion by a combination of adding a second vertex position for time of
@@ -92,7 +92,7 @@
 --     -   'AccelerationStructureGeometryMotionTrianglesDataNV'
 --
 -- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
 --     'Vulkan.Core10.Device.DeviceCreateInfo':
 --
 --     -   'PhysicalDeviceRayTracingMotionBlurFeaturesNV'
diff --git a/src/Vulkan/Extensions/VK_NV_ray_tracing_motion_blur.hs-boot b/src/Vulkan/Extensions/VK_NV_ray_tracing_motion_blur.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_ray_tracing_motion_blur.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_ray_tracing_motion_blur.hs-boot
@@ -63,7 +63,7 @@
 -- -   Motion instances to move existing instances over time
 --
 -- The motion represented here is parameterized across a normalized
--- timestep between 0.0 and 1.0. A motion trace using OpTraceRaysMotionNV
+-- timestep between 0.0 and 1.0. A motion trace using OpTraceRayMotionNV
 -- provides a time within that normalized range to be used when
 -- intersecting that ray with geometry. The geometry can be provided with
 -- motion by a combination of adding a second vertex position for time of
@@ -92,7 +92,7 @@
 --     -   'AccelerationStructureGeometryMotionTrianglesDataNV'
 --
 -- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
 --     'Vulkan.Core10.Device.DeviceCreateInfo':
 --
 --     -   'PhysicalDeviceRayTracingMotionBlurFeaturesNV'
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
@@ -208,7 +208,8 @@
 -- implementations that access the image in a different pipeline location?
 --
 -- __RESOLVED__ We are specifying the pipeline stage to be between the
--- final stage used for vertex processing
+-- final
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>
 -- ('Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT')
 -- and before the first stage used for fragment processing
 -- ('Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT'),
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
@@ -208,7 +208,8 @@
 -- implementations that access the image in a different pipeline location?
 --
 -- __RESOLVED__ We are specifying the pipeline stage to be between the
--- final stage used for vertex processing
+-- final
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>
 -- ('Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT')
 -- and before the first stage used for fragment processing
 -- ('Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT'),
diff --git a/src/Vulkan/SPIRVRequirements.hs b/src/Vulkan/SPIRVRequirements.hs
--- a/src/Vulkan/SPIRVRequirements.hs
+++ b/src/Vulkan/SPIRVRequirements.hs
@@ -36,6 +36,8 @@
 import Vulkan.Core11.Promoted_From_VK_KHR_multiview (PhysicalDeviceMultiviewFeatures(..))
 import Vulkan.Extensions.VK_KHR_ray_query (PhysicalDeviceRayQueryFeaturesKHR)
 import Vulkan.Extensions.VK_KHR_ray_query (PhysicalDeviceRayQueryFeaturesKHR(..))
+import Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (PhysicalDeviceRayTracingMotionBlurFeaturesNV)
+import Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (PhysicalDeviceRayTracingMotionBlurFeaturesNV(..))
 import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (PhysicalDeviceRayTracingPipelineFeaturesKHR)
 import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (PhysicalDeviceRayTracingPipelineFeaturesKHR(..))
 import Vulkan.Extensions.VK_EXT_shader_atomic_float (PhysicalDeviceShaderAtomicFloatFeaturesEXT)
@@ -116,6 +118,7 @@
 import Vulkan.Extensions.VK_KHR_shader_float16_int8 (pattern KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME)
 import Vulkan.Extensions.VK_KHR_shader_float_controls (pattern KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME)
 import Vulkan.Extensions.VK_KHR_shader_non_semantic_info (pattern KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME)
+import Vulkan.Extensions.VK_KHR_shader_subgroup_uniform_control_flow (pattern KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME)
 import Vulkan.Extensions.VK_KHR_shader_terminate_invocation (pattern KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME)
 import Vulkan.Extensions.VK_KHR_spirv_1_4 (pattern KHR_SPIRV_1_4_EXTENSION_NAME)
 import Vulkan.Extensions.VK_KHR_storage_buffer_storage_class (pattern KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME)
@@ -130,6 +133,7 @@
 import Vulkan.Extensions.VK_NV_geometry_shader_passthrough (pattern NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME)
 import Vulkan.Extensions.VK_NV_mesh_shader (pattern NV_MESH_SHADER_EXTENSION_NAME)
 import Vulkan.Extensions.VK_NV_ray_tracing (pattern NV_RAY_TRACING_EXTENSION_NAME)
+import Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (pattern NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME)
 import Vulkan.Extensions.VK_NV_sample_mask_override_coverage (pattern NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME)
 import Vulkan.Extensions.VK_NV_shader_image_footprint (pattern NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME)
 import Vulkan.Extensions.VK_NV_shader_sm_builtins (pattern NV_SHADER_SM_BUILTINS_EXTENSION_NAME)
@@ -636,6 +640,13 @@
                              , deviceExtensionMinVersion = 0
                              }
     ]
+  "SPV_KHR_subgroup_uniform_control_flow" -> (,)
+    []
+    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing
+                             , deviceExtensionName       = KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME
+                             , deviceExtensionMinVersion = 0
+                             }
+    ]
   _ -> ([], [])
 
 spirvCapabilityRequirements :: ByteString -> ([InstanceRequirement], [DeviceRequirement])
@@ -1879,6 +1890,54 @@
                              }
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME
+                             , deviceExtensionMinVersion = 0
+                             }
+    ]
+  "RayTracingMotionBlurNV" -> (,)
+    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing
+                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
+                               , instanceExtensionMinVersion = 0
+                               }
+    ]
+    [ RequireDeviceFeature
+      { featureName   = "rayTracingMotionBlur"
+      , checkFeature  = rayTracingMotionBlur :: PhysicalDeviceRayTracingMotionBlurFeaturesNV -> Bool
+      , enableFeature = \f -> f { rayTracingMotionBlur = True } :: PhysicalDeviceRayTracingMotionBlurFeaturesNV
+      }
+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
+                             , deviceExtensionName       = NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME
+                             , deviceExtensionMinVersion = 0
+                             }
+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
+                             , deviceExtensionName       = KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME
+                             , deviceExtensionMinVersion = 0
+                             }
+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
+                             , deviceExtensionName       = KHR_SPIRV_1_4_EXTENSION_NAME
+                             , deviceExtensionMinVersion = 0
+                             }
+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
+                             , deviceExtensionName       = KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME
+                             , deviceExtensionMinVersion = 0
+                             }
+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
+                             , deviceExtensionName       = KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME
+                             , deviceExtensionMinVersion = 0
+                             }
+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
+                             , deviceExtensionName       = EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
+                             , deviceExtensionMinVersion = 0
+                             }
+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
+                             , deviceExtensionName       = KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME
+                             , deviceExtensionMinVersion = 0
+                             }
+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
+                             , deviceExtensionName       = KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME
+                             , deviceExtensionMinVersion = 0
+                             }
+    , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
+                             , deviceExtensionName       = KHR_MAINTENANCE3_EXTENSION_NAME
                              , deviceExtensionMinVersion = 0
                              }
     ]
diff --git a/src/Vulkan/Version.hs b/src/Vulkan/Version.hs
--- a/src/Vulkan/Version.hs
+++ b/src/Vulkan/Version.hs
@@ -19,11 +19,11 @@
 import Data.Word (Word32)
 
 pattern HEADER_VERSION :: Word32
-pattern HEADER_VERSION = 182
+pattern HEADER_VERSION = 183
 
 
 pattern HEADER_VERSION_COMPLETE :: Word32
-pattern HEADER_VERSION_COMPLETE = MAKE_API_VERSION 1 2 182
+pattern HEADER_VERSION_COMPLETE = MAKE_API_VERSION 1 2 183
 
 
 pattern MAKE_API_VERSION :: Word32 -> Word32 -> Word32 -> Word32
diff --git a/vulkan.cabal b/vulkan.cabal
--- a/vulkan.cabal
+++ b/vulkan.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           vulkan
-version:        3.11.0.2
+version:        3.11.1
 synopsis:       Bindings to the Vulkan graphics API.
 description:    Please see [the readme](https://github.com/expipiplus1/vulkan/#readme)
 category:       Graphics
