diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -2,6 +2,9 @@
 
 ## WIP
 
+## [3.24] - 2022-12-27
+- Bump API version to v1.3.235
+
 ## [3.23.4] - 2022-12-27
 - Bump API version to v1.3.234
 
diff --git a/package.yaml b/package.yaml
--- a/package.yaml
+++ b/package.yaml
@@ -1,5 +1,5 @@
 name: vulkan
-version: "3.23.4"
+version: "3.24"
 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
@@ -53,6 +53,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureBuildGeometryInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureBuildRangeInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureBuildSizesInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (AccelerationStructureCaptureDescriptorDataInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureCreateInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureCreateInfoNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureDeviceAddressInfoKHR)
@@ -100,6 +101,7 @@
 import {-# SOURCE #-} Vulkan.Core10.SparseResourceMemoryManagement (BindSparseInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (BindVertexBufferIndirectCommandNV)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (BlitImageInfo2)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (BufferCaptureDescriptorDataInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_buffer_collection (BufferCollectionBufferCreateInfoFUCHSIA)
 import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_buffer_collection (BufferCollectionConstraintsInfoFUCHSIA)
 import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_buffer_collection (BufferCollectionCreateInfoFUCHSIA)
@@ -174,7 +176,11 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_dedicated_allocation (DedicatedAllocationImageCreateInfoNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_dedicated_allocation (DedicatedAllocationMemoryAllocateInfoNV)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (DependencyInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (DescriptorAddressInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (DescriptorBufferBindingInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (DescriptorBufferBindingPushDescriptorBufferHandleEXT)
 import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorBufferInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (DescriptorGetInfoEXT)
 import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorImageInfo)
 import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorPoolCreateInfo)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block (DescriptorPoolInlineUniformBlockCreateInfo)
@@ -300,6 +306,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_MVK_ios_surface (IOSSurfaceCreateInfoMVK)
 import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ImageBlit)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (ImageBlit2)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (ImageCaptureDescriptorDataInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_compression_control (ImageCompressionControlEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_compression_control (ImageCompressionPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_buffer_collection (ImageConstraintsInfoFUCHSIA)
@@ -329,6 +336,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (ImageSwapchainCreateInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_astc_decode_mode (ImageViewASTCDecodeModeEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_image_view_handle (ImageViewAddressPropertiesNVX)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (ImageViewCaptureDescriptorDataInfoEXT)
 import {-# SOURCE #-} Vulkan.Core10.ImageView (ImageViewCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_image_view_handle (ImageViewHandleInfoNVX)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_view_min_lod (ImageViewMinLodCreateInfoEXT)
@@ -396,6 +404,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_mutable_descriptor_type (MutableDescriptorTypeListEXT)
 import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (Offset2D)
 import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (Offset3D)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (OpaqueCaptureDescriptorDataCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_optical_flow (OpticalFlowExecuteInfoNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_optical_flow (OpticalFlowImageFormatInfoNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_optical_flow (OpticalFlowImageFormatPropertiesNV)
@@ -442,6 +451,9 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clip_control (PhysicalDeviceDepthClipControlFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clip_enable (PhysicalDeviceDepthClipEnableFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve (PhysicalDeviceDepthStencilResolveProperties)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (PhysicalDeviceDescriptorBufferFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (PhysicalDeviceDescriptorBufferPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (PhysicalDeviceDescriptorIndexingFeatures)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (PhysicalDeviceDescriptorIndexingProperties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping (PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE)
@@ -740,6 +752,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (SampleLocationEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (SampleLocationsInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_border_color_swizzle (SamplerBorderColorComponentMappingCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (SamplerCaptureDescriptorDataInfoEXT)
 import {-# SOURCE #-} Vulkan.Core10.Sampler (SamplerCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_custom_border_color (SamplerCustomBorderColorCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax (SamplerReductionModeCreateInfo)
@@ -950,7 +963,9 @@
 
 
 type family Extends (a :: [Type] -> Type) (b :: Type) :: Constraint where
+  Extends AccelerationStructureCreateInfoKHR OpaqueCaptureDescriptorDataCreateInfoEXT = ()
   Extends AccelerationStructureCreateInfoKHR AccelerationStructureMotionInfoNV = ()
+  Extends AccelerationStructureCreateInfoNV OpaqueCaptureDescriptorDataCreateInfoEXT = ()
   Extends AccelerationStructureGeometryTrianglesDataKHR AccelerationStructureGeometryMotionTrianglesDataNV = ()
   Extends AccelerationStructureGeometryTrianglesDataKHR AccelerationStructureTrianglesOpacityMicromapEXT = ()
   Extends AndroidHardwareBufferPropertiesANDROID AndroidHardwareBufferFormatPropertiesANDROID = ()
@@ -967,6 +982,7 @@
   Extends BufferCreateInfo ExternalMemoryBufferCreateInfo = ()
   Extends BufferCreateInfo BufferOpaqueCaptureAddressCreateInfo = ()
   Extends BufferCreateInfo BufferDeviceAddressCreateInfoEXT = ()
+  Extends BufferCreateInfo OpaqueCaptureDescriptorDataCreateInfoEXT = ()
   Extends BufferCreateInfo BufferCollectionBufferCreateInfoFUCHSIA = ()
   Extends BufferImageCopy2 CopyCommandTransformInfoQCOM = ()
   Extends BufferViewCreateInfo ExportMetalObjectCreateInfoEXT = ()
@@ -982,6 +998,7 @@
   Extends ComputePipelineCreateInfo PipelineCompilerControlCreateInfoAMD = ()
   Extends ComputePipelineCreateInfo PipelineRobustnessCreateInfoEXT = ()
   Extends DebugUtilsMessengerCallbackDataEXT DeviceAddressBindingCallbackDataEXT = ()
+  Extends DescriptorBufferBindingInfoEXT DescriptorBufferBindingPushDescriptorBufferHandleEXT = ()
   Extends DescriptorPoolCreateInfo DescriptorPoolInlineUniformBlockCreateInfo = ()
   Extends DescriptorPoolCreateInfo MutableDescriptorTypeCreateInfoEXT = ()
   Extends DescriptorSetAllocateInfo DescriptorSetVariableDescriptorCountAllocateInfo = ()
@@ -1106,6 +1123,7 @@
   Extends DeviceCreateInfo PhysicalDeviceInheritedViewportScissorFeaturesNV = ()
   Extends DeviceCreateInfo PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = ()
   Extends DeviceCreateInfo PhysicalDeviceProvokingVertexFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceDescriptorBufferFeaturesEXT = ()
   Extends DeviceCreateInfo PhysicalDeviceShaderIntegerDotProductFeatures = ()
   Extends DeviceCreateInfo PhysicalDeviceFragmentShaderBarycentricFeaturesKHR = ()
   Extends DeviceCreateInfo PhysicalDeviceRayTracingMotionBlurFeaturesNV = ()
@@ -1174,6 +1192,7 @@
   Extends ImageCreateInfo ImageDrmFormatModifierListCreateInfoEXT = ()
   Extends ImageCreateInfo ImageDrmFormatModifierExplicitCreateInfoEXT = ()
   Extends ImageCreateInfo ImageStencilUsageCreateInfo = ()
+  Extends ImageCreateInfo OpaqueCaptureDescriptorDataCreateInfoEXT = ()
   Extends ImageCreateInfo BufferCollectionImageCreateInfoFUCHSIA = ()
   Extends ImageCreateInfo ImageCompressionControlEXT = ()
   Extends ImageCreateInfo ExportMetalObjectCreateInfoEXT = ()
@@ -1192,6 +1211,7 @@
   Extends ImageViewCreateInfo ImageViewUsageCreateInfo = ()
   Extends ImageViewCreateInfo SamplerYcbcrConversionInfo = ()
   Extends ImageViewCreateInfo ImageViewASTCDecodeModeEXT = ()
+  Extends ImageViewCreateInfo OpaqueCaptureDescriptorDataCreateInfoEXT = ()
   Extends ImageViewCreateInfo ImageViewMinLodCreateInfoEXT = ()
   Extends ImageViewCreateInfo ExportMetalObjectCreateInfoEXT = ()
   Extends ImageViewCreateInfo ImageViewSampleWeightCreateInfoQCOM = ()
@@ -1333,6 +1353,7 @@
   Extends PhysicalDeviceFeatures2 PhysicalDeviceInheritedViewportScissorFeaturesNV = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceProvokingVertexFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDescriptorBufferFeaturesEXT = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderIntegerDotProductFeatures = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceFragmentShaderBarycentricFeaturesKHR = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceRayTracingMotionBlurFeaturesNV = ()
@@ -1426,6 +1447,8 @@
   Extends PhysicalDeviceProperties2 PhysicalDeviceFragmentShadingRatePropertiesKHR = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceFragmentShadingRateEnumsPropertiesNV = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceProvokingVertexPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceDescriptorBufferPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceShaderIntegerDotProductProperties = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceDrmPropertiesEXT = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceFragmentShaderBarycentricPropertiesKHR = ()
@@ -1498,6 +1521,7 @@
   Extends SamplerCreateInfo SamplerReductionModeCreateInfo = ()
   Extends SamplerCreateInfo SamplerCustomBorderColorCreateInfoEXT = ()
   Extends SamplerCreateInfo SamplerBorderColorComponentMappingCreateInfoEXT = ()
+  Extends SamplerCreateInfo OpaqueCaptureDescriptorDataCreateInfoEXT = ()
   Extends SamplerYcbcrConversionCreateInfo ExternalFormatANDROID = ()
   Extends SemaphoreCreateInfo ExportSemaphoreCreateInfo = ()
   Extends SemaphoreCreateInfo ExportSemaphoreWin32HandleInfoKHR = ()
@@ -1971,6 +1995,11 @@
   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
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT -> go @PhysicalDeviceDescriptorBufferFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT -> go @PhysicalDeviceDescriptorBufferPropertiesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT -> go @PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT
+  STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT -> go @DescriptorBufferBindingPushDescriptorBufferHandleEXT
+  STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT -> go @OpaqueCaptureDescriptorDataCreateInfoEXT
   STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES -> go @PhysicalDeviceShaderIntegerDotProductFeatures
   STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES -> go @PhysicalDeviceShaderIntegerDotProductProperties
   STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT -> go @PhysicalDeviceDrmPropertiesEXT
@@ -2432,6 +2461,11 @@
 {-# complete (::&) :: PhysicalDeviceProvokingVertexFeaturesEXT #-}
 {-# complete (::&) :: PhysicalDeviceProvokingVertexPropertiesEXT #-}
 {-# complete (::&) :: PipelineRasterizationProvokingVertexStateCreateInfoEXT #-}
+{-# complete (::&) :: PhysicalDeviceDescriptorBufferFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceDescriptorBufferPropertiesEXT #-}
+{-# complete (::&) :: PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT #-}
+{-# complete (::&) :: DescriptorBufferBindingPushDescriptorBufferHandleEXT #-}
+{-# complete (::&) :: OpaqueCaptureDescriptorDataCreateInfoEXT #-}
 {-# complete (::&) :: PhysicalDeviceShaderIntegerDotProductFeatures #-}
 {-# complete (::&) :: PhysicalDeviceShaderIntegerDotProductProperties #-}
 {-# complete (::&) :: PhysicalDeviceDrmPropertiesEXT #-}
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
@@ -74,6 +74,7 @@
 import Vulkan.CStruct.Extends (Extendss)
 import Vulkan.CStruct.Extends (Extensible(..))
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory (ExternalMemoryBufferCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (OpaqueCaptureDescriptorDataCreateInfoEXT)
 import Vulkan.CStruct.Extends (PeekChain)
 import Vulkan.CStruct.Extends (PeekChain(..))
 import Vulkan.CStruct.Extends (PokeChain)
@@ -402,6 +403,54 @@
 --     equal to
 --     'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.PhysicalDeviceMaintenance4Properties'::@maxBufferSize@
 --
+-- -   #VUID-VkBufferCreateInfo-usage-08097# If @usage@ includes
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT',
+--     creating this 'Vulkan.Core10.Handles.Buffer' /must/ not cause the
+--     total required space for all currently valid buffers using this flag
+--     on the device to exceed
+--     VkPhysicalDeviceDescriptorBufferPropertiesEXT::@samplerDescriptorBufferAddressSpaceSize@
+--     or
+--     VkPhysicalDeviceDescriptorBufferPropertiesEXT::@descriptorBufferAddressSpaceSize@
+--
+-- -   #VUID-VkBufferCreateInfo-usage-08098# If @usage@ includes
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     creating this 'Vulkan.Core10.Handles.Buffer' /must/ not cause the
+--     total required space for all currently valid buffers using this flag
+--     on the device to exceed
+--     VkPhysicalDeviceDescriptorBufferPropertiesEXT::@resourceDescriptorBufferAddressSpaceSize@
+--     or
+--     VkPhysicalDeviceDescriptorBufferPropertiesEXT::@descriptorBufferAddressSpaceSize@
+--
+-- -   #VUID-VkBufferCreateInfo-flags-08099# If @flags@ includes
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT',
+--     the
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBufferCaptureReplay descriptorBufferCaptureReplay>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkBufferCreateInfo-pNext-08100# If the @pNext@ chain includes
+--     a
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
+--     structure, @flags@ /must/ contain
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--
+-- -   #VUID-VkBufferCreateInfo-usage-08101# If @usage@ includes
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBufferPushDescriptors descriptorBufferPushDescriptors>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkBufferCreateInfo-usage-08102# If @usage@ includes
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT'
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-bufferlessPushDescriptors ::bufferlessPushDescriptors>
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-VkBufferCreateInfo-usage-08103# If @usage@ includes
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT',
+--     @usage@ /must/ contain at least one of
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT'
+--     or
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT'
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkBufferCreateInfo-sType-sType# @sType@ /must/ be
@@ -415,6 +464,7 @@
 --     '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',
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT',
 --     or
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileListInfoKHR VkVideoProfileListInfoKHR>
 --
@@ -481,6 +531,7 @@
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends BufferCreateInfo e => b) -> Maybe b
   extends _ f
     | Just Refl <- eqT @e @BufferCollectionBufferCreateInfoFUCHSIA = Just f
+    | Just Refl <- eqT @e @OpaqueCaptureDescriptorDataCreateInfoEXT = Just f
     | Just Refl <- eqT @e @BufferDeviceAddressCreateInfoEXT = Just f
     | Just Refl <- eqT @e @BufferOpaqueCaptureAddressCreateInfo = Just f
     | Just Refl <- eqT @e @ExternalMemoryBufferCreateInfo = Just f
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
@@ -1395,7 +1395,11 @@
 -- [@firstSet@..@firstSet@+@descriptorSetCount@-1] for subsequent
 -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-bindpoint-commands bound pipeline commands>
 -- set by @pipelineBindPoint@. Any bindings that were previously applied
--- via these sets are no longer valid.
+-- via these sets , or calls to
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT'
+-- or
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdBindDescriptorBufferEmbeddedSamplersEXT',
+-- are no longer valid.
 --
 -- Once bound, a descriptor set affects rendering of subsequent commands
 -- that interact with the given pipeline type in the command buffer until
@@ -1541,6 +1545,12 @@
 --     is not enabled, each element of @pDescriptorSets@ /must/ be a valid
 --     'Vulkan.Core10.Handles.DescriptorSet'
 --
+-- -   #VUID-vkCmdBindDescriptorSets-pDescriptorSets-08010# Each element of
+--     @pDescriptorSets@ /must/ have been allocated with a
+--     'Vulkan.Core10.Handles.DescriptorSetLayout' which was not created
+--     with
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkCmdBindDescriptorSets-commandBuffer-parameter#
@@ -2071,13 +2081,41 @@
 --     create the current 'Vulkan.Core10.Handles.Pipeline', as described in
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
 --
--- -   #VUID-vkCmdDraw-None-02699# Descriptors in each bound descriptor
---     set, specified via 'cmdBindDescriptorSets', /must/ be valid as
---     described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command
+-- -   #VUID-vkCmdDraw-None-08114# Descriptors in each bound descriptor
+--     set, specified via 'cmdBindDescriptorSets', /must/ be valid if they
+--     are statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to
+--     the pipeline bind point used by this command and the bound
+--     'Vulkan.Core10.Handles.Pipeline' was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
 --
+-- -   #VUID-vkCmdDraw-None-08115# If the descriptors used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     were specified via 'cmdBindDescriptorSets', the bound
+--     'Vulkan.Core10.Handles.Pipeline' /must/ have been created without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDraw-None-08116# Descriptors in bound descriptor buffers,
+--     specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDraw-None-08117# If the descriptors used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDraw-None-08119# If a descriptor is dynamically used with
+--     a 'Vulkan.Core10.Handles.Pipeline' created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident.
+--
 -- -   #VUID-vkCmdDraw-None-02700# A valid pipeline /must/ be bound to the
 --     pipeline bind point used by this command
 --
@@ -3830,13 +3868,42 @@
 --     create the current 'Vulkan.Core10.Handles.Pipeline', as described in
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
 --
--- -   #VUID-vkCmdDrawIndexed-None-02699# Descriptors in each bound
+-- -   #VUID-vkCmdDrawIndexed-None-08114# Descriptors in each bound
 --     descriptor set, specified via 'cmdBindDescriptorSets', /must/ be
---     valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command
+--     valid if they are statically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
 --
+-- -   #VUID-vkCmdDrawIndexed-None-08115# If the descriptors used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     were specified via 'cmdBindDescriptorSets', the bound
+--     'Vulkan.Core10.Handles.Pipeline' /must/ have been created without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndexed-None-08116# Descriptors in bound descriptor
+--     buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndexed-None-08117# If the descriptors used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndexed-None-08119# If a descriptor is dynamically
+--     used with a 'Vulkan.Core10.Handles.Pipeline' created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident.
+--
 -- -   #VUID-vkCmdDrawIndexed-None-02700# A valid pipeline /must/ be bound
 --     to the pipeline bind point used by this command
 --
@@ -5594,13 +5661,42 @@
 --     create the current 'Vulkan.Core10.Handles.Pipeline', as described in
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
 --
--- -   #VUID-vkCmdDrawIndirect-None-02699# Descriptors in each bound
+-- -   #VUID-vkCmdDrawIndirect-None-08114# Descriptors in each bound
 --     descriptor set, specified via 'cmdBindDescriptorSets', /must/ be
---     valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command
+--     valid if they are statically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
 --
+-- -   #VUID-vkCmdDrawIndirect-None-08115# If the descriptors used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     were specified via 'cmdBindDescriptorSets', the bound
+--     'Vulkan.Core10.Handles.Pipeline' /must/ have been created without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirect-None-08116# Descriptors in bound descriptor
+--     buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirect-None-08117# If the descriptors used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirect-None-08119# If a descriptor is dynamically
+--     used with a 'Vulkan.Core10.Handles.Pipeline' created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident.
+--
 -- -   #VUID-vkCmdDrawIndirect-None-02700# A valid pipeline /must/ be bound
 --     to the pipeline bind point used by this command
 --
@@ -7368,13 +7464,43 @@
 --     create the current 'Vulkan.Core10.Handles.Pipeline', as described in
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
 --
--- -   #VUID-vkCmdDrawIndexedIndirect-None-02699# Descriptors in each bound
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-08114# Descriptors in each bound
 --     descriptor set, specified via 'cmdBindDescriptorSets', /must/ be
---     valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command
+--     valid if they are statically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
 --
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-08115# If the descriptors used
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via 'cmdBindDescriptorSets', the bound
+--     'Vulkan.Core10.Handles.Pipeline' /must/ have been created without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-08116# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-08117# If the descriptors used
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-08119# If a descriptor is
+--     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident.
+--
 -- -   #VUID-vkCmdDrawIndexedIndirect-None-02700# A valid pipeline /must/
 --     be bound to the pipeline bind point used by this command
 --
@@ -9144,13 +9270,41 @@
 --     create the current 'Vulkan.Core10.Handles.Pipeline', as described in
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
 --
--- -   #VUID-vkCmdDispatch-None-02699# Descriptors in each bound descriptor
---     set, specified via 'cmdBindDescriptorSets', /must/ be valid as
---     described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command
+-- -   #VUID-vkCmdDispatch-None-08114# Descriptors in each bound descriptor
+--     set, specified via 'cmdBindDescriptorSets', /must/ be valid if they
+--     are statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to
+--     the pipeline bind point used by this command and the bound
+--     'Vulkan.Core10.Handles.Pipeline' was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
 --
+-- -   #VUID-vkCmdDispatch-None-08115# If the descriptors used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     were specified via 'cmdBindDescriptorSets', the bound
+--     'Vulkan.Core10.Handles.Pipeline' /must/ have been created without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatch-None-08116# Descriptors in bound descriptor
+--     buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatch-None-08117# If the descriptors used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatch-None-08119# If a descriptor is dynamically used
+--     with a 'Vulkan.Core10.Handles.Pipeline' created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident.
+--
 -- -   #VUID-vkCmdDispatch-None-02700# A valid pipeline /must/ be bound to
 --     the pipeline bind point used by this command
 --
@@ -9621,12 +9775,42 @@
 --     create the current 'Vulkan.Core10.Handles.Pipeline', as described in
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
 --
--- -   #VUID-vkCmdDispatchIndirect-None-02699# Descriptors in each bound
+-- -   #VUID-vkCmdDispatchIndirect-None-08114# Descriptors in each bound
 --     descriptor set, specified via 'cmdBindDescriptorSets', /must/ be
---     valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command
+--     valid if they are statically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchIndirect-None-08115# If the descriptors used by
+--     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via 'cmdBindDescriptorSets', the bound
+--     'Vulkan.Core10.Handles.Pipeline' /must/ have been created without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchIndirect-None-08116# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchIndirect-None-08117# If the descriptors used by
+--     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchIndirect-None-08119# If a descriptor is
+--     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident.
 --
 -- -   #VUID-vkCmdDispatchIndirect-None-02700# A valid pipeline /must/ be
 --     bound to the pipeline bind point used by this command
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
@@ -1191,6 +1191,7 @@
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorDataEXT',
 -- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
 -- 'Vulkan.Core10.Handles.ImageView', 'Vulkan.Core10.Handles.Sampler',
 -- 'WriteDescriptorSet'
@@ -2202,12 +2203,31 @@
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
 --     then @descriptorCount@ /must/ be a multiple of @4@
 --
--- -   #VUID-VkDescriptorSetLayoutBinding-descriptorType-02210# If
+-- -   #VUID-VkDescriptorSetLayoutBinding-descriptorType-08004# If
 --     @descriptorType@ is
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
+--     'Vulkan.Extensions.VK_EXT_inline_uniform_block.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
+--     and 'DescriptorSetLayoutCreateInfo'::@flags@ does not contain
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
 --     then @descriptorCount@ /must/ be less than or equal to
---     'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockProperties'::@maxInlineUniformBlockSize@
+--     'Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockPropertiesEXT'::@maxInlineUniformBlockSize@
 --
+-- -   #VUID-VkDescriptorSetLayoutBinding-flags-08005# If
+--     'DescriptorSetLayoutCreateInfo'::@flags@ contains
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT',
+--     @descriptorType@ /must/ be
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER'
+--
+-- -   #VUID-VkDescriptorSetLayoutBinding-flags-08006# If
+--     'DescriptorSetLayoutCreateInfo'::@flags@ contains
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT',
+--     @descriptorCount@ /must/ less than or equal to @1@
+--
+-- -   #VUID-VkDescriptorSetLayoutBinding-flags-08007# If
+--     'DescriptorSetLayoutCreateInfo'::@flags@ contains
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT',
+--     and @descriptorCount@ is equal to @1@, @pImmutableSamplers@ /must/
+--     not be @NULL@
+--
 -- -   #VUID-VkDescriptorSetLayoutBinding-descriptorCount-00283# If
 --     @descriptorCount@ is not @0@, @stageFlags@ /must/ be a valid
 --     combination of
@@ -2446,6 +2466,33 @@
 --     'Vulkan.Extensions.VK_EXT_mutable_descriptor_type.PhysicalDeviceMutableDescriptorTypeFeaturesEXT'::@mutableDescriptorType@
 --     /must/ be enabled
 --
+-- -   #VUID-VkDescriptorSetLayoutCreateInfo-flags-08000# If @flags@
+--     contains
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     then all elements of @pBindings@ /must/ not have a @descriptorType@
+--     of
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'
+--
+-- -   #VUID-VkDescriptorSetLayoutCreateInfo-flags-08001# If @flags@
+--     contains
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT',
+--     @flags@ /must/ also contain
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-VkDescriptorSetLayoutCreateInfo-flags-08002# If @flags@
+--     contains
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     then @flags@ /must/ not contain
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
+--
+-- -   #VUID-VkDescriptorSetLayoutCreateInfo-flags-08003# If @flags@
+--     contains
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     then @flags@ /must/ not contain
+--     'Vulkan.Extensions.VK_VALVE_mutable_descriptor_type.DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE'
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkDescriptorSetLayoutCreateInfo-sType-sType# @sType@ /must/ be
@@ -2868,6 +2915,11 @@
 --     bit set, @descriptorPool@ /must/ have been created with the
 --     'Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT'
 --     flag set
+--
+-- -   #VUID-VkDescriptorSetAllocateInfo-pSetLayouts-08009# Each element of
+--     @pSetLayouts@ /must/ not have been created with the
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--     bit set
 --
 -- == 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
@@ -113,6 +113,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clamp_zero_one (PhysicalDeviceDepthClampZeroOneFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clip_control (PhysicalDeviceDepthClipControlFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clip_enable (PhysicalDeviceDepthClipEnableFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (PhysicalDeviceDescriptorBufferFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (PhysicalDeviceDescriptorIndexingFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping (PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (PhysicalDeviceDeviceGeneratedCommandsFeaturesNV)
@@ -813,6 +814,11 @@
 --     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderImageFloat32AtomicMinMax shaderImageFloat32AtomicMinMax>
 --     /must/ be enabled
 --
+-- -   #VUID-VkDeviceCreateInfo-None-08095# If
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBuffer descriptorBuffer>
+--     is enabled, @ppEnabledExtensionNames@ /must/ not contain
+--     @VK_AMD_shader_fragment_mask@
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkDeviceCreateInfo-sType-sType# @sType@ /must/ be
@@ -851,6 +857,7 @@
 --     'Vulkan.Extensions.VK_EXT_depth_clamp_zero_one.PhysicalDeviceDepthClampZeroOneFeaturesEXT',
 --     'Vulkan.Extensions.VK_EXT_depth_clip_control.PhysicalDeviceDepthClipControlFeaturesEXT',
 --     'Vulkan.Extensions.VK_EXT_depth_clip_enable.PhysicalDeviceDepthClipEnableFeaturesEXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferFeaturesEXT',
 --     'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingFeatures',
 --     'Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping.PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE',
 --     'Vulkan.Extensions.VK_NV_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsFeaturesNV',
@@ -1078,6 +1085,7 @@
     | Just Refl <- eqT @e @PhysicalDeviceRayTracingMotionBlurFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFragmentShaderBarycentricFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderIntegerDotProductFeatures = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceDescriptorBufferFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceProvokingVertexFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceInheritedViewportScissorFeaturesNV = Just f
diff --git a/src/Vulkan/Core10/Enums/BufferCreateFlagBits.hs b/src/Vulkan/Core10/Enums/BufferCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/BufferCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/BufferCreateFlagBits.hs
@@ -4,6 +4,7 @@
                                                  , BufferCreateFlagBits( BUFFER_CREATE_SPARSE_BINDING_BIT
                                                                        , BUFFER_CREATE_SPARSE_RESIDENCY_BIT
                                                                        , BUFFER_CREATE_SPARSE_ALIASED_BIT
+                                                                       , BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT
                                                                        , BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT
                                                                        , BUFFER_CREATE_PROTECTED_BIT
                                                                        , ..
@@ -58,6 +59,13 @@
 -- 'BUFFER_CREATE_SPARSE_BINDING_BIT' flag.
 pattern BUFFER_CREATE_SPARSE_ALIASED_BIT = BufferCreateFlagBits 0x00000004
 
+-- | 'BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT' specifies that
+-- the buffer /can/ be used with descriptor buffers when capturing and
+-- replaying (e.g. for trace capture and replay), see
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
+-- for more detail.
+pattern BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = BufferCreateFlagBits 0x00000020
+
 -- | 'BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT' specifies that the
 -- buffer’s address /can/ be saved and reused on a subsequent run (e.g. for
 -- trace capture and replay), see
@@ -88,6 +96,10 @@
   ,
     ( BUFFER_CREATE_SPARSE_ALIASED_BIT
     , "SPARSE_ALIASED_BIT"
+    )
+  ,
+    ( BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT
+    , "DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT"
     )
   ,
     ( BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT
diff --git a/src/Vulkan/Core10/Enums/BufferUsageFlagBits.hs b/src/Vulkan/Core10/Enums/BufferUsageFlagBits.hs
--- a/src/Vulkan/Core10/Enums/BufferUsageFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/BufferUsageFlagBits.hs
@@ -12,6 +12,9 @@
                                                                      , BUFFER_USAGE_INDIRECT_BUFFER_BIT
                                                                      , BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT
                                                                      , BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT
+                                                                     , BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT
+                                                                     , BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT
+                                                                     , BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT
                                                                      , BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR
                                                                      , BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR
                                                                      , BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR
@@ -114,6 +117,23 @@
 -- No documentation found for Nested "VkBufferUsageFlagBits" "VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT"
 pattern BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT = BufferUsageFlagBits 0x00800000
 
+-- | 'BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT' specifies that
+-- the buffer, when bound, /can/ be used by the implementation to support
+-- push descriptors when using descriptor buffers.
+pattern BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT = BufferUsageFlagBits 0x04000000
+
+-- | 'BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT' specifies that the
+-- buffer is suitable to contain resource descriptors when bound as a
+-- descriptor buffer.
+pattern BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT = BufferUsageFlagBits 0x00400000
+
+-- | 'BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT' specifies that the
+-- buffer is suitable to contain sampler and combined image sampler
+-- descriptors when bound as a descriptor buffer. Buffers containing
+-- combined image sampler descriptors /must/ also specify
+-- 'BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT'.
+pattern BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT = BufferUsageFlagBits 0x00200000
+
 -- | 'BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR' specifies that the buffer is
 -- suitable for use as a
 -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#shader-binding-table Shader Binding Table>.
@@ -204,6 +224,18 @@
   ,
     ( BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT
     , "MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT"
+    )
+  ,
+    ( BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT
+    , "PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT"
+    )
+  ,
+    ( BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT
+    , "RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT"
+    )
+  ,
+    ( BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT
+    , "SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT"
     )
   ,
     ( BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR
diff --git a/src/Vulkan/Core10/Enums/DescriptorSetLayoutCreateFlagBits.hs b/src/Vulkan/Core10/Enums/DescriptorSetLayoutCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/DescriptorSetLayoutCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/DescriptorSetLayoutCreateFlagBits.hs
@@ -2,6 +2,8 @@
 -- No documentation found for Chapter "DescriptorSetLayoutCreateFlagBits"
 module Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits  ( DescriptorSetLayoutCreateFlags
                                                               , DescriptorSetLayoutCreateFlagBits( DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT
+                                                                                                 , DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT
+                                                                                                 , DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
                                                                                                  , DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
                                                                                                  , DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
                                                                                                  , ..
@@ -43,6 +45,18 @@
 -- non-UpdateAfterBind limits, whichever is larger.
 pattern DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT = DescriptorSetLayoutCreateFlagBits 0x00000004
 
+-- | 'DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT'
+-- specifies that this is a layout only containing immutable samplers that
+-- /can/ be bound by
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdBindDescriptorBufferEmbeddedSamplersEXT'.
+-- Unlike normal immutable samplers, embedded immutable samplers do not
+-- require the application to provide them in a descriptor buffer.
+pattern DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT = DescriptorSetLayoutCreateFlagBits 0x00000020
+
+-- | 'DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' specifies that
+-- this layout /must/ only be used with descriptor buffers.
+pattern DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT = DescriptorSetLayoutCreateFlagBits 0x00000010
+
 -- | 'DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR' specifies that
 -- descriptor sets /must/ not be allocated using this layout, and
 -- descriptors are instead pushed by
@@ -72,6 +86,14 @@
   [
     ( DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT
     , "HOST_ONLY_POOL_BIT_EXT"
+    )
+  ,
+    ( DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT
+    , "EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT"
+    )
+  ,
+    ( DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
+    , "DESCRIPTOR_BUFFER_BIT_EXT"
     )
   ,
     ( DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
diff --git a/src/Vulkan/Core10/Enums/DescriptorType.hs b/src/Vulkan/Core10/Enums/DescriptorType.hs
--- a/src/Vulkan/Core10/Enums/DescriptorType.hs
+++ b/src/Vulkan/Core10/Enums/DescriptorType.hs
@@ -141,6 +141,7 @@
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorGetInfoEXT',
 -- 'Vulkan.Core10.DescriptorSet.DescriptorPoolSize',
 -- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.DescriptorUpdateTemplateEntry',
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
@@ -272,6 +272,7 @@
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2',
 -- 'Vulkan.Core10.BufferView.BufferViewCreateInfo',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorAddressInfoEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentImageInfo',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV',
 -- 'Vulkan.Core10.Image.ImageCreateInfo',
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
@@ -9,6 +9,7 @@
                                                                      , IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM
                                                                      , IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT
                                                                      , IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT
+                                                                     , IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT
                                                                      , IMAGE_CREATE_SUBSAMPLED_BIT_EXT
                                                                      , IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
                                                                      , IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
@@ -103,6 +104,13 @@
 -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#multisampled-render-to-single-sampled multisampled rendering as a single-sampled framebuffer attachment>
 pattern IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT = ImageCreateFlagBits 0x00040000
 
+-- | 'IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT' specifies that
+-- the image /can/ be used with descriptor buffers when capturing and
+-- replaying (e.g. for trace capture and replay), see
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
+-- for more detail.
+pattern IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = ImageCreateFlagBits 0x00010000
+
 -- | 'IMAGE_CREATE_SUBSAMPLED_BIT_EXT' specifies that an image /can/ be in a
 -- subsampled format which /may/ be more optimal when written as an
 -- attachment by a render pass that has a fragment density map attachment.
@@ -245,6 +253,10 @@
   ,
     ( IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT
     , "MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT"
+    )
+  ,
+    ( IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT
+    , "DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT"
     )
   ,
     ( IMAGE_CREATE_SUBSAMPLED_BIT_EXT
diff --git a/src/Vulkan/Core10/Enums/ImageViewCreateFlagBits.hs b/src/Vulkan/Core10/Enums/ImageViewCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/ImageViewCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/ImageViewCreateFlagBits.hs
@@ -2,6 +2,7 @@
 -- No documentation found for Chapter "ImageViewCreateFlagBits"
 module Vulkan.Core10.Enums.ImageViewCreateFlagBits  ( ImageViewCreateFlags
                                                     , ImageViewCreateFlagBits( IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT
+                                                                             , IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT
                                                                              , IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT
                                                                              , ..
                                                                              )
@@ -36,6 +37,13 @@
 -- buffer that the render pass is recorded into
 pattern IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = ImageViewCreateFlagBits 0x00000002
 
+-- | 'IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT' specifies
+-- that the image view /can/ be used with descriptor buffers when capturing
+-- and replaying (e.g. for trace capture and replay), see
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
+-- for more detail.
+pattern IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = ImageViewCreateFlagBits 0x00000004
+
 -- | 'IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT' specifies that
 -- the fragment density map will be read by device during
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
@@ -45,17 +53,21 @@
 conNameImageViewCreateFlagBits = "ImageViewCreateFlagBits"
 
 enumPrefixImageViewCreateFlagBits :: String
-enumPrefixImageViewCreateFlagBits = "IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_D"
+enumPrefixImageViewCreateFlagBits = "IMAGE_VIEW_CREATE_"
 
 showTableImageViewCreateFlagBits :: [(ImageViewCreateFlagBits, String)]
 showTableImageViewCreateFlagBits =
   [
     ( IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT
-    , "EFERRED_BIT_EXT"
+    , "FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT"
     )
   ,
+    ( IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT
+    , "DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT"
+    )
+  ,
     ( IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT
-    , "YNAMIC_BIT_EXT"
+    , "FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT"
     )
   ]
 
diff --git a/src/Vulkan/Core10/Enums/PipelineBindPoint.hs b/src/Vulkan/Core10/Enums/PipelineBindPoint.hs
--- a/src/Vulkan/Core10/Enums/PipelineBindPoint.hs
+++ b/src/Vulkan/Core10/Enums/PipelineBindPoint.hs
@@ -28,10 +28,12 @@
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutCreateInfoNV',
 -- 'Vulkan.Core10.Pass.SubpassDescription',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDescription2',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdBindDescriptorBufferEmbeddedSamplersEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindPipeline',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdBindPipelineShaderGroupNV',
--- 'Vulkan.Extensions.VK_KHR_push_descriptor.cmdPushDescriptorSetKHR'
+-- 'Vulkan.Extensions.VK_KHR_push_descriptor.cmdPushDescriptorSetKHR',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT'
 newtype PipelineBindPoint = PipelineBindPoint Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
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
@@ -12,6 +12,7 @@
                                                                            , PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV
                                                                            , PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT
                                                                            , PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT
+                                                                           , PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
                                                                            , PIPELINE_CREATE_LIBRARY_BIT_KHR
                                                                            , PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV
                                                                            , PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR
@@ -181,6 +182,12 @@
 --     necessary to later perform an optimal link with
 --     'PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT'.
 --
+-- -   'PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT' specifies that a
+--     pipeline will be used with
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorbuffers descriptor buffers>,
+--     rather than
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets descriptor sets>.
+--
 -- -   'PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT' specifies
 --     that the pipeline /may/ be used with an attachment feedback loop
 --     including color attachments.
@@ -266,6 +273,9 @@
 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT"
 pattern PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT = PipelineCreateFlagBits 0x00800000
 
+-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT"
+pattern PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT = PipelineCreateFlagBits 0x20000000
+
 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_LIBRARY_BIT_KHR"
 pattern PIPELINE_CREATE_LIBRARY_BIT_KHR = PipelineCreateFlagBits 0x00000800
 
@@ -371,6 +381,10 @@
   ,
     ( PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT
     , "RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT"
+    )
+  ,
+    ( PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT
+    , "DESCRIPTOR_BUFFER_BIT_EXT"
     )
   ,
     ( PIPELINE_CREATE_LIBRARY_BIT_KHR
diff --git a/src/Vulkan/Core10/Enums/SamplerCreateFlagBits.hs b/src/Vulkan/Core10/Enums/SamplerCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/SamplerCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/SamplerCreateFlagBits.hs
@@ -3,6 +3,7 @@
 module Vulkan.Core10.Enums.SamplerCreateFlagBits  ( SamplerCreateFlags
                                                   , SamplerCreateFlagBits( SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
                                                                          , SAMPLER_CREATE_NON_SEAMLESS_CUBE_MAP_BIT_EXT
+                                                                         , SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT
                                                                          , SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT
                                                                          , SAMPLER_CREATE_SUBSAMPLED_BIT_EXT
                                                                          , ..
@@ -55,6 +56,13 @@
 -- is not performed.
 pattern SAMPLER_CREATE_NON_SEAMLESS_CUBE_MAP_BIT_EXT = SamplerCreateFlagBits 0x00000004
 
+-- | 'SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT' specifies that
+-- the sampler /can/ be used with descriptor buffers when capturing and
+-- replaying (e.g. for trace capture and replay), see
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
+-- for more detail.
+pattern SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = SamplerCreateFlagBits 0x00000008
+
 -- | 'SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT' specifies that
 -- the implementation /may/ use approximations when reconstructing a full
 -- color value for texture access from a subsampled image.
@@ -81,6 +89,10 @@
   ,
     ( SAMPLER_CREATE_NON_SEAMLESS_CUBE_MAP_BIT_EXT
     , "NON_SEAMLESS_CUBE_MAP_BIT_EXT"
+    )
+  ,
+    ( SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT
+    , "DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT"
     )
   ,
     ( SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT
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
@@ -187,6 +187,19 @@
                                                         , STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT
+                                                        , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
+                                                        , STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT
+                                                        , STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT
+                                                        , STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT
+                                                        , STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
+                                                        , STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
+                                                        , STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
+                                                        , STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
+                                                        , STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT
+                                                        , STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT
                                                         , STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV
                                                         , STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV
                                                         , STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT
@@ -682,6 +695,7 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureBuildGeometryInfoKHR',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureBuildSizesInfoKHR',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.AccelerationStructureCaptureDescriptorDataInfoEXT',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCreateInfoKHR',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureDeviceAddressInfoKHR',
@@ -721,6 +735,7 @@
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.BindSparseInfo',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkBindVideoSessionMemoryInfoKHR VkBindVideoSessionMemoryInfoKHR>,
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BlitImageInfo2',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.BufferCaptureDescriptorDataInfoEXT',
 -- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferCollectionBufferCreateInfoFUCHSIA',
 -- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferCollectionConstraintsInfoFUCHSIA',
 -- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferCollectionCreateInfoFUCHSIA',
@@ -781,6 +796,10 @@
 -- 'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationImageCreateInfoNV',
 -- 'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.DependencyInfo',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorAddressInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorBufferBindingInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorBufferBindingPushDescriptorBufferHandleEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorGetInfoEXT',
 -- 'Vulkan.Core10.DescriptorSet.DescriptorPoolCreateInfo',
 -- 'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.DescriptorPoolInlineUniformBlockCreateInfo',
 -- 'Vulkan.Core10.DescriptorSet.DescriptorSetAllocateInfo',
@@ -879,6 +898,7 @@
 -- 'Vulkan.Extensions.VK_EXT_headless_surface.HeadlessSurfaceCreateInfoEXT',
 -- 'Vulkan.Extensions.VK_MVK_ios_surface.IOSSurfaceCreateInfoMVK',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageBlit2',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.ImageCaptureDescriptorDataInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_image_compression_control.ImageCompressionControlEXT',
 -- 'Vulkan.Extensions.VK_EXT_image_compression_control.ImageCompressionPropertiesEXT',
 -- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.ImageConstraintsInfoFUCHSIA',
@@ -902,6 +922,7 @@
 -- 'Vulkan.Extensions.VK_KHR_swapchain.ImageSwapchainCreateInfoKHR',
 -- 'Vulkan.Extensions.VK_EXT_astc_decode_mode.ImageViewASTCDecodeModeEXT',
 -- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewAddressPropertiesNVX',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.ImageViewCaptureDescriptorDataInfoEXT',
 -- 'Vulkan.Core10.ImageView.ImageViewCreateInfo',
 -- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewHandleInfoNVX',
 -- 'Vulkan.Extensions.VK_EXT_image_view_min_lod.ImageViewMinLodCreateInfoEXT',
@@ -956,6 +977,7 @@
 -- 'Vulkan.Extensions.VK_EXT_multisampled_render_to_single_sampled.MultisampledRenderToSingleSampledInfoEXT',
 -- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.MultiviewPerViewAttributesInfoNVX',
 -- 'Vulkan.Extensions.VK_EXT_mutable_descriptor_type.MutableDescriptorTypeCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT',
 -- 'Vulkan.Extensions.VK_NV_optical_flow.OpticalFlowExecuteInfoNV',
 -- 'Vulkan.Extensions.VK_NV_optical_flow.OpticalFlowImageFormatInfoNV',
 -- 'Vulkan.Extensions.VK_NV_optical_flow.OpticalFlowImageFormatPropertiesNV',
@@ -1000,6 +1022,9 @@
 -- 'Vulkan.Extensions.VK_EXT_depth_clip_control.PhysicalDeviceDepthClipControlFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_depth_clip_enable.PhysicalDeviceDepthClipEnableFeaturesEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferPropertiesEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingFeatures',
 -- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties',
 -- 'Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping.PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE',
@@ -1282,6 +1307,7 @@
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ResolveImageInfo2',
 -- 'Vulkan.Extensions.VK_EXT_sample_locations.SampleLocationsInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_border_color_swizzle.SamplerBorderColorComponentMappingCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.SamplerCaptureDescriptorDataInfoEXT',
 -- 'Vulkan.Core10.Sampler.SamplerCreateInfo',
 -- 'Vulkan.Extensions.VK_EXT_custom_border_color.SamplerCustomBorderColorCreateInfoEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo',
@@ -1966,6 +1992,45 @@
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT"
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT = StructureType 1000320000
 
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"
+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = StructureType 1000316009
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT"
+pattern STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT = StructureType 1000316012
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT"
+pattern STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT = StructureType 1000316011
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT = StructureType 1000316010
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"
+pattern STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = StructureType 1000316008
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"
+pattern STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = StructureType 1000316007
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"
+pattern STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = StructureType 1000316006
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"
+pattern STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = StructureType 1000316005
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT"
+pattern STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT = StructureType 1000316004
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT"
+pattern STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT = StructureType 1000316003
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT = StructureType 1000316002
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT = StructureType 1000316001
+
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT = StructureType 1000316000
+
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV"
 pattern STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = StructureType 1000314009
 
@@ -3582,6 +3647,19 @@
   , STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT
   , STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT
   , STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT
+  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
+  , STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT
+  , STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT
+  , STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT
+  , STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
+  , STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
+  , STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
+  , STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
+  , STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT
+  , STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT
+  , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT
   , STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV
   , STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV
   , STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT
@@ -4804,6 +4882,58 @@
   ,
     ( STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT
     , "PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
+    , "ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT
+    , "DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT
+    , "DESCRIPTOR_BUFFER_BINDING_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT
+    , "OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
+    , "SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
+    , "IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
+    , "IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT
+    , "BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT
+    , "DESCRIPTOR_GET_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT
+    , "DESCRIPTOR_ADDRESS_INFO_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT
+    , "PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT"
+    )
+  ,
+    ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT
+    , "PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT"
     )
   ,
     ( STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV
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
@@ -454,6 +454,8 @@
 -- 'Vulkan.Extensions.VK_EXT_depth_clip_control.PhysicalDeviceDepthClipControlFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_depth_clip_enable.PhysicalDeviceDepthClipEnableFeaturesEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferFeaturesEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferPropertiesEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingFeatures',
 -- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties',
 -- 'Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping.PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE',
@@ -844,6 +846,7 @@
 -- 'Vulkan.Extensions.VK_EXT_conditional_rendering.ConditionalRenderingBeginInfoEXT',
 -- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.CopyMemoryIndirectCommandNV',
 -- 'Vulkan.Extensions.VK_NV_memory_decompression.DecompressMemoryRegionNV',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorAddressInfoEXT',
 -- 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo',
 -- 'Vulkan.Extensions.VK_EXT_device_address_binding_report.DeviceAddressBindingCallbackDataEXT',
 -- 'Vulkan.Extensions.VK_EXT_device_fault.DeviceFaultAddressInfoEXT',
@@ -862,6 +865,7 @@
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.MicromapBuildInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.MicromapBuildSizesInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.MicromapCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferPropertiesEXT',
 -- 'Vulkan.Extensions.VK_EXT_external_memory_host.PhysicalDeviceExternalMemoryHostPropertiesEXT',
 -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.PhysicalDeviceMaintenance3Properties',
@@ -907,10 +911,13 @@
 -- 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectNV',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdFillBuffer',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdUpdateBuffer',
 -- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdWriteBufferMarker2AMD',
 -- 'Vulkan.Extensions.VK_AMD_buffer_marker.cmdWriteBufferMarkerAMD',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.getDescriptorSetLayoutBindingOffsetEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.getDescriptorSetLayoutSizeEXT',
 -- 'Vulkan.Core10.Memory.getDeviceMemoryCommitment',
 -- 'Vulkan.Core10.Query.getQueryPoolResults',
 -- 'Vulkan.Core10.Memory.mapMemory'
@@ -929,6 +936,9 @@
 -- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.CopyMemoryIndirectCommandNV',
 -- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.CopyMemoryToImageIndirectCommandNV',
 -- 'Vulkan.Extensions.VK_NV_memory_decompression.DecompressMemoryRegionNV',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorAddressInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorBufferBindingInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorDataEXT',
 -- 'Vulkan.Extensions.VK_EXT_device_address_binding_report.DeviceAddressBindingCallbackDataEXT',
 -- 'Vulkan.Extensions.VK_EXT_device_fault.DeviceFaultAddressInfoEXT',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR',
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
@@ -72,6 +72,9 @@
 -- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.CopyMemoryIndirectCommandNV',
 -- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.CopyMemoryToImageIndirectCommandNV',
 -- 'Vulkan.Extensions.VK_NV_memory_decompression.DecompressMemoryRegionNV',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorAddressInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorBufferBindingInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorDataEXT',
 -- 'Vulkan.Extensions.VK_EXT_device_address_binding_report.DeviceAddressBindingCallbackDataEXT',
 -- 'Vulkan.Extensions.VK_EXT_device_fault.DeviceFaultAddressInfoEXT',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.DeviceOrHostAddressConstKHR',
@@ -116,6 +119,7 @@
 -- 'Vulkan.Extensions.VK_EXT_conditional_rendering.ConditionalRenderingBeginInfoEXT',
 -- 'Vulkan.Extensions.VK_NV_copy_memory_indirect.CopyMemoryIndirectCommandNV',
 -- 'Vulkan.Extensions.VK_NV_memory_decompression.DecompressMemoryRegionNV',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorAddressInfoEXT',
 -- 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo',
 -- 'Vulkan.Extensions.VK_EXT_device_address_binding_report.DeviceAddressBindingCallbackDataEXT',
 -- 'Vulkan.Extensions.VK_EXT_device_fault.DeviceFaultAddressInfoEXT',
@@ -134,6 +138,7 @@
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.MicromapBuildInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.MicromapBuildSizesInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_opacity_micromap.MicromapCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferPropertiesEXT',
 -- 'Vulkan.Extensions.VK_EXT_external_memory_host.PhysicalDeviceExternalMemoryHostPropertiesEXT',
 -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.PhysicalDeviceMaintenance3Properties',
@@ -179,10 +184,13 @@
 -- 'Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectNV',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdFillBuffer',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdUpdateBuffer',
 -- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdWriteBufferMarker2AMD',
 -- 'Vulkan.Extensions.VK_AMD_buffer_marker.cmdWriteBufferMarkerAMD',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.getDescriptorSetLayoutBindingOffsetEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.getDescriptorSetLayoutSizeEXT',
 -- 'Vulkan.Core10.Memory.getDeviceMemoryCommitment',
 -- 'Vulkan.Core10.Query.getQueryPoolResults',
 -- 'Vulkan.Core10.Memory.mapMemory'
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
@@ -343,6 +343,7 @@
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.getAccelerationStructureDeviceAddressKHR',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureMemoryRequirementsNV',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.getAccelerationStructureOpaqueCaptureDescriptorDataEXT',
 -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.getAndroidHardwareBufferPropertiesANDROID',
 -- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.getBufferCollectionPropertiesFUCHSIA',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress',
@@ -353,11 +354,15 @@
 -- 'Vulkan.Extensions.VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2KHR',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferOpaqueCaptureAddress',
 -- 'Vulkan.Extensions.VK_KHR_buffer_device_address.getBufferOpaqueCaptureAddressKHR',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.getBufferOpaqueCaptureDescriptorDataEXT',
 -- 'Vulkan.Extensions.VK_EXT_calibrated_timestamps.getCalibratedTimestampsEXT',
 -- 'Vulkan.Extensions.VK_KHR_deferred_host_operations.getDeferredOperationMaxConcurrencyKHR',
 -- 'Vulkan.Extensions.VK_KHR_deferred_host_operations.getDeferredOperationResultKHR',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.getDescriptorEXT',
 -- 'Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping.getDescriptorSetHostMappingVALVE',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.getDescriptorSetLayoutBindingOffsetEXT',
 -- 'Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping.getDescriptorSetLayoutHostMappingInfoVALVE',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.getDescriptorSetLayoutSizeEXT',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.getDescriptorSetLayoutSupport',
 -- 'Vulkan.Extensions.VK_KHR_maintenance3.getDescriptorSetLayoutSupportKHR',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.getDeviceAccelerationStructureCompatibilityKHR',
@@ -392,6 +397,7 @@
 -- 'Vulkan.Core10.MemoryManagement.getImageMemoryRequirements',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2',
 -- 'Vulkan.Extensions.VK_KHR_get_memory_requirements2.getImageMemoryRequirements2KHR',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.getImageOpaqueCaptureDescriptorDataEXT',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.getImageSparseMemoryRequirements',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageSparseMemoryRequirements2',
 -- 'Vulkan.Extensions.VK_KHR_get_memory_requirements2.getImageSparseMemoryRequirements2KHR',
@@ -399,6 +405,7 @@
 -- 'Vulkan.Extensions.VK_EXT_image_compression_control.getImageSubresourceLayout2EXT',
 -- 'Vulkan.Extensions.VK_NVX_image_view_handle.getImageViewAddressNVX',
 -- 'Vulkan.Extensions.VK_NVX_image_view_handle.getImageViewHandleNVX',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.getImageViewOpaqueCaptureDescriptorDataEXT',
 -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.getMemoryAndroidHardwareBufferANDROID',
 -- 'Vulkan.Extensions.VK_KHR_external_memory_fd.getMemoryFdKHR',
 -- 'Vulkan.Extensions.VK_KHR_external_memory_fd.getMemoryFdPropertiesKHR',
@@ -426,6 +433,7 @@
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.getRayTracingShaderGroupStackSizeKHR',
 -- 'Vulkan.Extensions.VK_GOOGLE_display_timing.getRefreshCycleDurationGOOGLE',
 -- 'Vulkan.Core10.Pass.getRenderAreaGranularity',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.getSamplerOpaqueCaptureDescriptorDataEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.getSemaphoreCounterValue',
 -- 'Vulkan.Extensions.VK_KHR_timeline_semaphore.getSemaphoreCounterValueKHR',
 -- 'Vulkan.Extensions.VK_KHR_external_semaphore_fd.getSemaphoreFdKHR',
@@ -555,6 +563,8 @@
 -- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR vkCmdBeginVideoCodingKHR>,
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdBindDescriptorBufferEmbeddedSamplersEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdBindDescriptorBuffersEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer',
 -- 'Vulkan.Extensions.VK_HUAWEI_invocation_mask.cmdBindInvocationMaskHUAWEI',
@@ -696,6 +706,7 @@
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetDepthTestEnableEXT',
 -- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnableEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.cmdSetDeviceMask',
 -- 'Vulkan.Extensions.VK_KHR_device_group.cmdSetDeviceMaskKHR',
 -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT',
@@ -853,6 +864,7 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCreateInfoKHR',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.BufferCaptureDescriptorDataInfoEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.BufferDeviceAddressInfo',
 -- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.BufferMemoryBarrier2',
@@ -863,6 +875,7 @@
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.CopyBufferToImageInfo2',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.CopyImageToBufferInfo2',
 -- 'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorBufferBindingPushDescriptorBufferHandleEXT',
 -- 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsInfoNV',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryAABBNV',
@@ -948,6 +961,7 @@
 -- 'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV',
 -- 'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalIOSurfaceInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalTextureInfoEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.ImageCaptureDescriptorDataInfoEXT',
 -- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.ImageMemoryBarrier2',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.ImageMemoryRequirementsInfo2',
@@ -990,6 +1004,7 @@
 -- 'Vulkan.Core10.DescriptorSet.DescriptorImageInfo',
 -- 'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalTextureInfoEXT',
 -- 'Vulkan.Core10.Pass.FramebufferCreateInfo',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.ImageViewCaptureDescriptorDataInfoEXT',
 -- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewHandleInfoNVX',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo',
 -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingAttachmentInfo',
@@ -1077,10 +1092,12 @@
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutTokenNV',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdBindDescriptorBufferEmbeddedSamplersEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdPushConstants',
 -- 'Vulkan.Extensions.VK_KHR_push_descriptor.cmdPushDescriptorSetKHR',
 -- 'Vulkan.Extensions.VK_KHR_push_descriptor.cmdPushDescriptorSetWithTemplateKHR',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
 -- 'Vulkan.Core10.PipelineLayout.createPipelineLayout',
 -- 'Vulkan.Core10.PipelineLayout.destroyPipelineLayout'
 newtype PipelineLayout = PipelineLayout Word64
@@ -1097,9 +1114,11 @@
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.DescriptorDataEXT',
 -- 'Vulkan.Core10.DescriptorSet.DescriptorImageInfo',
 -- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding',
 -- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewHandleInfoNVX',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.SamplerCaptureDescriptorDataInfoEXT',
 -- 'Vulkan.Core10.Sampler.createSampler',
 -- 'Vulkan.Core10.Sampler.destroySampler'
 newtype Sampler = Sampler Word64
@@ -1143,7 +1162,9 @@
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.DescriptorUpdateTemplateCreateInfo',
 -- 'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo',
 -- 'Vulkan.Core10.DescriptorSet.createDescriptorSetLayout',
--- 'Vulkan.Core10.DescriptorSet.destroyDescriptorSetLayout'
+-- 'Vulkan.Core10.DescriptorSet.destroyDescriptorSetLayout',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.getDescriptorSetLayoutBindingOffsetEXT',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.getDescriptorSetLayoutSizeEXT'
 newtype DescriptorSetLayout = DescriptorSetLayout Word64
   deriving newtype (Eq, Ord, Storable, Zero)
   deriving anyclass (IsHandle)
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
@@ -90,6 +90,7 @@
 import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ImportMetalIOSurfaceInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_metal_objects (ImportMetalTextureInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (OpaqueCaptureDescriptorDataCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_optical_flow (OpticalFlowImageFormatInfoNV)
 import Vulkan.CStruct.Extends (PeekChain)
 import Vulkan.CStruct.Extends (PeekChain(..))
@@ -161,6 +162,8 @@
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_COMPRESSION_EXHAUSTED_EXT'
 --
+--     -   'Vulkan.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -1376,7 +1379,9 @@
 --     @samples@ /must/ be
 --     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
 --
--- -   #VUID-VkImageCreateInfo-tiling-02084# If @usage@ includes
+-- -   #VUID-VkImageCreateInfo-shadingRateImage-07727# If the
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     feature is enabled and @usage@ includes
 --     'Vulkan.Extensions.VK_NV_shading_rate_image.IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV',
 --     @tiling@ /must/ be
 --     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL'
@@ -1511,6 +1516,17 @@
 --     'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierExplicitCreateInfoEXT'
 --     structure
 --
+-- -   #VUID-VkImageCreateInfo-flags-08104# If @flags@ includes
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT',
+--     the
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBufferCaptureReplay descriptorBufferCaptureReplay>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkImageCreateInfo-pNext-08105# If the @pNext@ chain includes a
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
+--     structure, @flags@ /must/ contain
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--
 -- -   #VUID-VkImageCreateInfo-pNext-06783# If the @pNext@ chain includes a
 --     'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalObjectCreateInfoEXT'
 --     structure, its @exportObjectType@ member /must/ be either
@@ -1563,6 +1579,7 @@
 --     'Vulkan.Extensions.VK_KHR_swapchain.ImageSwapchainCreateInfoKHR',
 --     'Vulkan.Extensions.VK_EXT_metal_objects.ImportMetalIOSurfaceInfoEXT',
 --     'Vulkan.Extensions.VK_EXT_metal_objects.ImportMetalTextureInfoEXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT',
 --     'Vulkan.Extensions.VK_NV_optical_flow.OpticalFlowImageFormatInfoNV',
 --     or
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoProfileListInfoKHR VkVideoProfileListInfoKHR>
@@ -1686,6 +1703,7 @@
     | Just Refl <- eqT @e @ExportMetalObjectCreateInfoEXT = Just f
     | Just Refl <- eqT @e @ImageCompressionControlEXT = Just f
     | Just Refl <- eqT @e @BufferCollectionImageCreateInfoFUCHSIA = Just f
+    | Just Refl <- eqT @e @OpaqueCaptureDescriptorDataCreateInfoEXT = Just f
     | Just Refl <- eqT @e @ImageStencilUsageCreateInfo = Just f
     | Just Refl <- eqT @e @ImageDrmFormatModifierExplicitCreateInfoEXT = Just f
     | Just Refl <- eqT @e @ImageDrmFormatModifierListCreateInfoEXT = Just f
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
@@ -75,6 +75,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_image_processing (ImageViewSampleWeightCreateInfoQCOM)
 import Vulkan.Core10.Enums.ImageViewType (ImageViewType)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (ImageViewUsageCreateInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (OpaqueCaptureDescriptorDataCreateInfoEXT)
 import Vulkan.CStruct.Extends (PeekChain)
 import Vulkan.CStruct.Extends (PeekChain(..))
 import Vulkan.CStruct.Extends (PokeChain)
@@ -128,6 +129,8 @@
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
+--     -   'Vulkan.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -1206,6 +1209,18 @@
 --     members of @components@ /must/ have the
 --     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
 --
+-- -   #VUID-VkImageViewCreateInfo-flags-08106# If @flags@ includes
+--     'Vulkan.Core10.Enums.ImageViewCreateFlagBits.IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT',
+--     the
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBufferCaptureReplay descriptorBufferCaptureReplay>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkImageViewCreateInfo-pNext-08107# If the @pNext@ chain
+--     includes a
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
+--     structure, @flags@ /must/ contain
+--     'Vulkan.Core10.Enums.ImageViewCreateFlagBits.IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--
 -- -   #VUID-VkImageViewCreateInfo-pNext-06787# If the @pNext@ chain
 --     includes a
 --     'Vulkan.Extensions.VK_EXT_metal_objects.ExportMetalObjectCreateInfoEXT'
@@ -1330,6 +1345,7 @@
 --     'Vulkan.Extensions.VK_EXT_image_view_min_lod.ImageViewMinLodCreateInfoEXT',
 --     'Vulkan.Extensions.VK_QCOM_image_processing.ImageViewSampleWeightCreateInfoQCOM',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.ImageViewUsageCreateInfo',
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT',
 --     or
 --     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo'
 --
@@ -1406,6 +1422,7 @@
     | Just Refl <- eqT @e @ImageViewSampleWeightCreateInfoQCOM = Just f
     | Just Refl <- eqT @e @ExportMetalObjectCreateInfoEXT = Just f
     | Just Refl <- eqT @e @ImageViewMinLodCreateInfoEXT = Just f
+    | Just Refl <- eqT @e @OpaqueCaptureDescriptorDataCreateInfoEXT = Just f
     | Just Refl <- eqT @e @ImageViewASTCDecodeModeEXT = Just f
     | Just Refl <- eqT @e @SamplerYcbcrConversionInfo = Just f
     | Just Refl <- eqT @e @ImageViewUsageCreateInfo = Just f
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
@@ -227,6 +227,15 @@
 --     'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.ImportMemoryBufferCollectionFUCHSIA'
 --     chained to 'Vulkan.Core10.Memory.MemoryAllocateInfo'::@pNext@
 --
+-- -   #VUID-vkBindBufferMemory-descriptorBufferCaptureReplay-08112# If the
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferFeaturesEXT'
+--     ::@descriptorBufferCaptureReplay@ feature is enabled and @buffer@
+--     was created with the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--     bit set, @memory@ /must/ have been allocated with the
+--     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT'
+--     bit set
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkBindBufferMemory-device-parameter# @device@ /must/ be a
@@ -470,6 +479,15 @@
 --     /must/ also have been set in
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'::@handleTypes@
 --     when @image@ was created
+--
+-- -   #VUID-vkBindImageMemory-descriptorBufferCaptureReplay-08113# If the
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferFeaturesEXT'
+--     ::@descriptorBufferCaptureReplay@ feature is enabled and @image@ was
+--     created with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--     bit set, @memory@ /must/ have been allocated with the
+--     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT'
+--     bit set
 --
 -- -   #VUID-vkBindImageMemory-image-01608# @image@ /must/ not have been
 --     created with the
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
@@ -3982,6 +3982,41 @@
 --     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',
 --     @pStages@ /must/ include tessellation shader stages
 --
+-- -   #VUID-VkGraphicsPipelineCreateInfo-Vertex-07722# If the pipeline is
+--     being created with a @Vertex@ @Execution@ @Model@ and no
+--     @TessellationEvaluation@ or @Geometry@ @Execution@ @Model@, and the
+--     @topology@ member of @pInputAssembly@ is
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST',
+--     a @PointSize@ decorated variable /must/ be written to
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-TessellationEvaluation-07723# If
+--     the pipeline is being created with a @TessellationEvaluation@
+--     @Execution@ @Model@, no @Geometry@ @Execution@ @Model@, uses the
+--     @PointMode@ @Execution@ @Mode@, and
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderTessellationAndGeometryPointSize shaderTessellationAndGeometryPointSize>
+--     is enabled, a @PointSize@ decorated variable /must/ be written to
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-TessellationEvaluation-07724# If
+--     the pipeline is being created with a @TessellationEvaluation@
+--     @Execution@ @Model@, no @Geometry@ @Execution@ @Model@, uses the
+--     @PointMode@ @Execution@ @Mode@, and
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderTessellationAndGeometryPointSize shaderTessellationAndGeometryPointSize>
+--     is not enabled, a @PointSize@ decorated variable /must/ not be
+--     written to
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-Geometry-07725# If the pipeline
+--     is being created with a @Geometry@ @Execution@ @Model@, uses the
+--     @OutputPoints@ @Execution@ @Mode@, and
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderTessellationAndGeometryPointSize shaderTessellationAndGeometryPointSize>
+--     is enabled, a @PointSize@ decorated variable /must/ be written to
+--
+-- -   #VUID-VkGraphicsPipelineCreateInfo-Geometry-07726# If the pipeline
+--     is being created with a @Geometry@ @Execution@ @Model@, uses the
+--     @OutputPoints@ @Execution@ @Mode@, and
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderTessellationAndGeometryPointSize shaderTessellationAndGeometryPointSize>
+--     is not enabled, a @PointSize@ decorated variable /must/ not be
+--     written to
+--
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00738# If the pipeline is
 --     being created with
 --     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics-subsets-pre-rasterization pre-rasterization shader state>
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
@@ -688,6 +688,14 @@
 --     is not enabled, elements of @pSetLayouts@ /must/ be valid
 --     'Vulkan.Core10.Handles.DescriptorSetLayout' objects
 --
+-- -   #VUID-VkPipelineLayoutCreateInfo-pSetLayouts-08008# If any element
+--     of @pSetLayouts@ was created with the
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--     bit set, all elements of @pSetLayouts@ /must/ have been created with
+--     the
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--     bit set
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkPipelineLayoutCreateInfo-sType-sType# @sType@ /must/ be
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
@@ -69,6 +69,7 @@
 import Vulkan.CStruct.Extends (Extendss)
 import Vulkan.CStruct.Extends (Extensible(..))
 import Vulkan.Core10.Enums.Filter (Filter)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (OpaqueCaptureDescriptorDataCreateInfoEXT)
 import Vulkan.CStruct.Extends (PeekChain)
 import Vulkan.CStruct.Extends (PeekChain(..))
 import Vulkan.CStruct.Extends (PokeChain)
@@ -140,6 +141,8 @@
 --
 --     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
 --
+--     -   'Vulkan.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
@@ -503,6 +506,18 @@
 --     'Vulkan.Extensions.VK_EXT_custom_border_color.PhysicalDeviceCustomBorderColorPropertiesEXT'
 --     structure
 --
+-- -   #VUID-VkSamplerCreateInfo-flags-08110# If @flags@ includes
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT',
+--     the
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBufferCaptureReplay descriptorBufferCaptureReplay>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkSamplerCreateInfo-pNext-08111# If the @pNext@ chain includes
+--     a
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
+--     structure, @flags@ /must/ contain
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--
 -- -   #VUID-VkSamplerCreateInfo-flags-06964# If @flags@ includes
 --     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM',
 --     then @minFilter@ and @magFilter@ /must/ be
@@ -549,6 +564,7 @@
 -- -   #VUID-VkSamplerCreateInfo-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_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT',
 --     'Vulkan.Extensions.VK_EXT_border_color_swizzle.SamplerBorderColorComponentMappingCreateInfoEXT',
 --     'Vulkan.Extensions.VK_EXT_custom_border_color.SamplerCustomBorderColorCreateInfoEXT',
 --     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo',
@@ -705,6 +721,7 @@
   getNext SamplerCreateInfo{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends SamplerCreateInfo e => b) -> Maybe b
   extends _ f
+    | Just Refl <- eqT @e @OpaqueCaptureDescriptorDataCreateInfoEXT = Just f
     | Just Refl <- eqT @e @SamplerBorderColorComponentMappingCreateInfoEXT = Just f
     | Just Refl <- eqT @e @SamplerCustomBorderColorCreateInfoEXT = Just f
     | Just Refl <- eqT @e @SamplerReductionModeCreateInfo = Just f
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
@@ -333,6 +333,16 @@
 --     'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.ImportMemoryBufferCollectionFUCHSIA'
 --     chained to 'Vulkan.Core10.Memory.MemoryAllocateInfo'::@pNext@
 --
+-- -   #VUID-VkBindBufferMemoryInfo-descriptorBufferCaptureReplay-08112# If
+--     the
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferFeaturesEXT'
+--     ::@descriptorBufferCaptureReplay@ feature is enabled and @buffer@
+--     was created with the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--     bit set, @memory@ /must/ have been allocated with the
+--     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT'
+--     bit set
+--
 -- -   #VUID-VkBindBufferMemoryInfo-pNext-01605# If the @pNext@ chain
 --     includes a
 --     'Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindBufferMemoryDeviceGroupInfo'
@@ -541,6 +551,16 @@
 --     /must/ also have been set in
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'::@handleTypes@
 --     when @image@ was created
+--
+-- -   #VUID-VkBindImageMemoryInfo-descriptorBufferCaptureReplay-08113# If
+--     the
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferFeaturesEXT'
+--     ::@descriptorBufferCaptureReplay@ feature is enabled and @image@ was
+--     created with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--     bit set, @memory@ /must/ have been allocated with the
+--     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT'
+--     bit set
 --
 -- -   #VUID-VkBindImageMemoryInfo-pNext-01615# If the @pNext@ chain does
 --     not include 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
@@ -398,13 +398,44 @@
 --     create the current 'Vulkan.Core10.Handles.Pipeline', as described in
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
 --
--- -   #VUID-vkCmdDispatchBase-None-02699# Descriptors in each bound
+-- -   #VUID-vkCmdDispatchBase-None-08114# Descriptors in each bound
 --     descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command
+--     be valid if they are statically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchBase-None-08115# If the descriptors used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchBase-None-08116# Descriptors in bound descriptor
+--     buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchBase-None-08117# If the descriptors used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchBase-None-08119# If a descriptor is dynamically
+--     used with a 'Vulkan.Core10.Handles.Pipeline' created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident.
 --
 -- -   #VUID-vkCmdDispatchBase-None-02700# A valid pipeline /must/ be bound
 --     to the pipeline bind point used by this command
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_get_physical_device_properties2.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_get_physical_device_properties2.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_get_physical_device_properties2.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_get_physical_device_properties2.hs
@@ -127,6 +127,9 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clip_control (PhysicalDeviceDepthClipControlFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_depth_clip_enable (PhysicalDeviceDepthClipEnableFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve (PhysicalDeviceDepthStencilResolveProperties)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (PhysicalDeviceDescriptorBufferFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (PhysicalDeviceDescriptorBufferPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (PhysicalDeviceDescriptorIndexingFeatures)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (PhysicalDeviceDescriptorIndexingProperties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_descriptor_set_host_mapping (PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE)
@@ -874,6 +877,7 @@
     | Just Refl <- eqT @e @PhysicalDeviceRayTracingMotionBlurFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFragmentShaderBarycentricFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderIntegerDotProductFeatures = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceDescriptorBufferFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceProvokingVertexFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceInheritedViewportScissorFeaturesNV = Just f
@@ -1044,6 +1048,8 @@
 --     'Vulkan.Extensions.VK_NV_copy_memory_indirect.PhysicalDeviceCopyMemoryIndirectPropertiesNV',
 --     'Vulkan.Extensions.VK_EXT_custom_border_color.PhysicalDeviceCustomBorderColorPropertiesEXT',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties',
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT',
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.PhysicalDeviceDescriptorBufferPropertiesEXT',
 --     'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties',
 --     'Vulkan.Extensions.VK_NV_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsPropertiesNV',
 --     'Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT',
@@ -1148,6 +1154,8 @@
     | Just Refl <- eqT @e @PhysicalDeviceFragmentShaderBarycentricPropertiesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDrmPropertiesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderIntegerDotProductProperties = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceDescriptorBufferPropertiesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceProvokingVertexPropertiesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFragmentShadingRateEnumsPropertiesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFragmentShadingRatePropertiesKHR = Just f
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
@@ -96,7 +96,11 @@
 -- 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
--- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'.
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK',
+-- when
+-- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutCreateInfo'::@flags@
+-- does not contain
+-- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'.
 -- In this case, @descriptorCount@ specifies the upper bound on the byte
 -- size of the binding; thus it counts against the
 -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxInlineUniformBlockSize maxInlineUniformBlockSize>
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
@@ -173,14 +173,46 @@
 --     create the current 'Vulkan.Core10.Handles.Pipeline', as described in
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
 --
--- -   #VUID-vkCmdDrawIndirectCount-None-02699# Descriptors in each bound
+-- -   #VUID-vkCmdDrawIndirectCount-None-08114# Descriptors in each bound
 --     descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command
+--     be valid if they are statically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
 --
+-- -   #VUID-vkCmdDrawIndirectCount-None-08115# If the descriptors used by
+--     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08116# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08117# If the descriptors used by
+--     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectCount-None-08119# If a descriptor is
+--     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident.
+--
 -- -   #VUID-vkCmdDrawIndirectCount-None-02700# A valid pipeline /must/ be
 --     bound to the pipeline bind point used by this command
 --
@@ -1986,13 +2018,45 @@
 --     create the current 'Vulkan.Core10.Handles.Pipeline', as described in
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
 --
--- -   #VUID-vkCmdDrawIndexedIndirectCount-None-02699# Descriptors in each
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08114# Descriptors in each
 --     bound descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command
+--     be valid if they are statically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08115# If the descriptors
+--     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
+--     bind point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08116# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08117# If the descriptors
+--     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
+--     bind point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirectCount-None-08119# If a descriptor is
+--     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident.
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-None-02700# A valid pipeline
 --     /must/ be bound to the pipeline bind point used by this command
diff --git a/src/Vulkan/Core13/Enums/AccessFlags2.hs b/src/Vulkan/Core13/Enums/AccessFlags2.hs
--- a/src/Vulkan/Core13/Enums/AccessFlags2.hs
+++ b/src/Vulkan/Core13/Enums/AccessFlags2.hs
@@ -49,6 +49,7 @@
                                                           , ACCESS_2_MICROMAP_READ_BIT_EXT
                                                           , ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR
                                                           , ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI
+                                                          , ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT
                                                           , ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT
                                                           , ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT
                                                           , ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR
@@ -407,6 +408,11 @@
 -- pipeline stage.
 pattern ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI = AccessFlagBits2 0x0000008000000000
 
+-- | 'ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT' specifies read access to a
+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorbuffers descriptor buffer>
+-- in any shader pipeline stage.
+pattern ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT = AccessFlagBits2 0x0000020000000000
+
 -- | 'ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT' specifies read
 -- access to
 -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass color attachments>,
@@ -577,6 +583,10 @@
   ,
     ( ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI
     , "INVOCATION_MASK_READ_BIT_HUAWEI"
+    )
+  ,
+    ( ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT
+    , "DESCRIPTOR_BUFFER_READ_BIT_EXT"
     )
   ,
     ( ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT
diff --git a/src/Vulkan/Core13/Promoted_From_VK_KHR_synchronization2.hs b/src/Vulkan/Core13/Promoted_From_VK_KHR_synchronization2.hs
--- a/src/Vulkan/Core13/Promoted_From_VK_KHR_synchronization2.hs
+++ b/src/Vulkan/Core13/Promoted_From_VK_KHR_synchronization2.hs
@@ -1800,6 +1800,14 @@
 --     or
 --     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
 --
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-08118# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
+--     or one of @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
 -- -   #VUID-VkMemoryBarrier2-dstStageMask-03929# If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
 --     feature is not enabled, @dstStageMask@ /must/ not contain
@@ -2176,6 +2184,14 @@
 --     or
 --     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
 --
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-08118# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
+--     or one of @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkMemoryBarrier2-sType-sType# @sType@ /must/ be
@@ -2732,6 +2748,14 @@
 --     or
 --     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
 --
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-08118# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
+--     or one of @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
 -- -   #VUID-VkImageMemoryBarrier2-dstStageMask-03929# If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
 --     feature is not enabled, @dstStageMask@ /must/ not contain
@@ -3108,6 +3132,14 @@
 --     or
 --     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
 --
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-08118# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
+--     or one of @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
 -- -   #VUID-VkImageMemoryBarrier2-subresourceRange-01486#
 --     @subresourceRange.baseMipLevel@ /must/ be less than the @mipLevels@
 --     specified in 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was
@@ -4043,6 +4075,14 @@
 --     or
 --     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
 --
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-08118# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
+--     or one of @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
 -- -   #VUID-VkBufferMemoryBarrier2-dstStageMask-03929# If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
 --     feature is not enabled, @dstStageMask@ /must/ not contain
@@ -4418,6 +4458,14 @@
 --     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT'
 --     or
 --     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-08118# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
+--     or one of @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
 --
 -- -   #VUID-VkBufferMemoryBarrier2-offset-01187# @offset@ /must/ be less
 --     than the size of @buffer@
diff --git a/src/Vulkan/Dynamic.hs b/src/Vulkan/Dynamic.hs
--- a/src/Vulkan/Dynamic.hs
+++ b/src/Vulkan/Dynamic.hs
@@ -30,6 +30,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureBuildRangeInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureBuildSizesInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureBuildTypeKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (AccelerationStructureCaptureDescriptorDataInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureCompatibilityKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureCreateInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureCreateInfoNV)
@@ -52,6 +53,7 @@
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (BlitImageInfo2)
 import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (Bool32)
 import {-# SOURCE #-} Vulkan.Core10.Handles (Buffer)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (BufferCaptureDescriptorDataInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_buffer_collection (BufferCollectionCreateInfoFUCHSIA)
 import {-# SOURCE #-} Vulkan.Extensions.Handles (BufferCollectionFUCHSIA)
 import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_buffer_collection (BufferCollectionPropertiesFUCHSIA)
@@ -128,6 +130,8 @@
 import {-# SOURCE #-} Vulkan.Extensions.Handles (DeferredOperationKHR)
 import {-# SOURCE #-} Vulkan.Core10.Enums.DependencyFlagBits (DependencyFlags)
 import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (DependencyInfo)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (DescriptorBufferBindingInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (DescriptorGetInfoEXT)
 import {-# SOURCE #-} Vulkan.Core10.Handles (DescriptorPool)
 import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorPoolCreateInfo)
 import {-# SOURCE #-} Vulkan.Core10.Enums.DescriptorPoolResetFlags (DescriptorPoolResetFlags)
@@ -206,6 +210,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_MVK_ios_surface (IOSSurfaceCreateInfoMVK)
 import {-# SOURCE #-} Vulkan.Core10.Handles (Image)
 import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ImageBlit)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (ImageCaptureDescriptorDataInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_buffer_collection (ImageConstraintsInfoFUCHSIA)
 import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ImageCopy)
 import {-# SOURCE #-} Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)
@@ -228,6 +233,7 @@
 import {-# SOURCE #-} Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)
 import {-# SOURCE #-} Vulkan.Core10.Handles (ImageView)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_image_view_handle (ImageViewAddressPropertiesNVX)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (ImageViewCaptureDescriptorDataInfoEXT)
 import {-# SOURCE #-} Vulkan.Core10.ImageView (ImageViewCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_image_view_handle (ImageViewHandleInfoNVX)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_fence_fd (ImportFenceFdInfoKHR)
@@ -352,6 +358,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (SampleLocationsInfoEXT)
 import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (SampleMask)
 import {-# SOURCE #-} Vulkan.Core10.Handles (Sampler)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (SamplerCaptureDescriptorDataInfoEXT)
 import {-# SOURCE #-} Vulkan.Core10.Sampler (SamplerCreateInfo)
 import {-# SOURCE #-} Vulkan.Core11.Handles (SamplerYcbcrConversion)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (SamplerYcbcrConversionCreateInfo)
@@ -1060,7 +1067,7 @@
   , pVkCmdDrawMeshTasksIndirectEXT :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())
   , pVkCmdDrawMeshTasksIndirectCountEXT :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("countBuffer" ::: Buffer) -> ("countBufferOffset" ::: DeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())
   , pVkCompileDeferredNV :: FunPtr (Ptr Device_T -> Pipeline -> ("shader" ::: Word32) -> IO Result)
-  , pVkCreateAccelerationStructureNV :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pAccelerationStructure" ::: Ptr AccelerationStructureNV) -> IO Result)
+  , pVkCreateAccelerationStructureNV :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (SomeStruct AccelerationStructureCreateInfoNV)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pAccelerationStructure" ::: Ptr AccelerationStructureNV) -> IO Result)
   , pVkCmdBindInvocationMaskHUAWEI :: FunPtr (Ptr CommandBuffer_T -> ImageView -> ImageLayout -> IO ())
   , pVkDestroyAccelerationStructureKHR :: FunPtr (Ptr Device_T -> AccelerationStructureKHR -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
   , pVkDestroyAccelerationStructureNV :: FunPtr (Ptr Device_T -> AccelerationStructureNV -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
@@ -1201,6 +1208,17 @@
   , 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 ())
+  , pVkGetDescriptorSetLayoutSizeEXT :: FunPtr (Ptr Device_T -> DescriptorSetLayout -> ("pLayoutSizeInBytes" ::: Ptr DeviceSize) -> IO ())
+  , pVkGetDescriptorSetLayoutBindingOffsetEXT :: FunPtr (Ptr Device_T -> DescriptorSetLayout -> ("binding" ::: Word32) -> ("pOffset" ::: Ptr DeviceSize) -> IO ())
+  , pVkGetDescriptorEXT :: FunPtr (Ptr Device_T -> ("pDescriptorInfo" ::: Ptr DescriptorGetInfoEXT) -> ("dataSize" ::: CSize) -> ("pDescriptor" ::: Ptr ()) -> IO ())
+  , pVkCmdBindDescriptorBuffersEXT :: FunPtr (Ptr CommandBuffer_T -> ("bufferCount" ::: Word32) -> ("pBindingInfos" ::: Ptr (SomeStruct DescriptorBufferBindingInfoEXT)) -> IO ())
+  , pVkCmdSetDescriptorBufferOffsetsEXT :: FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("firstSet" ::: Word32) -> ("setCount" ::: Word32) -> ("pBufferIndices" ::: Ptr Word32) -> ("pOffsets" ::: Ptr DeviceSize) -> IO ())
+  , pVkCmdBindDescriptorBufferEmbeddedSamplersEXT :: FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("set" ::: Word32) -> IO ())
+  , pVkGetBufferOpaqueCaptureDescriptorDataEXT :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr BufferCaptureDescriptorDataInfoEXT) -> ("pData" ::: Ptr ()) -> IO Result)
+  , pVkGetImageOpaqueCaptureDescriptorDataEXT :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr ImageCaptureDescriptorDataInfoEXT) -> ("pData" ::: Ptr ()) -> IO Result)
+  , pVkGetImageViewOpaqueCaptureDescriptorDataEXT :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr ImageViewCaptureDescriptorDataInfoEXT) -> ("pData" ::: Ptr ()) -> IO Result)
+  , pVkGetSamplerOpaqueCaptureDescriptorDataEXT :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr SamplerCaptureDescriptorDataInfoEXT) -> ("pData" ::: Ptr ()) -> IO Result)
+  , pVkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr AccelerationStructureCaptureDescriptorDataInfoEXT) -> ("pData" ::: Ptr ()) -> IO Result)
   , pVkSetDeviceMemoryPriorityEXT :: FunPtr (Ptr Device_T -> DeviceMemory -> ("priority" ::: CFloat) -> IO ())
   , pVkWaitForPresentKHR :: FunPtr (Ptr Device_T -> SwapchainKHR -> ("presentId" ::: Word64) -> ("timeout" ::: Word64) -> IO Result)
   , pVkCreateBufferCollectionFUCHSIA :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr BufferCollectionCreateInfoFUCHSIA) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pCollection" ::: Ptr BufferCollectionFUCHSIA) -> IO Result)
@@ -1668,7 +1686,15 @@
     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)
@@ -2143,6 +2169,17 @@
   vkDestroyCuModuleNVX <- getDeviceProcAddr' handle (Ptr "vkDestroyCuModuleNVX"#)
   vkDestroyCuFunctionNVX <- getDeviceProcAddr' handle (Ptr "vkDestroyCuFunctionNVX"#)
   vkCmdCuLaunchKernelNVX <- getDeviceProcAddr' handle (Ptr "vkCmdCuLaunchKernelNVX"#)
+  vkGetDescriptorSetLayoutSizeEXT <- getDeviceProcAddr' handle (Ptr "vkGetDescriptorSetLayoutSizeEXT"#)
+  vkGetDescriptorSetLayoutBindingOffsetEXT <- getDeviceProcAddr' handle (Ptr "vkGetDescriptorSetLayoutBindingOffsetEXT"#)
+  vkGetDescriptorEXT <- getDeviceProcAddr' handle (Ptr "vkGetDescriptorEXT"#)
+  vkCmdBindDescriptorBuffersEXT <- getDeviceProcAddr' handle (Ptr "vkCmdBindDescriptorBuffersEXT"#)
+  vkCmdSetDescriptorBufferOffsetsEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetDescriptorBufferOffsetsEXT"#)
+  vkCmdBindDescriptorBufferEmbeddedSamplersEXT <- getDeviceProcAddr' handle (Ptr "vkCmdBindDescriptorBufferEmbeddedSamplersEXT"#)
+  vkGetBufferOpaqueCaptureDescriptorDataEXT <- getDeviceProcAddr' handle (Ptr "vkGetBufferOpaqueCaptureDescriptorDataEXT"#)
+  vkGetImageOpaqueCaptureDescriptorDataEXT <- getDeviceProcAddr' handle (Ptr "vkGetImageOpaqueCaptureDescriptorDataEXT"#)
+  vkGetImageViewOpaqueCaptureDescriptorDataEXT <- getDeviceProcAddr' handle (Ptr "vkGetImageViewOpaqueCaptureDescriptorDataEXT"#)
+  vkGetSamplerOpaqueCaptureDescriptorDataEXT <- getDeviceProcAddr' handle (Ptr "vkGetSamplerOpaqueCaptureDescriptorDataEXT"#)
+  vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT <- getDeviceProcAddr' handle (Ptr "vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT"#)
   vkSetDeviceMemoryPriorityEXT <- getDeviceProcAddr' handle (Ptr "vkSetDeviceMemoryPriorityEXT"#)
   vkWaitForPresentKHR <- getDeviceProcAddr' handle (Ptr "vkWaitForPresentKHR"#)
   vkCreateBufferCollectionFUCHSIA <- getDeviceProcAddr' handle (Ptr "vkCreateBufferCollectionFUCHSIA"#)
@@ -2430,7 +2467,7 @@
     (castFunPtr @_ @(Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()) vkCmdDrawMeshTasksIndirectEXT)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("countBuffer" ::: Buffer) -> ("countBufferOffset" ::: DeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()) vkCmdDrawMeshTasksIndirectCountEXT)
     (castFunPtr @_ @(Ptr Device_T -> Pipeline -> ("shader" ::: Word32) -> IO Result) vkCompileDeferredNV)
-    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pAccelerationStructure" ::: Ptr AccelerationStructureNV) -> IO Result) vkCreateAccelerationStructureNV)
+    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (SomeStruct AccelerationStructureCreateInfoNV)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pAccelerationStructure" ::: Ptr AccelerationStructureNV) -> IO Result) vkCreateAccelerationStructureNV)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ImageView -> ImageLayout -> IO ()) vkCmdBindInvocationMaskHUAWEI)
     (castFunPtr @_ @(Ptr Device_T -> AccelerationStructureKHR -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyAccelerationStructureKHR)
     (castFunPtr @_ @(Ptr Device_T -> AccelerationStructureNV -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyAccelerationStructureNV)
@@ -2571,6 +2608,17 @@
     (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)
+    (castFunPtr @_ @(Ptr Device_T -> DescriptorSetLayout -> ("pLayoutSizeInBytes" ::: Ptr DeviceSize) -> IO ()) vkGetDescriptorSetLayoutSizeEXT)
+    (castFunPtr @_ @(Ptr Device_T -> DescriptorSetLayout -> ("binding" ::: Word32) -> ("pOffset" ::: Ptr DeviceSize) -> IO ()) vkGetDescriptorSetLayoutBindingOffsetEXT)
+    (castFunPtr @_ @(Ptr Device_T -> ("pDescriptorInfo" ::: Ptr DescriptorGetInfoEXT) -> ("dataSize" ::: CSize) -> ("pDescriptor" ::: Ptr ()) -> IO ()) vkGetDescriptorEXT)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("bufferCount" ::: Word32) -> ("pBindingInfos" ::: Ptr (SomeStruct DescriptorBufferBindingInfoEXT)) -> IO ()) vkCmdBindDescriptorBuffersEXT)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("firstSet" ::: Word32) -> ("setCount" ::: Word32) -> ("pBufferIndices" ::: Ptr Word32) -> ("pOffsets" ::: Ptr DeviceSize) -> IO ()) vkCmdSetDescriptorBufferOffsetsEXT)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("set" ::: Word32) -> IO ()) vkCmdBindDescriptorBufferEmbeddedSamplersEXT)
+    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr BufferCaptureDescriptorDataInfoEXT) -> ("pData" ::: Ptr ()) -> IO Result) vkGetBufferOpaqueCaptureDescriptorDataEXT)
+    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr ImageCaptureDescriptorDataInfoEXT) -> ("pData" ::: Ptr ()) -> IO Result) vkGetImageOpaqueCaptureDescriptorDataEXT)
+    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr ImageViewCaptureDescriptorDataInfoEXT) -> ("pData" ::: Ptr ()) -> IO Result) vkGetImageViewOpaqueCaptureDescriptorDataEXT)
+    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr SamplerCaptureDescriptorDataInfoEXT) -> ("pData" ::: Ptr ()) -> IO Result) vkGetSamplerOpaqueCaptureDescriptorDataEXT)
+    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr AccelerationStructureCaptureDescriptorDataInfoEXT) -> ("pData" ::: Ptr ()) -> IO Result) vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT)
     (castFunPtr @_ @(Ptr Device_T -> DeviceMemory -> ("priority" ::: CFloat) -> IO ()) vkSetDeviceMemoryPriorityEXT)
     (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> ("presentId" ::: Word64) -> ("timeout" ::: Word64) -> IO Result) vkWaitForPresentKHR)
     (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr BufferCollectionCreateInfoFUCHSIA) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pCollection" ::: Ptr BufferCollectionFUCHSIA) -> IO Result) vkCreateBufferCollectionFUCHSIA)
diff --git a/src/Vulkan/Extensions.hs b/src/Vulkan/Extensions.hs
--- a/src/Vulkan/Extensions.hs
+++ b/src/Vulkan/Extensions.hs
@@ -47,6 +47,7 @@
                           , module Vulkan.Extensions.VK_EXT_depth_clip_control
                           , module Vulkan.Extensions.VK_EXT_depth_clip_enable
                           , module Vulkan.Extensions.VK_EXT_depth_range_unrestricted
+                          , module Vulkan.Extensions.VK_EXT_descriptor_buffer
                           , module Vulkan.Extensions.VK_EXT_descriptor_indexing
                           , module Vulkan.Extensions.VK_EXT_device_address_binding_report
                           , module Vulkan.Extensions.VK_EXT_device_fault
@@ -352,6 +353,7 @@
 import Vulkan.Extensions.VK_EXT_depth_clip_control
 import Vulkan.Extensions.VK_EXT_depth_clip_enable
 import Vulkan.Extensions.VK_EXT_depth_range_unrestricted
+import Vulkan.Extensions.VK_EXT_descriptor_buffer
 import Vulkan.Extensions.VK_EXT_descriptor_indexing
 import Vulkan.Extensions.VK_EXT_device_address_binding_report
 import Vulkan.Extensions.VK_EXT_device_fault
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
@@ -30,6 +30,7 @@
 import Vulkan.Extensions.VK_EXT_debug_report (pattern EXT_DEBUG_REPORT_EXTENSION_NAME)
 import Vulkan.Extensions.VK_EXT_debug_utils (pattern EXT_DEBUG_UTILS_EXTENSION_NAME)
 import Vulkan.Extensions.VK_EXT_depth_clip_control (pattern EXT_DEPTH_CLIP_CONTROL_EXTENSION_NAME)
+import Vulkan.Extensions.VK_EXT_descriptor_buffer (pattern EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME)
 import Vulkan.Extensions.VK_EXT_descriptor_indexing (pattern EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME)
 import Vulkan.Extensions.VK_EXT_device_address_binding_report (pattern EXT_DEVICE_ADDRESS_BINDING_REPORT_EXTENSION_NAME)
 import Vulkan.Extensions.VK_EXT_device_fault (pattern EXT_DEVICE_FAULT_EXTENSION_NAME)
@@ -630,6 +631,13 @@
     ]
   NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]
   KHR_SYNCHRONIZATION_2_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]
+  EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME ->
+    [ KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
+    , KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME
+    , KHR_SYNCHRONIZATION_2_EXTENSION_NAME
+    , EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
+    , KHR_MAINTENANCE_3_EXTENSION_NAME
+    ]
   EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME ->
     [ KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
     , KHR_PIPELINE_LIBRARY_EXTENSION_NAME
@@ -860,6 +868,7 @@
   KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME -> MAKE_API_VERSION 1 1 0
   NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME -> MAKE_API_VERSION 1 1 0
   KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME -> MAKE_API_VERSION 1 1 0
+  EXT_MESH_SHADER_EXTENSION_NAME -> MAKE_API_VERSION 1 1 0
   KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME -> MAKE_API_VERSION 1 1 0
   KHR_MAINTENANCE_4_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
@@ -144,6 +144,7 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureBuildGeometryInfoKHR',
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.AccelerationStructureCaptureDescriptorDataInfoEXT',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureDeviceAddressInfoKHR',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyAccelerationStructureInfoKHR',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyAccelerationStructureToMemoryInfoKHR',
@@ -169,6 +170,7 @@
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.AccelerationStructureCaptureDescriptorDataInfoEXT',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureMemoryRequirementsInfoNV',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.BindAccelerationStructureMemoryInfoNV',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV',
diff --git a/src/Vulkan/Extensions/VK_EXT_descriptor_buffer.hs b/src/Vulkan/Extensions/VK_EXT_descriptor_buffer.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_descriptor_buffer.hs
@@ -0,0 +1,3310 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_descriptor_buffer - device extension
+--
+-- == VK_EXT_descriptor_buffer
+--
+-- [__Name String__]
+--     @VK_EXT_descriptor_buffer@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     317
+--
+-- [__Revision__]
+--     1
+--
+-- [__Extension and Version Dependencies__]
+--
+--     -   Requires support for Vulkan 1.0
+--
+--     -   Requires @VK_KHR_get_physical_device_properties2@ to be enabled
+--         for any device-level functionality
+--
+--     -   Requires @VK_KHR_buffer_device_address@ to be enabled for any
+--         device-level functionality
+--
+--     -   Requires @VK_KHR_synchronization2@ to be enabled for any
+--         device-level functionality
+--
+--     -   Requires @VK_EXT_descriptor_indexing@ to be enabled for any
+--         device-level functionality
+--
+-- [__Contact__]
+--
+--     -   Tobias Hector
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_descriptor_buffer] @tobski%0A*Here describe the issue or question you have about the VK_EXT_descriptor_buffer extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_descriptor_buffer.adoc VK_EXT_descriptor_buffer>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2021-06-07
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Stu Smith, AMD
+--
+--     -   Maciej Jesionowski, AMD
+--
+--     -   Boris Zanin, AMD
+--
+--     -   Hans-Kristian Arntzen, Valve
+--
+--     -   Connor Abbott, Valve
+--
+--     -   Baldur Karlsson, Valve
+--
+--     -   Mike Blumenkrantz, Valve
+--
+--     -   Graeme Leese, Broadcom
+--
+--     -   Jan-Harald Fredriksen, Arm
+--
+--     -   Rodrigo Locatti, NVIDIA
+--
+--     -   Jeff Bolz, NVIDIA
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Jeff Leger, QUALCOMM
+--
+--     -   Lionel Landwerlin, Intel
+--
+--     -   Slawomir Grajewski, Intel
+--
+-- == Description
+--
+-- This extension introduces new commands to put shader-accessible
+-- descriptors directly in memory, making the management of descriptor data
+-- more explicit.
+--
+-- == New Commands
+--
+-- -   'cmdBindDescriptorBufferEmbeddedSamplersEXT'
+--
+-- -   'cmdBindDescriptorBuffersEXT'
+--
+-- -   'cmdSetDescriptorBufferOffsetsEXT'
+--
+-- -   'getBufferOpaqueCaptureDescriptorDataEXT'
+--
+-- -   'getDescriptorEXT'
+--
+-- -   'getDescriptorSetLayoutBindingOffsetEXT'
+--
+-- -   'getDescriptorSetLayoutSizeEXT'
+--
+-- -   'getImageOpaqueCaptureDescriptorDataEXT'
+--
+-- -   'getImageViewOpaqueCaptureDescriptorDataEXT'
+--
+-- -   'getSamplerOpaqueCaptureDescriptorDataEXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
+-- is supported:
+--
+-- -   'getAccelerationStructureOpaqueCaptureDescriptorDataEXT'
+--
+-- == New Structures
+--
+-- -   'BufferCaptureDescriptorDataInfoEXT'
+--
+-- -   'DescriptorAddressInfoEXT'
+--
+-- -   'DescriptorBufferBindingInfoEXT'
+--
+-- -   'DescriptorGetInfoEXT'
+--
+-- -   'ImageCaptureDescriptorDataInfoEXT'
+--
+-- -   'ImageViewCaptureDescriptorDataInfoEXT'
+--
+-- -   'SamplerCaptureDescriptorDataInfoEXT'
+--
+-- -   Extending 'Vulkan.Core10.Buffer.BufferCreateInfo',
+--     'Vulkan.Core10.Image.ImageCreateInfo',
+--     'Vulkan.Core10.ImageView.ImageViewCreateInfo',
+--     'Vulkan.Core10.Sampler.SamplerCreateInfo',
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCreateInfoKHR',
+--     'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV':
+--
+--     -   'OpaqueCaptureDescriptorDataCreateInfoEXT'
+--
+-- -   Extending 'DescriptorBufferBindingInfoEXT':
+--
+--     -   'DescriptorBufferBindingPushDescriptorBufferHandleEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceDescriptorBufferFeaturesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT'
+--
+--     -   'PhysicalDeviceDescriptorBufferPropertiesEXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
+-- is supported:
+--
+-- -   'AccelerationStructureCaptureDescriptorDataInfoEXT'
+--
+-- == New Unions
+--
+-- -   'DescriptorDataEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME'
+--
+-- -   'EXT_DESCRIPTOR_BUFFER_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCreateFlagBitsKHR':
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BufferCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DescriptorSetLayoutCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+--     -   'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.ImageViewCreateFlagBits.ImageViewCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.ImageViewCreateFlagBits.IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SamplerCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT'
+--
+-- == Version History
+--
+-- -   Revision 1, 2021-06-07 (Stu Smith)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- 'BufferCaptureDescriptorDataInfoEXT', 'DescriptorAddressInfoEXT',
+-- 'DescriptorBufferBindingInfoEXT',
+-- 'DescriptorBufferBindingPushDescriptorBufferHandleEXT',
+-- 'DescriptorDataEXT', 'DescriptorGetInfoEXT',
+-- 'ImageCaptureDescriptorDataInfoEXT',
+-- 'ImageViewCaptureDescriptorDataInfoEXT',
+-- 'OpaqueCaptureDescriptorDataCreateInfoEXT',
+-- 'PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT',
+-- 'PhysicalDeviceDescriptorBufferFeaturesEXT',
+-- 'PhysicalDeviceDescriptorBufferPropertiesEXT',
+-- 'SamplerCaptureDescriptorDataInfoEXT',
+-- 'cmdBindDescriptorBufferEmbeddedSamplersEXT',
+-- 'cmdBindDescriptorBuffersEXT', 'cmdSetDescriptorBufferOffsetsEXT',
+-- 'getBufferOpaqueCaptureDescriptorDataEXT', 'getDescriptorEXT',
+-- 'getDescriptorSetLayoutBindingOffsetEXT',
+-- 'getDescriptorSetLayoutSizeEXT',
+-- 'getImageOpaqueCaptureDescriptorDataEXT',
+-- 'getImageViewOpaqueCaptureDescriptorDataEXT',
+-- 'getSamplerOpaqueCaptureDescriptorDataEXT'
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_descriptor_buffer 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_descriptor_buffer  ( getDescriptorSetLayoutSizeEXT
+                                                   , getDescriptorSetLayoutBindingOffsetEXT
+                                                   , getDescriptorEXT
+                                                   , cmdBindDescriptorBuffersEXT
+                                                   , cmdSetDescriptorBufferOffsetsEXT
+                                                   , cmdBindDescriptorBufferEmbeddedSamplersEXT
+                                                   , getBufferOpaqueCaptureDescriptorDataEXT
+                                                   , getImageOpaqueCaptureDescriptorDataEXT
+                                                   , getImageViewOpaqueCaptureDescriptorDataEXT
+                                                   , getSamplerOpaqueCaptureDescriptorDataEXT
+                                                   , getAccelerationStructureOpaqueCaptureDescriptorDataEXT
+                                                   , PhysicalDeviceDescriptorBufferFeaturesEXT(..)
+                                                   , PhysicalDeviceDescriptorBufferPropertiesEXT(..)
+                                                   , PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT(..)
+                                                   , DescriptorAddressInfoEXT(..)
+                                                   , DescriptorBufferBindingInfoEXT(..)
+                                                   , DescriptorBufferBindingPushDescriptorBufferHandleEXT(..)
+                                                   , DescriptorGetInfoEXT(..)
+                                                   , BufferCaptureDescriptorDataInfoEXT(..)
+                                                   , ImageCaptureDescriptorDataInfoEXT(..)
+                                                   , ImageViewCaptureDescriptorDataInfoEXT(..)
+                                                   , SamplerCaptureDescriptorDataInfoEXT(..)
+                                                   , AccelerationStructureCaptureDescriptorDataInfoEXT(..)
+                                                   , OpaqueCaptureDescriptorDataCreateInfoEXT(..)
+                                                   , DescriptorDataEXT(..)
+                                                   , peekDescriptorDataEXT
+                                                   , EXT_DESCRIPTOR_BUFFER_SPEC_VERSION
+                                                   , pattern EXT_DESCRIPTOR_BUFFER_SPEC_VERSION
+                                                   , EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME
+                                                   , pattern EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME
+                                                   , AccelerationStructureKHR(..)
+                                                   , AccelerationStructureNV(..)
+                                                   , AccelerationStructureCreateFlagBitsKHR(..)
+                                                   , AccelerationStructureCreateFlagsKHR
+                                                   ) where
+
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Exception.Base (bracket)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Data.Typeable (eqT)
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Marshal.Alloc (callocBytes)
+import Foreign.Marshal.Alloc (free)
+import Foreign.Marshal.Utils (maybePeek)
+import Foreign.Marshal.Utils (with)
+import GHC.Base (when)
+import GHC.IO (throwIO)
+import GHC.Ptr (castPtr)
+import GHC.Ptr (nullFunPtr)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Data.Coerce (coerce)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import Control.Monad.Trans.Cont (runContT)
+import qualified Data.Vector (imapM_)
+import qualified Data.Vector (length)
+import Foreign.C.Types (CSize(..))
+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.Type.Equality ((:~:)(Refl))
+import Data.Typeable (Typeable)
+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.Kind (Type)
+import Control.Monad.Trans.Cont (ContT(..))
+import Data.Vector (Vector)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.CStruct.Extends (forgetExtensions)
+import Vulkan.CStruct.Extends (pokeSomeCStruct)
+import Vulkan.NamedType ((:::))
+import Vulkan.Extensions.Handles (AccelerationStructureKHR)
+import Vulkan.Extensions.Handles (AccelerationStructureNV)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Handles (Buffer)
+import Vulkan.Core10.Enums.BufferUsageFlagBits (BufferUsageFlags)
+import Vulkan.CStruct.Extends (Chain)
+import Vulkan.Core10.Handles (CommandBuffer)
+import Vulkan.Core10.Handles (CommandBuffer(..))
+import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
+import Vulkan.Core10.Handles (CommandBuffer_T)
+import Vulkan.Core10.DescriptorSet (DescriptorImageInfo)
+import Vulkan.Core10.Handles (DescriptorSetLayout)
+import Vulkan.Core10.Handles (DescriptorSetLayout(..))
+import Vulkan.Core10.Enums.DescriptorType (DescriptorType)
+import Vulkan.Core10.Handles (Device)
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Core10.Handles (Device(Device))
+import Vulkan.Core10.FundamentalTypes (DeviceAddress)
+import Vulkan.Dynamic (DeviceCmds(pVkCmdBindDescriptorBufferEmbeddedSamplersEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdBindDescriptorBuffersEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdSetDescriptorBufferOffsetsEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkGetBufferOpaqueCaptureDescriptorDataEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkGetDescriptorEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkGetDescriptorSetLayoutBindingOffsetEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkGetDescriptorSetLayoutSizeEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkGetImageOpaqueCaptureDescriptorDataEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkGetImageViewOpaqueCaptureDescriptorDataEXT))
+import Vulkan.Dynamic (DeviceCmds(pVkGetSamplerOpaqueCaptureDescriptorDataEXT))
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.Handles (Device_T)
+import Vulkan.CStruct.Extends (Extends)
+import Vulkan.CStruct.Extends (Extendss)
+import Vulkan.CStruct.Extends (Extensible(..))
+import Vulkan.Core10.Enums.Format (Format)
+import Vulkan.Core10.Handles (Image)
+import Vulkan.Core10.Handles (ImageView)
+import Vulkan.CStruct.Extends (PeekChain)
+import Vulkan.CStruct.Extends (PeekChain(..))
+import Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint)
+import Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint(..))
+import Vulkan.Core10.Handles (PipelineLayout)
+import Vulkan.Core10.Handles (PipelineLayout(..))
+import Vulkan.CStruct.Extends (PokeChain)
+import Vulkan.CStruct.Extends (PokeChain(..))
+import Vulkan.Core10.Enums.Result (Result)
+import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.Core10.Handles (Sampler)
+import Vulkan.CStruct.Extends (SomeStruct)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Exception (VulkanException(..))
+import Vulkan.Core10.Enums.DescriptorType (DescriptorType(DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR))
+import Vulkan.Core10.Enums.DescriptorType (DescriptorType(DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER))
+import Vulkan.Core10.Enums.DescriptorType (DescriptorType(DESCRIPTOR_TYPE_INPUT_ATTACHMENT))
+import Vulkan.Core10.Enums.DescriptorType (DescriptorType(DESCRIPTOR_TYPE_SAMPLED_IMAGE))
+import Vulkan.Core10.Enums.DescriptorType (DescriptorType(DESCRIPTOR_TYPE_SAMPLER))
+import Vulkan.Core10.Enums.DescriptorType (DescriptorType(DESCRIPTOR_TYPE_STORAGE_BUFFER))
+import Vulkan.Core10.Enums.DescriptorType (DescriptorType(DESCRIPTOR_TYPE_STORAGE_IMAGE))
+import Vulkan.Core10.Enums.DescriptorType (DescriptorType(DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER))
+import Vulkan.Core10.Enums.DescriptorType (DescriptorType(DESCRIPTOR_TYPE_UNIFORM_BUFFER))
+import Vulkan.Core10.Enums.DescriptorType (DescriptorType(DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureCreateFlagBitsKHR(..))
+import Vulkan.Extensions.VK_KHR_acceleration_structure (AccelerationStructureCreateFlagsKHR)
+import Vulkan.Extensions.Handles (AccelerationStructureKHR(..))
+import Vulkan.Extensions.Handles (AccelerationStructureNV(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetDescriptorSetLayoutSizeEXT
+  :: FunPtr (Ptr Device_T -> DescriptorSetLayout -> Ptr DeviceSize -> IO ()) -> Ptr Device_T -> DescriptorSetLayout -> Ptr DeviceSize -> IO ()
+
+-- | vkGetDescriptorSetLayoutSizeEXT - Get the size of a descriptor set
+-- layout in memory
+--
+-- = Description
+--
+-- The size of a descriptor set layout will be at least as large as the sum
+-- total of the size of all descriptors in the layout, and /may/ be larger.
+-- This size represents the amount of memory that will be required to store
+-- all of the descriptors for this layout in memory, when placed according
+-- to the layout’s offsets as obtained by
+-- 'getDescriptorSetLayoutBindingOffsetEXT'.
+--
+-- If any @binding@ in @layout@ is
+-- 'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT',
+-- the returned size includes space for the maximum @descriptorCount@
+-- descriptors as declared for that @binding@. To compute the required size
+-- of a descriptor set with a
+-- 'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT':
+--
+-- -   size = offset + descriptorSize × variableDescriptorCount
+--
+-- where offset is obtained by 'getDescriptorSetLayoutBindingOffsetEXT' and
+-- descriptorSize is the size of the relevant descriptor as obtained from
+-- 'PhysicalDeviceDescriptorBufferPropertiesEXT', and
+-- variableDescriptorCount is the equivalent of
+-- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.DescriptorSetVariableDescriptorCountAllocateInfo'::@pDescriptorCounts@.
+-- For
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK',
+-- variableDescriptorCount is the size in bytes for the inline uniform
+-- block, and descriptorSize is 1.
+--
+-- If
+-- 'PhysicalDeviceDescriptorBufferPropertiesEXT'::@combinedImageSamplerDescriptorSingleArray@
+-- is 'Vulkan.Core10.FundamentalTypes.FALSE' and the variable descriptor
+-- type is
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
+-- variableDescriptorCount is always considered to be the upper bound.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetDescriptorSetLayoutSizeEXT-None-08011# The
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBuffer descriptorBuffer>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkGetDescriptorSetLayoutSizeEXT-layout-08012# @layout@ /must/
+--     have been created with the
+--     VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT flag set
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetDescriptorSetLayoutSizeEXT-device-parameter# @device@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetDescriptorSetLayoutSizeEXT-layout-parameter# @layout@
+--     /must/ be a valid 'Vulkan.Core10.Handles.DescriptorSetLayout' handle
+--
+-- -   #VUID-vkGetDescriptorSetLayoutSizeEXT-pLayoutSizeInBytes-parameter#
+--     @pLayoutSizeInBytes@ /must/ be a valid pointer to a
+--     'Vulkan.Core10.FundamentalTypes.DeviceSize' value
+--
+-- -   #VUID-vkGetDescriptorSetLayoutSizeEXT-layout-parent# @layout@ /must/
+--     have been created, allocated, or retrieved from @device@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- 'Vulkan.Core10.Handles.DescriptorSetLayout',
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
+getDescriptorSetLayoutSizeEXT :: forall io
+                               . (MonadIO io)
+                              => -- | @device@ is the logical device that gets the size.
+                                 Device
+                              -> -- | @layout@ is the descriptor set layout being queried.
+                                 DescriptorSetLayout
+                              -> io (("layoutSizeInBytes" ::: DeviceSize))
+getDescriptorSetLayoutSizeEXT device layout = liftIO . evalContT $ do
+  let vkGetDescriptorSetLayoutSizeEXTPtr = pVkGetDescriptorSetLayoutSizeEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetDescriptorSetLayoutSizeEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDescriptorSetLayoutSizeEXT is null" Nothing Nothing
+  let vkGetDescriptorSetLayoutSizeEXT' = mkVkGetDescriptorSetLayoutSizeEXT vkGetDescriptorSetLayoutSizeEXTPtr
+  pPLayoutSizeInBytes <- ContT $ bracket (callocBytes @DeviceSize 8) free
+  lift $ traceAroundEvent "vkGetDescriptorSetLayoutSizeEXT" (vkGetDescriptorSetLayoutSizeEXT'
+                                                               (deviceHandle (device))
+                                                               (layout)
+                                                               (pPLayoutSizeInBytes))
+  pLayoutSizeInBytes <- lift $ peek @DeviceSize pPLayoutSizeInBytes
+  pure $ (pLayoutSizeInBytes)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetDescriptorSetLayoutBindingOffsetEXT
+  :: FunPtr (Ptr Device_T -> DescriptorSetLayout -> Word32 -> Ptr DeviceSize -> IO ()) -> Ptr Device_T -> DescriptorSetLayout -> Word32 -> Ptr DeviceSize -> IO ()
+
+-- | vkGetDescriptorSetLayoutBindingOffsetEXT - Get the offset of a binding
+-- within a descriptor set layout
+--
+-- = Description
+--
+-- Each binding in a descriptor set layout is assigned an offset in memory
+-- by the implementation. When a shader accesses a resource with that
+-- binding, it will access the bound descriptor buffer from that offset to
+-- look for its descriptor. This command provides an application with that
+-- offset, so that descriptors can be placed in the correct locations. The
+-- precise location accessed by a shader for a given descriptor is as
+-- follows:
+--
+-- -   location = bufferAddress + setOffset + descriptorOffset
+--     (arrayElement * descriptorSize)
+--
+-- where bufferAddress and setOffset are the base address and offset for
+-- the identified descriptor set as specified by
+-- 'cmdBindDescriptorBuffersEXT' and 'cmdSetDescriptorBufferOffsetsEXT',
+-- descriptorOffset is the offset for the binding returned by this command,
+-- arrayElement is the index into the array specified in the shader, and
+-- descriptorSize is the size of the relevant descriptor as obtained from
+-- 'PhysicalDeviceDescriptorBufferPropertiesEXT'. Applications are
+-- responsible for placing valid descriptors at the expected location in
+-- order for a shader to access it. The overall offset added to
+-- bufferAddress to calculate location /must/ be less than
+-- 'PhysicalDeviceDescriptorBufferPropertiesEXT'::@maxSamplerDescriptorBufferRange@
+-- for samplers and
+-- 'PhysicalDeviceDescriptorBufferPropertiesEXT'::@maxResourceDescriptorBufferRange@
+-- for resources.
+--
+-- If any @binding@ in @layout@ is
+-- 'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT',
+-- that @binding@ /must/ have the largest offset of any @binding@.
+--
+-- A descriptor @binding@ with type
+-- 'Vulkan.Extensions.VK_VALVE_mutable_descriptor_type.DESCRIPTOR_TYPE_MUTABLE_VALVE'
+-- /can/ be used. Any potential types in
+-- 'Vulkan.Extensions.VK_VALVE_mutable_descriptor_type.MutableDescriptorTypeCreateInfoVALVE'::@pDescriptorTypes@
+-- for @binding@ share the same offset. If the size of the
+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-mutable mutable descriptor>
+-- is larger than the size of a concrete descriptor type being accessed,
+-- the padding area is ignored by the implementation.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetDescriptorSetLayoutBindingOffsetEXT-None-08013# The
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBuffer descriptorBuffer>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkGetDescriptorSetLayoutBindingOffsetEXT-layout-08014#
+--     @layout@ /must/ have been created with the
+--     VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT flag set
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetDescriptorSetLayoutBindingOffsetEXT-device-parameter#
+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetDescriptorSetLayoutBindingOffsetEXT-layout-parameter#
+--     @layout@ /must/ be a valid
+--     'Vulkan.Core10.Handles.DescriptorSetLayout' handle
+--
+-- -   #VUID-vkGetDescriptorSetLayoutBindingOffsetEXT-pOffset-parameter#
+--     @pOffset@ /must/ be a valid pointer to a
+--     'Vulkan.Core10.FundamentalTypes.DeviceSize' value
+--
+-- -   #VUID-vkGetDescriptorSetLayoutBindingOffsetEXT-layout-parent#
+--     @layout@ /must/ have been created, allocated, or retrieved from
+--     @device@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- 'Vulkan.Core10.Handles.DescriptorSetLayout',
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
+getDescriptorSetLayoutBindingOffsetEXT :: forall io
+                                        . (MonadIO io)
+                                       => -- | @device@ is the logical device that gets the offset.
+                                          Device
+                                       -> -- | @layout@ is the descriptor set layout being queried.
+                                          DescriptorSetLayout
+                                       -> -- | @binding@ is the binding number being queried.
+                                          ("binding" ::: Word32)
+                                       -> io (("offset" ::: DeviceSize))
+getDescriptorSetLayoutBindingOffsetEXT device
+                                         layout
+                                         binding = liftIO . evalContT $ do
+  let vkGetDescriptorSetLayoutBindingOffsetEXTPtr = pVkGetDescriptorSetLayoutBindingOffsetEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetDescriptorSetLayoutBindingOffsetEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDescriptorSetLayoutBindingOffsetEXT is null" Nothing Nothing
+  let vkGetDescriptorSetLayoutBindingOffsetEXT' = mkVkGetDescriptorSetLayoutBindingOffsetEXT vkGetDescriptorSetLayoutBindingOffsetEXTPtr
+  pPOffset <- ContT $ bracket (callocBytes @DeviceSize 8) free
+  lift $ traceAroundEvent "vkGetDescriptorSetLayoutBindingOffsetEXT" (vkGetDescriptorSetLayoutBindingOffsetEXT'
+                                                                        (deviceHandle (device))
+                                                                        (layout)
+                                                                        (binding)
+                                                                        (pPOffset))
+  pOffset <- lift $ peek @DeviceSize pPOffset
+  pure $ (pOffset)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetDescriptorEXT
+  :: FunPtr (Ptr Device_T -> Ptr DescriptorGetInfoEXT -> CSize -> Ptr () -> IO ()) -> Ptr Device_T -> Ptr DescriptorGetInfoEXT -> CSize -> Ptr () -> IO ()
+
+-- | vkGetDescriptorEXT - To get a descriptor to place in a buffer
+--
+-- = Description
+--
+-- The size of the data for each descriptor type is determined by the value
+-- in 'PhysicalDeviceDescriptorBufferPropertiesEXT'. This value also
+-- defines the stride in bytes for arrays of that descriptor type.
+--
+-- If the
+-- 'PhysicalDeviceDescriptorBufferPropertiesEXT'::@combinedImageSamplerDescriptorSingleArray@
+-- property is 'Vulkan.Core10.FundamentalTypes.FALSE' the implementation
+-- requires an array of
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'
+-- descriptors to be written into a descriptor buffer as an array of image
+-- descriptors, immediately followed by an array of sampler descriptors.
+-- Applications /must/ write the first
+-- 'PhysicalDeviceDescriptorBufferPropertiesEXT'::@sampledImageDescriptorSize@
+-- bytes of the data returned through @pDescriptor@ to the first array, and
+-- the remaining
+-- 'PhysicalDeviceDescriptorBufferPropertiesEXT'::@samplerDescriptorSize@
+-- bytes of the data to the second array. For variable-sized descriptor
+-- bindings of
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'
+-- descriptors, the two arrays each have a size equal to the upper bound
+-- @descriptorCount@ of that binding.
+--
+-- A descriptor obtained by this command references the underlying
+-- 'Vulkan.Core10.Handles.ImageView' or 'Vulkan.Core10.Handles.Sampler',
+-- and these objects /must/ not be destroyed before the last time a
+-- descriptor is dynamically accessed. For descriptor types which consume
+-- an address instead of an object, the underlying
+-- 'Vulkan.Core10.Handles.Buffer' is referenced instead.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetDescriptorEXT-None-08015# The
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBuffer descriptorBuffer>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkGetDescriptorEXT-dataSize-08125# @dataSize@ /must/ equal the
+--     size of a descriptor of type 'DescriptorGetInfoEXT'::@type@
+--     determined by the value in
+--     'PhysicalDeviceDescriptorBufferPropertiesEXT', or
+--     'PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT'::@combinedImageSamplerDensityMapDescriptorSize@
+--     if @pDescriptorInfo@ specifies a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'
+--     whose 'Vulkan.Core10.Handles.Sampler' was created with
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_BIT_EXT'
+--     set
+--
+-- -   #VUID-vkGetDescriptorEXT-pDescriptor-08016# @pDescriptor@ /must/ be
+--     a valid pointer to an array of at least @dataSize@ bytes
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetDescriptorEXT-device-parameter# @device@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetDescriptorEXT-pDescriptorInfo-parameter#
+--     @pDescriptorInfo@ /must/ be a valid pointer to a valid
+--     'DescriptorGetInfoEXT' structure
+--
+-- -   #VUID-vkGetDescriptorEXT-pDescriptor-parameter# @pDescriptor@ /must/
+--     be a valid pointer to an array of @dataSize@ bytes
+--
+-- -   #VUID-vkGetDescriptorEXT-dataSize-arraylength# @dataSize@ /must/ be
+--     greater than @0@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- 'DescriptorGetInfoEXT', 'Vulkan.Core10.Handles.Device'
+getDescriptorEXT :: forall io
+                  . (MonadIO io)
+                 => -- | @device@ is the logical device that gets the descriptor.
+                    Device
+                 -> -- | @pDescriptorInfo@ is a pointer to a 'DescriptorGetInfoEXT' structure
+                    -- specifying the parameters of the descriptor to get.
+                    ("descriptorInfo" ::: DescriptorGetInfoEXT)
+                 -> -- | @dataSize@ is the amount of the descriptor data to get in bytes.
+                    ("dataSize" ::: Word64)
+                 -> -- | @pDescriptor@ is a pointer to a user-allocated buffer where the
+                    -- descriptor will be written.
+                    ("descriptor" ::: Ptr ())
+                 -> io ()
+getDescriptorEXT device
+                   descriptorInfo
+                   dataSize
+                   descriptor = liftIO . evalContT $ do
+  let vkGetDescriptorEXTPtr = pVkGetDescriptorEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetDescriptorEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDescriptorEXT is null" Nothing Nothing
+  let vkGetDescriptorEXT' = mkVkGetDescriptorEXT vkGetDescriptorEXTPtr
+  pDescriptorInfo <- ContT $ withCStruct (descriptorInfo)
+  lift $ traceAroundEvent "vkGetDescriptorEXT" (vkGetDescriptorEXT'
+                                                  (deviceHandle (device))
+                                                  pDescriptorInfo
+                                                  (CSize (dataSize))
+                                                  (descriptor))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBindDescriptorBuffersEXT
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr (SomeStruct DescriptorBufferBindingInfoEXT) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr (SomeStruct DescriptorBufferBindingInfoEXT) -> IO ()
+
+-- | vkCmdBindDescriptorBuffersEXT - Binding descriptor buffers to a command
+-- buffer
+--
+-- = Description
+--
+-- 'cmdBindDescriptorBuffersEXT' causes any offsets previously set by
+-- 'cmdSetDescriptorBufferOffsetsEXT' that use the bindings numbered [@0@..
+-- @bufferCount@-1] to be no longer valid for subsequent bound pipeline
+-- commands. Any previously bound buffers at binding points greater than or
+-- equal to @bufferCount@ are unbound.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdBindDescriptorBuffersEXT-None-08047# The
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBuffer descriptorBuffer>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdBindDescriptorBuffersEXT-maxSamplerDescriptorBufferBindings-08048#
+--     There /must/ be no more than
+--     'PhysicalDeviceDescriptorBufferPropertiesEXT'::@maxSamplerDescriptorBufferBindings@
+--     descriptor buffers containing sampler descriptor data bound
+--
+-- -   #VUID-vkCmdBindDescriptorBuffersEXT-maxResourceDescriptorBufferBindings-08049#
+--     There /must/ be no more than
+--     'PhysicalDeviceDescriptorBufferPropertiesEXT'::@maxResourceDescriptorBufferBindings@
+--     descriptor buffers containing resource descriptor data bound
+--
+-- -   #VUID-vkCmdBindDescriptorBuffersEXT-None-08050# There /must/ be no
+--     more than @1@ descriptor buffer bound that was created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdBindDescriptorBuffersEXT-bufferCount-08051# @bufferCount@
+--     /must/ be less than or equal to
+--     'PhysicalDeviceDescriptorBufferPropertiesEXT'::@maxDescriptorBufferBindings@
+--
+-- -   #VUID-vkCmdBindDescriptorBuffersEXT-pBindingInfos-08052# For any
+--     element of @pBindingInfos@, if the buffer from which @address@ was
+--     queried is non-sparse then it /must/ be bound completely and
+--     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdBindDescriptorBuffersEXT-pBindingInfos-08053# For any
+--     element of @pBindingInfos@, the buffer from which @address@ was
+--     queried /must/ have been created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT'
+--     bit set if it contains sampler descriptor data
+--
+-- -   #VUID-vkCmdBindDescriptorBuffersEXT-pBindingInfos-08054# For any
+--     element of @pBindingInfos@, the buffer from which @address@ was
+--     queried /must/ have been created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT'
+--     bit set if it contains resource descriptor data
+--
+-- -   #VUID-vkCmdBindDescriptorBuffersEXT-pBindingInfos-08055# For any
+--     element of @pBindingInfos@, @usage@ /must/ match the buffer from
+--     which @address@ was queried.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBindDescriptorBuffersEXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBindDescriptorBuffersEXT-pBindingInfos-parameter#
+--     @pBindingInfos@ /must/ be a valid pointer to an array of
+--     @bufferCount@ valid 'DescriptorBufferBindingInfoEXT' structures
+--
+-- -   #VUID-vkCmdBindDescriptorBuffersEXT-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-vkCmdBindDescriptorBuffersEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics, or compute operations
+--
+-- -   #VUID-vkCmdBindDescriptorBuffersEXT-videocoding# This command /must/
+--     only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdBindDescriptorBuffersEXT-bufferCount-arraylength#
+--     @bufferCount@ /must/ be greater than @0@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'DescriptorBufferBindingInfoEXT'
+cmdBindDescriptorBuffersEXT :: forall io
+                             . (MonadIO io)
+                            => -- | @commandBuffer@ is the command buffer that the descriptor buffers will
+                               -- be bound to.
+                               CommandBuffer
+                            -> -- | @pBindingInfos@ is a pointer to an array of
+                               -- 'DescriptorBufferBindingInfoEXT' structures.
+                               ("bindingInfos" ::: Vector (SomeStruct DescriptorBufferBindingInfoEXT))
+                            -> io ()
+cmdBindDescriptorBuffersEXT commandBuffer bindingInfos = liftIO . evalContT $ do
+  let vkCmdBindDescriptorBuffersEXTPtr = pVkCmdBindDescriptorBuffersEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdBindDescriptorBuffersEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindDescriptorBuffersEXT is null" Nothing Nothing
+  let vkCmdBindDescriptorBuffersEXT' = mkVkCmdBindDescriptorBuffersEXT vkCmdBindDescriptorBuffersEXTPtr
+  pPBindingInfos <- ContT $ allocaBytes @(DescriptorBufferBindingInfoEXT _) ((Data.Vector.length (bindingInfos)) * 32)
+  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPBindingInfos `plusPtr` (32 * (i)) :: Ptr (DescriptorBufferBindingInfoEXT _))) (e) . ($ ())) (bindingInfos)
+  lift $ traceAroundEvent "vkCmdBindDescriptorBuffersEXT" (vkCmdBindDescriptorBuffersEXT'
+                                                             (commandBufferHandle (commandBuffer))
+                                                             ((fromIntegral (Data.Vector.length $ (bindingInfos)) :: Word32))
+                                                             (forgetExtensions (pPBindingInfos)))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetDescriptorBufferOffsetsEXT
+  :: FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> Word32 -> Word32 -> Ptr Word32 -> Ptr DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> Word32 -> Word32 -> Ptr Word32 -> Ptr DeviceSize -> IO ()
+
+-- | vkCmdSetDescriptorBufferOffsetsEXT - Setting descriptor buffer offsets
+-- in a command buffer
+--
+-- = Description
+--
+-- 'cmdSetDescriptorBufferOffsetsEXT' binds @setCount@ pairs of descriptor
+-- buffers, specified by indices into the binding points bound using
+-- 'cmdBindDescriptorBuffersEXT', and buffer offsets to set numbers
+-- [@firstSet@..@firstSet@+@descriptorSetCount@-1] for subsequent
+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-bindpoint-commands bound pipeline commands>
+-- set by @pipelineBindPoint@. Set [@firstSet@ + i] is bound to the
+-- descriptor buffer at binding @pBufferIndices@[i] at an offset of
+-- @pOffsets@[i]. Any bindings that were previously applied via these sets,
+-- or calls to 'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets',
+-- are no longer valid. Other sets will also be invalidated upon calling
+-- this command if @layout@ differs from the pipeline layout used to bind
+-- those other sets, as described in
+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-compatibility Pipeline Layout Compatibility>.
+--
+-- After binding descriptors, applications /can/ modify descriptor memory
+-- either by performing writes on the host or with device commands. When
+-- descriptor memory is updated with device commands, visibility for the
+-- shader stage accessing a descriptor is ensured with the
+-- 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT'
+-- access flag. Implementations /must/ not access resources referenced by
+-- these descriptors unless they are dynamically accessed by shaders.
+-- Descriptors bound with this call /can/ be undefined if they are not
+-- dynamically accessed by shaders.
+--
+-- Implementations /may/ read descriptor data for any statically accessed
+-- descriptor if the @binding@ in @layout@ is not declared with the
+-- 'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT'
+-- flag. If the @binding@ in @layout@ is declared with
+-- 'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT',
+-- implementations /must/ not read descriptor data that is not dynamically
+-- accessed.
+--
+-- Applications /must/ ensure that any descriptor which the implementation
+-- /may/ read /must/ be in-bounds of the underlying descriptor buffer
+-- binding.
+--
+-- Note
+--
+-- Applications can freely decide how large a variable descriptor buffer
+-- binding is, so it may not be safe to read such descriptor payloads
+-- statically. The intention of these rules is to allow implementations to
+-- speculatively prefetch descriptor payloads where feasible.
+--
+-- Dynamically accessing a resource through descriptor data from an unbound
+-- region of a
+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#sparsememory-partially-resident-buffers sparse partially-resident buffer>
+-- will result in invalid descriptor data being read, and therefore
+-- undefined behavior.
+--
+-- Note
+--
+-- For descriptors written by the host, visibility is implied through the
+-- automatic visibility operation on queue submit, and there is no need to
+-- consider @VK_ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT@. Explicit
+-- synchronization for descriptors is only required when descriptors are
+-- updated on the device.
+--
+-- Note
+--
+-- The requirements above imply that all descriptor bindings have been
+-- defined with the equivalent of
+-- 'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT',
+-- 'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT'
+-- and
+-- 'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT',
+-- but enabling those features is not required to get this behavior.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetDescriptorBufferOffsetsEXT-None-08060# The
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBuffer descriptorBuffer>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdSetDescriptorBufferOffsetsEXT-pOffsets-08061# The offsets
+--     in @pOffsets@ /must/ be aligned to
+--     'PhysicalDeviceDescriptorBufferPropertiesEXT'::@descriptorBufferOffsetAlignment@
+--
+-- -   #VUID-vkCmdSetDescriptorBufferOffsetsEXT-pOffsets-08063# The offsets
+--     in @pOffsets@ /must/ be small enough such that any descriptor
+--     binding referenced by @layout@ without the
+--     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT'
+--     flag computes a valid address inside the underlying
+--     'Vulkan.Core10.Handles.Buffer'
+--
+-- -   #VUID-vkCmdSetDescriptorBufferOffsetsEXT-pOffsets-08126# The offsets
+--     in @pOffsets@ /must/ be small enough such that any location accessed
+--     by a shader as a sampler descriptor /must/ be within
+--     'PhysicalDeviceDescriptorBufferPropertiesEXT'::@maxSamplerDescriptorBufferRange@
+--     of the sampler descriptor buffer binding
+--
+-- -   #VUID-vkCmdSetDescriptorBufferOffsetsEXT-pOffsets-08127# The offsets
+--     in @pOffsets@ /must/ be small enough such that any location accessed
+--     by a shader as a resource descriptor /must/ be within
+--     'PhysicalDeviceDescriptorBufferPropertiesEXT'::@maxResourceDescriptorBufferRange@
+--     of the resource descriptor buffer binding
+--
+-- -   #VUID-vkCmdSetDescriptorBufferOffsetsEXT-pBufferIndices-08064# Each
+--     element of @pBufferIndices@ /must/ be less than
+--     'PhysicalDeviceDescriptorBufferPropertiesEXT'::@maxDescriptorBufferBindings@
+--
+-- -   #VUID-vkCmdSetDescriptorBufferOffsetsEXT-pBufferIndices-08065# Each
+--     element of @pBufferIndices@ /must/ reference a valid descriptor
+--     buffer binding set by a previous call to
+--     'cmdBindDescriptorBuffersEXT' in @commandBuffer@
+--
+-- -   #VUID-vkCmdSetDescriptorBufferOffsetsEXT-firstSet-08066# The sum of
+--     @firstSet@ and @setCount@ /must/ be less than or equal to
+--     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'::@setLayoutCount@
+--     provided when @layout@ was created
+--
+-- -   #VUID-vkCmdSetDescriptorBufferOffsetsEXT-pipelineBindPoint-08067#
+--     @pipelineBindPoint@ /must/ be supported by the @commandBuffer@’s
+--     parent 'Vulkan.Core10.Handles.CommandPool'’s queue family
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetDescriptorBufferOffsetsEXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetDescriptorBufferOffsetsEXT-pipelineBindPoint-parameter#
+--     @pipelineBindPoint@ /must/ be a valid
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' value
+--
+-- -   #VUID-vkCmdSetDescriptorBufferOffsetsEXT-layout-parameter# @layout@
+--     /must/ be a valid 'Vulkan.Core10.Handles.PipelineLayout' handle
+--
+-- -   #VUID-vkCmdSetDescriptorBufferOffsetsEXT-pBufferIndices-parameter#
+--     @pBufferIndices@ /must/ be a valid pointer to an array of @setCount@
+--     @uint32_t@ values
+--
+-- -   #VUID-vkCmdSetDescriptorBufferOffsetsEXT-pOffsets-parameter#
+--     @pOffsets@ /must/ be a valid pointer to an array of @setCount@
+--     'Vulkan.Core10.FundamentalTypes.DeviceSize' values
+--
+-- -   #VUID-vkCmdSetDescriptorBufferOffsetsEXT-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-vkCmdSetDescriptorBufferOffsetsEXT-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics, or compute operations
+--
+-- -   #VUID-vkCmdSetDescriptorBufferOffsetsEXT-videocoding# This command
+--     /must/ only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdSetDescriptorBufferOffsetsEXT-setCount-arraylength#
+--     @setCount@ /must/ be greater than @0@
+--
+-- -   #VUID-vkCmdSetDescriptorBufferOffsetsEXT-commonparent# Both of
+--     @commandBuffer@, and @layout@ /must/ have been created, allocated,
+--     or retrieved from the same 'Vulkan.Core10.Handles.Device'
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint',
+-- 'Vulkan.Core10.Handles.PipelineLayout'
+cmdSetDescriptorBufferOffsetsEXT :: forall io
+                                  . (MonadIO io)
+                                 => -- | @commandBuffer@ is the command buffer in which the descriptor buffer
+                                    -- offsets will be set.
+                                    CommandBuffer
+                                 -> -- | @pipelineBindPoint@ is a
+                                    -- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' indicating the
+                                    -- type of the pipeline that will use the descriptors.
+                                    PipelineBindPoint
+                                 -> -- | @layout@ is a 'Vulkan.Core10.Handles.PipelineLayout' object used to
+                                    -- program the bindings.
+                                    PipelineLayout
+                                 -> -- | @firstSet@ is the number of the first set to be bound.
+                                    ("firstSet" ::: Word32)
+                                 -> -- | @pBufferIndices@ is a pointer to an array of indices into the descriptor
+                                    -- buffer binding points set by 'cmdBindDescriptorBuffersEXT'.
+                                    ("bufferIndices" ::: Vector Word32)
+                                 -> -- | @pOffsets@ is a pointer to an array of
+                                    -- 'Vulkan.Core10.FundamentalTypes.DeviceSize' offsets to apply to the
+                                    -- bound descriptor buffers.
+                                    ("offsets" ::: Vector DeviceSize)
+                                 -> io ()
+cmdSetDescriptorBufferOffsetsEXT commandBuffer
+                                   pipelineBindPoint
+                                   layout
+                                   firstSet
+                                   bufferIndices
+                                   offsets = liftIO . evalContT $ do
+  let vkCmdSetDescriptorBufferOffsetsEXTPtr = pVkCmdSetDescriptorBufferOffsetsEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdSetDescriptorBufferOffsetsEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetDescriptorBufferOffsetsEXT is null" Nothing Nothing
+  let vkCmdSetDescriptorBufferOffsetsEXT' = mkVkCmdSetDescriptorBufferOffsetsEXT vkCmdSetDescriptorBufferOffsetsEXTPtr
+  let pBufferIndicesLength = Data.Vector.length $ (bufferIndices)
+  lift $ unless ((Data.Vector.length $ (offsets)) == pBufferIndicesLength) $
+    throwIO $ IOError Nothing InvalidArgument "" "pOffsets and pBufferIndices must have the same length" Nothing Nothing
+  pPBufferIndices <- ContT $ allocaBytes @Word32 ((Data.Vector.length (bufferIndices)) * 4)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPBufferIndices `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (bufferIndices)
+  pPOffsets <- ContT $ allocaBytes @DeviceSize ((Data.Vector.length (offsets)) * 8)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPOffsets `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) (offsets)
+  lift $ traceAroundEvent "vkCmdSetDescriptorBufferOffsetsEXT" (vkCmdSetDescriptorBufferOffsetsEXT'
+                                                                  (commandBufferHandle (commandBuffer))
+                                                                  (pipelineBindPoint)
+                                                                  (layout)
+                                                                  (firstSet)
+                                                                  ((fromIntegral pBufferIndicesLength :: Word32))
+                                                                  (pPBufferIndices)
+                                                                  (pPOffsets))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBindDescriptorBufferEmbeddedSamplersEXT
+  :: FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> Word32 -> IO ()
+
+-- | vkCmdBindDescriptorBufferEmbeddedSamplersEXT - Setting embedded
+-- immutable samplers offsets in a command buffer
+--
+-- = Description
+--
+-- 'cmdBindDescriptorBufferEmbeddedSamplersEXT' binds the embedded
+-- immutable samplers in @set@ of @layout@ to @set@ for the command buffer
+-- for subsequent
+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-bindpoint-commands bound pipeline commands>
+-- set by @pipelineBindPoint@. Any previous binding to this set by
+-- 'cmdSetDescriptorBufferOffsetsEXT' or this command is overwritten. Any
+-- sets that were last bound by a call to
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets' are
+-- invalidated upon calling this command. Other sets will also be
+-- invalidated upon calling this command if @layout@ differs from the
+-- pipeline layout used to bind those other sets, as described in
+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-compatibility Pipeline Layout Compatibility>.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-None-08068# The
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBuffer descriptorBuffer>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-pipelineBindPoint-08069#
+--     @pipelineBindPoint@ /must/ be supported by the @commandBuffer@’s
+--     parent 'Vulkan.Core10.Handles.CommandPool'’s queue family
+--
+-- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-set-08070# The
+--     'Vulkan.Core10.Handles.DescriptorSetLayout' at index @set@ when
+--     @layout@ was created /must/ have been created with the
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-set-08071# @set@
+--     /must/ be less than or equal to
+--     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'::@setLayoutCount@
+--     provided when @layout@ was created
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-pipelineBindPoint-parameter#
+--     @pipelineBindPoint@ /must/ be a valid
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' value
+--
+-- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-layout-parameter#
+--     @layout@ /must/ be a valid 'Vulkan.Core10.Handles.PipelineLayout'
+--     handle
+--
+-- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-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-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-commandBuffer-cmdpool#
+--     The 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics, or compute operations
+--
+-- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-videocoding# This
+--     command /must/ only be called outside of a video coding scope
+--
+-- -   #VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-commonparent#
+--     Both of @commandBuffer@, and @layout@ /must/ have been created,
+--     allocated, or retrieved from the same 'Vulkan.Core10.Handles.Device'
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginVideoCodingKHR Video Coding Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-queueoperation-command-types Command Type> |
+-- +============================================================================================================================+========================================================================================================================+=============================================================================================================================+=======================================================================================================================+========================================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Outside                                                                                                                     | Graphics                                                                                                              | State                                                                                                                                  |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                             | Compute                                                                                                               |                                                                                                                                        |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint',
+-- 'Vulkan.Core10.Handles.PipelineLayout'
+cmdBindDescriptorBufferEmbeddedSamplersEXT :: forall io
+                                            . (MonadIO io)
+                                           => -- | @commandBuffer@ is the command buffer that the embedded immutable
+                                              -- samplers will be bound to.
+                                              CommandBuffer
+                                           -> -- | @pipelineBindPoint@ is a
+                                              -- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' indicating the
+                                              -- type of the pipeline that will use the embedded immutable samplers.
+                                              PipelineBindPoint
+                                           -> -- | @layout@ is a 'Vulkan.Core10.Handles.PipelineLayout' object used to
+                                              -- program the bindings.
+                                              PipelineLayout
+                                           -> -- | @set@ is the number of the set to be bound.
+                                              ("set" ::: Word32)
+                                           -> io ()
+cmdBindDescriptorBufferEmbeddedSamplersEXT commandBuffer
+                                             pipelineBindPoint
+                                             layout
+                                             set = liftIO $ do
+  let vkCmdBindDescriptorBufferEmbeddedSamplersEXTPtr = pVkCmdBindDescriptorBufferEmbeddedSamplersEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdBindDescriptorBufferEmbeddedSamplersEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindDescriptorBufferEmbeddedSamplersEXT is null" Nothing Nothing
+  let vkCmdBindDescriptorBufferEmbeddedSamplersEXT' = mkVkCmdBindDescriptorBufferEmbeddedSamplersEXT vkCmdBindDescriptorBufferEmbeddedSamplersEXTPtr
+  traceAroundEvent "vkCmdBindDescriptorBufferEmbeddedSamplersEXT" (vkCmdBindDescriptorBufferEmbeddedSamplersEXT'
+                                                                     (commandBufferHandle (commandBuffer))
+                                                                     (pipelineBindPoint)
+                                                                     (layout)
+                                                                     (set))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetBufferOpaqueCaptureDescriptorDataEXT
+  :: FunPtr (Ptr Device_T -> Ptr BufferCaptureDescriptorDataInfoEXT -> Ptr () -> IO Result) -> Ptr Device_T -> Ptr BufferCaptureDescriptorDataInfoEXT -> Ptr () -> IO Result
+
+-- | vkGetBufferOpaqueCaptureDescriptorDataEXT - Get buffer opaque capture
+-- descriptor data
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetBufferOpaqueCaptureDescriptorDataEXT-None-08072# The
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBuffer descriptorBufferCaptureReplay>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkGetBufferOpaqueCaptureDescriptorDataEXT-pData-08073# @pData@
+--     /must/ point to a buffer that is at least
+--     'PhysicalDeviceDescriptorBufferPropertiesEXT'::@bufferCaptureReplayDescriptorDataSize@
+--     bytes in size
+--
+-- -   #VUID-vkGetBufferOpaqueCaptureDescriptorDataEXT-device-08074# If
+--     @device@ was created with multiple physical devices, then the
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetBufferOpaqueCaptureDescriptorDataEXT-device-parameter#
+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetBufferOpaqueCaptureDescriptorDataEXT-pInfo-parameter#
+--     @pInfo@ /must/ be a valid pointer to a valid
+--     'BufferCaptureDescriptorDataInfoEXT' structure
+--
+-- -   #VUID-vkGetBufferOpaqueCaptureDescriptorDataEXT-pData-parameter#
+--     @pData@ /must/ be a pointer value
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- 'BufferCaptureDescriptorDataInfoEXT', 'Vulkan.Core10.Handles.Device'
+getBufferOpaqueCaptureDescriptorDataEXT :: forall io
+                                         . (MonadIO io)
+                                        => -- | @device@ is the logical device that gets the data.
+                                           Device
+                                        -> -- | @pInfo@ is a pointer to a 'BufferCaptureDescriptorDataInfoEXT' structure
+                                           -- specifying the buffer.
+                                           BufferCaptureDescriptorDataInfoEXT
+                                        -> -- | @pData@ is a pointer to a user-allocated buffer where the data will be
+                                           -- written.
+                                           ("data" ::: Ptr ())
+                                        -> io ()
+getBufferOpaqueCaptureDescriptorDataEXT device
+                                          info
+                                          data' = liftIO . evalContT $ do
+  let vkGetBufferOpaqueCaptureDescriptorDataEXTPtr = pVkGetBufferOpaqueCaptureDescriptorDataEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetBufferOpaqueCaptureDescriptorDataEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetBufferOpaqueCaptureDescriptorDataEXT is null" Nothing Nothing
+  let vkGetBufferOpaqueCaptureDescriptorDataEXT' = mkVkGetBufferOpaqueCaptureDescriptorDataEXT vkGetBufferOpaqueCaptureDescriptorDataEXTPtr
+  pInfo <- ContT $ withCStruct (info)
+  r <- lift $ traceAroundEvent "vkGetBufferOpaqueCaptureDescriptorDataEXT" (vkGetBufferOpaqueCaptureDescriptorDataEXT'
+                                                                              (deviceHandle (device))
+                                                                              pInfo
+                                                                              (data'))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetImageOpaqueCaptureDescriptorDataEXT
+  :: FunPtr (Ptr Device_T -> Ptr ImageCaptureDescriptorDataInfoEXT -> Ptr () -> IO Result) -> Ptr Device_T -> Ptr ImageCaptureDescriptorDataInfoEXT -> Ptr () -> IO Result
+
+-- | vkGetImageOpaqueCaptureDescriptorDataEXT - Get image opaque capture
+-- descriptor data
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetImageOpaqueCaptureDescriptorDataEXT-None-08076# The
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBuffer descriptorBufferCaptureReplay>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkGetImageOpaqueCaptureDescriptorDataEXT-pData-08077# @pData@
+--     /must/ point to a buffer that is at least
+--     'PhysicalDeviceDescriptorBufferPropertiesEXT'::@imageCaptureReplayDescriptorDataSize@
+--     bytes in size
+--
+-- -   #VUID-vkGetImageOpaqueCaptureDescriptorDataEXT-device-08078# If
+--     @device@ was created with multiple physical devices, then the
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetImageOpaqueCaptureDescriptorDataEXT-device-parameter#
+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetImageOpaqueCaptureDescriptorDataEXT-pInfo-parameter#
+--     @pInfo@ /must/ be a valid pointer to a valid
+--     'ImageCaptureDescriptorDataInfoEXT' structure
+--
+-- -   #VUID-vkGetImageOpaqueCaptureDescriptorDataEXT-pData-parameter#
+--     @pData@ /must/ be a pointer value
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- 'Vulkan.Core10.Handles.Device', 'ImageCaptureDescriptorDataInfoEXT'
+getImageOpaqueCaptureDescriptorDataEXT :: forall io
+                                        . (MonadIO io)
+                                       => -- | @device@ is the logical device that gets the data.
+                                          Device
+                                       -> -- | @pInfo@ is a pointer to a 'ImageCaptureDescriptorDataInfoEXT' structure
+                                          -- specifying the image.
+                                          ImageCaptureDescriptorDataInfoEXT
+                                       -> -- | @pData@ is a pointer to a user-allocated buffer where the data will be
+                                          -- written.
+                                          ("data" ::: Ptr ())
+                                       -> io ()
+getImageOpaqueCaptureDescriptorDataEXT device
+                                         info
+                                         data' = liftIO . evalContT $ do
+  let vkGetImageOpaqueCaptureDescriptorDataEXTPtr = pVkGetImageOpaqueCaptureDescriptorDataEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetImageOpaqueCaptureDescriptorDataEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetImageOpaqueCaptureDescriptorDataEXT is null" Nothing Nothing
+  let vkGetImageOpaqueCaptureDescriptorDataEXT' = mkVkGetImageOpaqueCaptureDescriptorDataEXT vkGetImageOpaqueCaptureDescriptorDataEXTPtr
+  pInfo <- ContT $ withCStruct (info)
+  r <- lift $ traceAroundEvent "vkGetImageOpaqueCaptureDescriptorDataEXT" (vkGetImageOpaqueCaptureDescriptorDataEXT'
+                                                                             (deviceHandle (device))
+                                                                             pInfo
+                                                                             (data'))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetImageViewOpaqueCaptureDescriptorDataEXT
+  :: FunPtr (Ptr Device_T -> Ptr ImageViewCaptureDescriptorDataInfoEXT -> Ptr () -> IO Result) -> Ptr Device_T -> Ptr ImageViewCaptureDescriptorDataInfoEXT -> Ptr () -> IO Result
+
+-- | vkGetImageViewOpaqueCaptureDescriptorDataEXT - Get image view opaque
+-- capture descriptor data
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetImageViewOpaqueCaptureDescriptorDataEXT-None-08080# The
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBuffer descriptorBufferCaptureReplay>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkGetImageViewOpaqueCaptureDescriptorDataEXT-pData-08081#
+--     @pData@ /must/ point to a buffer that is at least
+--     'PhysicalDeviceDescriptorBufferPropertiesEXT'::@imageViewCaptureReplayDescriptorDataSize@
+--     bytes in size
+--
+-- -   #VUID-vkGetImageViewOpaqueCaptureDescriptorDataEXT-device-08082# If
+--     @device@ was created with multiple physical devices, then the
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetImageViewOpaqueCaptureDescriptorDataEXT-device-parameter#
+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetImageViewOpaqueCaptureDescriptorDataEXT-pInfo-parameter#
+--     @pInfo@ /must/ be a valid pointer to a valid
+--     'ImageViewCaptureDescriptorDataInfoEXT' structure
+--
+-- -   #VUID-vkGetImageViewOpaqueCaptureDescriptorDataEXT-pData-parameter#
+--     @pData@ /must/ be a pointer value
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- 'Vulkan.Core10.Handles.Device', 'ImageViewCaptureDescriptorDataInfoEXT'
+getImageViewOpaqueCaptureDescriptorDataEXT :: forall io
+                                            . (MonadIO io)
+                                           => -- | @device@ is the logical device that gets the data.
+                                              Device
+                                           -> -- | @pInfo@ is a pointer to a 'ImageViewCaptureDescriptorDataInfoEXT'
+                                              -- structure specifying the image view.
+                                              ImageViewCaptureDescriptorDataInfoEXT
+                                           -> -- | @pData@ is a pointer to a user-allocated buffer where the data will be
+                                              -- written.
+                                              ("data" ::: Ptr ())
+                                           -> io ()
+getImageViewOpaqueCaptureDescriptorDataEXT device
+                                             info
+                                             data' = liftIO . evalContT $ do
+  let vkGetImageViewOpaqueCaptureDescriptorDataEXTPtr = pVkGetImageViewOpaqueCaptureDescriptorDataEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetImageViewOpaqueCaptureDescriptorDataEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetImageViewOpaqueCaptureDescriptorDataEXT is null" Nothing Nothing
+  let vkGetImageViewOpaqueCaptureDescriptorDataEXT' = mkVkGetImageViewOpaqueCaptureDescriptorDataEXT vkGetImageViewOpaqueCaptureDescriptorDataEXTPtr
+  pInfo <- ContT $ withCStruct (info)
+  r <- lift $ traceAroundEvent "vkGetImageViewOpaqueCaptureDescriptorDataEXT" (vkGetImageViewOpaqueCaptureDescriptorDataEXT'
+                                                                                 (deviceHandle (device))
+                                                                                 pInfo
+                                                                                 (data'))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetSamplerOpaqueCaptureDescriptorDataEXT
+  :: FunPtr (Ptr Device_T -> Ptr SamplerCaptureDescriptorDataInfoEXT -> Ptr () -> IO Result) -> Ptr Device_T -> Ptr SamplerCaptureDescriptorDataInfoEXT -> Ptr () -> IO Result
+
+-- | vkGetSamplerOpaqueCaptureDescriptorDataEXT - Get sampler opaque capture
+-- descriptor data
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetSamplerOpaqueCaptureDescriptorDataEXT-None-08084# The
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBuffer descriptorBufferCaptureReplay>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkGetSamplerOpaqueCaptureDescriptorDataEXT-pData-08085#
+--     @pData@ /must/ point to a buffer that is at least
+--     'PhysicalDeviceDescriptorBufferPropertiesEXT'::@samplerCaptureReplayDescriptorDataSize@
+--     bytes in size
+--
+-- -   #VUID-vkGetSamplerOpaqueCaptureDescriptorDataEXT-device-08086# If
+--     @device@ was created with multiple physical devices, then the
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetSamplerOpaqueCaptureDescriptorDataEXT-device-parameter#
+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetSamplerOpaqueCaptureDescriptorDataEXT-pInfo-parameter#
+--     @pInfo@ /must/ be a valid pointer to a valid
+--     'SamplerCaptureDescriptorDataInfoEXT' structure
+--
+-- -   #VUID-vkGetSamplerOpaqueCaptureDescriptorDataEXT-pData-parameter#
+--     @pData@ /must/ be a pointer value
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- 'Vulkan.Core10.Handles.Device', 'SamplerCaptureDescriptorDataInfoEXT'
+getSamplerOpaqueCaptureDescriptorDataEXT :: forall io
+                                          . (MonadIO io)
+                                         => -- | @device@ is the logical device that gets the data.
+                                            Device
+                                         -> -- | @pInfo@ is a pointer to a 'SamplerCaptureDescriptorDataInfoEXT'
+                                            -- structure specifying the sampler.
+                                            SamplerCaptureDescriptorDataInfoEXT
+                                         -> -- | @pData@ is a pointer to a user-allocated buffer where the data will be
+                                            -- written.
+                                            ("data" ::: Ptr ())
+                                         -> io ()
+getSamplerOpaqueCaptureDescriptorDataEXT device
+                                           info
+                                           data' = liftIO . evalContT $ do
+  let vkGetSamplerOpaqueCaptureDescriptorDataEXTPtr = pVkGetSamplerOpaqueCaptureDescriptorDataEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetSamplerOpaqueCaptureDescriptorDataEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetSamplerOpaqueCaptureDescriptorDataEXT is null" Nothing Nothing
+  let vkGetSamplerOpaqueCaptureDescriptorDataEXT' = mkVkGetSamplerOpaqueCaptureDescriptorDataEXT vkGetSamplerOpaqueCaptureDescriptorDataEXTPtr
+  pInfo <- ContT $ withCStruct (info)
+  r <- lift $ traceAroundEvent "vkGetSamplerOpaqueCaptureDescriptorDataEXT" (vkGetSamplerOpaqueCaptureDescriptorDataEXT'
+                                                                               (deviceHandle (device))
+                                                                               pInfo
+                                                                               (data'))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT
+  :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureCaptureDescriptorDataInfoEXT -> Ptr () -> IO Result) -> Ptr Device_T -> Ptr AccelerationStructureCaptureDescriptorDataInfoEXT -> Ptr () -> IO Result
+
+-- | vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT - Get
+-- acceleration structure opaque capture descriptor data
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT-None-08088#
+--     The
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBuffer descriptorBufferCaptureReplay>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT-pData-08089#
+--     @pData@ /must/ point to a buffer that is at least
+--     'PhysicalDeviceDescriptorBufferPropertiesEXT'::@accelerationStructureCaptureReplayDescriptorDataSize@
+--     bytes in size
+--
+-- -   #VUID-vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT-device-08090#
+--     If @device@ was created with multiple physical devices, then the
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT-device-parameter#
+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT-pInfo-parameter#
+--     @pInfo@ /must/ be a valid pointer to a valid
+--     'AccelerationStructureCaptureDescriptorDataInfoEXT' structure
+--
+-- -   #VUID-vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT-pData-parameter#
+--     @pData@ /must/ be a pointer value
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'AccelerationStructureCaptureDescriptorDataInfoEXT',
+-- 'Vulkan.Core10.Handles.Device'
+getAccelerationStructureOpaqueCaptureDescriptorDataEXT :: forall io
+                                                        . (MonadIO io)
+                                                       => -- | @device@ is the logical device that gets the data.
+                                                          Device
+                                                       -> -- | @pInfo@ is a pointer to a
+                                                          -- 'AccelerationStructureCaptureDescriptorDataInfoEXT' structure specifying
+                                                          -- the acceleration structure.
+                                                          AccelerationStructureCaptureDescriptorDataInfoEXT
+                                                       -> -- | @pData@ is a pointer to a user-allocated buffer where the data will be
+                                                          -- written.
+                                                          ("data" ::: Ptr ())
+                                                       -> io ()
+getAccelerationStructureOpaqueCaptureDescriptorDataEXT device
+                                                         info
+                                                         data' = liftIO . evalContT $ do
+  let vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXTPtr = pVkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXTPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT is null" Nothing Nothing
+  let vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT' = mkVkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXTPtr
+  pInfo <- ContT $ withCStruct (info)
+  r <- lift $ traceAroundEvent "vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT" (vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT'
+                                                                                             (deviceHandle (device))
+                                                                                             pInfo
+                                                                                             (data'))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+-- | VkPhysicalDeviceDescriptorBufferFeaturesEXT - Structure describing the
+-- descriptor buffer features that can be supported by an implementation
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceDescriptorBufferFeaturesEXT' 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. 'PhysicalDeviceDescriptorBufferFeaturesEXT' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceDescriptorBufferFeaturesEXT = PhysicalDeviceDescriptorBufferFeaturesEXT
+  { -- | #features-descriptorBuffer# @descriptorBuffer@ indicates that the
+    -- implementation supports putting shader-accessible descriptors directly
+    -- in memory.
+    descriptorBuffer :: Bool
+  , -- | #features-descriptorBufferCaptureReplay# @descriptorBufferCaptureReplay@
+    -- indicates that the implementation supports capture and replay when using
+    -- descriptor buffers. If this is 'Vulkan.Core10.FundamentalTypes.TRUE',
+    -- all resources created with
+    -- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT',
+    -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT',
+    -- 'Vulkan.Core10.Enums.ImageViewCreateFlagBits.IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT',
+    -- 'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT',
+    -- or
+    -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+    -- /must/ be created before resources of the same types without those
+    -- flags.
+    descriptorBufferCaptureReplay :: Bool
+  , -- | #features-descriptorBufferImageLayoutIgnored#
+    -- @descriptorBufferImageLayoutIgnored@ indicates that the implementation
+    -- will ignore @imageLayout@ in
+    -- 'Vulkan.Core10.DescriptorSet.DescriptorImageInfo' when calling
+    -- 'getDescriptorEXT'.
+    descriptorBufferImageLayoutIgnored :: Bool
+  , -- | #features-descriptorBufferPushDescriptors#
+    -- @descriptorBufferPushDescriptors@ indicates that the implementation
+    -- supports using push descriptors with descriptor buffers.
+    descriptorBufferPushDescriptors :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceDescriptorBufferFeaturesEXT)
+#endif
+deriving instance Show PhysicalDeviceDescriptorBufferFeaturesEXT
+
+instance ToCStruct PhysicalDeviceDescriptorBufferFeaturesEXT where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceDescriptorBufferFeaturesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (descriptorBuffer))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (descriptorBufferCaptureReplay))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (descriptorBufferImageLayoutIgnored))
+    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (descriptorBufferPushDescriptors))
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_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))
+    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceDescriptorBufferFeaturesEXT where
+  peekCStruct p = do
+    descriptorBuffer <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    descriptorBufferCaptureReplay <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    descriptorBufferImageLayoutIgnored <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    descriptorBufferPushDescriptors <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))
+    pure $ PhysicalDeviceDescriptorBufferFeaturesEXT
+             (bool32ToBool descriptorBuffer)
+             (bool32ToBool descriptorBufferCaptureReplay)
+             (bool32ToBool descriptorBufferImageLayoutIgnored)
+             (bool32ToBool descriptorBufferPushDescriptors)
+
+instance Storable PhysicalDeviceDescriptorBufferFeaturesEXT where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceDescriptorBufferFeaturesEXT where
+  zero = PhysicalDeviceDescriptorBufferFeaturesEXT
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceDescriptorBufferPropertiesEXT - Structure describing
+-- descriptor buffer properties supported by an implementation
+--
+-- = Description
+--
+-- A descriptor binding with type
+-- 'Vulkan.Extensions.VK_VALVE_mutable_descriptor_type.DESCRIPTOR_TYPE_MUTABLE_VALVE'
+-- has a descriptor size which is implied by the descriptor types included
+-- in the
+-- 'Vulkan.Extensions.VK_VALVE_mutable_descriptor_type.MutableDescriptorTypeCreateInfoVALVE'::@pDescriptorTypes@
+-- list. The descriptor size is equal to the maximum size of any descriptor
+-- type included in the @pDescriptorTypes@ list.
+--
+-- As there is no way to request robust and non-robust descriptors
+-- separately, or specify robust\/non-robust descriptors in the set layout,
+-- if
+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+-- is enabled then robust descriptors are always used.
+--
+-- If the 'PhysicalDeviceDescriptorBufferPropertiesEXT' structure is
+-- included in the @pNext@ chain of the
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+-- structure passed to
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2',
+-- it is filled in with each corresponding implementation-dependent
+-- property.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceDescriptorBufferPropertiesEXT = PhysicalDeviceDescriptorBufferPropertiesEXT
+  { -- | #limits-combinedImageSamplerDescriptorSingleArray#
+    -- @combinedImageSamplerDescriptorSingleArray@ indicates that the
+    -- implementation does not require an array of
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'
+    -- descriptors to be written into a descriptor buffer as an array of image
+    -- descriptors, immediately followed by an array of sampler descriptors.
+    combinedImageSamplerDescriptorSingleArray :: Bool
+  , -- | #limits-bufferlessPushDescriptors# @bufferlessPushDescriptors@ indicates
+    -- that the implementation does not require a buffer created with
+    -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT'
+    -- to be bound when using push descriptors.
+    bufferlessPushDescriptors :: Bool
+  , -- | #limits-allowSamplerImageViewPostSubmitCreation#
+    -- @allowSamplerImageViewPostSubmitCreation@ indicates that the
+    -- implementation does not restrict when the
+    -- 'Vulkan.Core10.Handles.Sampler' or 'Vulkan.Core10.Handles.ImageView'
+    -- objects used to retrieve descriptor data /can/ be created in relation to
+    -- command buffer submission. If this value is
+    -- 'Vulkan.Core10.FundamentalTypes.FALSE', then the application /must/
+    -- create any 'Vulkan.Core10.Handles.Sampler' or
+    -- 'Vulkan.Core10.Handles.ImageView' objects whose descriptor data is
+    -- accessed during the execution of a command buffer, before the
+    -- 'Vulkan.Core10.Queue.queueSubmit' , or
+    -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.queueSubmit2', call
+    -- that submits that command buffer.
+    allowSamplerImageViewPostSubmitCreation :: Bool
+  , -- | #limits-descriptorBufferOffsetAlignment#
+    -- @descriptorBufferOffsetAlignment@ indicates the /required/ alignment in
+    -- bytes when setting offsets into the descriptor buffer.
+    descriptorBufferOffsetAlignment :: DeviceSize
+  , -- | #limits-maxDescriptorBufferBindings# @maxDescriptorBufferBindings@
+    -- indicates the maximum sum total number of descriptor buffers and
+    -- embedded immutable sampler sets that /can/ be bound.
+    maxDescriptorBufferBindings :: Word32
+  , -- | #limits-maxResourceDescriptorBufferBindings#
+    -- @maxResourceDescriptorBufferBindings@ indicates the maximum number of
+    -- resource descriptor buffers that /can/ be bound.
+    maxResourceDescriptorBufferBindings :: Word32
+  , -- | #limits-maxSamplerDescriptorBufferBindings#
+    -- @maxSamplerDescriptorBufferBindings@ indicates the maximum number of
+    -- sampler descriptor buffers that /can/ be bound.
+    maxSamplerDescriptorBufferBindings :: Word32
+  , -- | #limits-maxEmbeddedImmutableSamplerBindings#
+    -- @maxEmbeddedImmutableSamplerBindings@ indicates the maximum number of
+    -- embedded immutable sampler sets that /can/ be bound.
+    maxEmbeddedImmutableSamplerBindings :: Word32
+  , -- | #limits-maxEmbeddedImmutableSamplers# @maxEmbeddedImmutableSamplers@
+    -- indicates the maximum number of unique immutable samplers in descriptor
+    -- set layouts created with
+    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT',
+    -- and pipeline layouts created from them, which /can/ simultaneously exist
+    -- on a device.
+    maxEmbeddedImmutableSamplers :: Word32
+  , -- | #limits-bufferCaptureReplayDescriptorDataSize#
+    -- @bufferCaptureReplayDescriptorDataSize@ indicates the maximum size in
+    -- bytes of the opaque data used for capture and replay with buffers.
+    bufferCaptureReplayDescriptorDataSize :: Word64
+  , -- | #limits-imageCaptureReplayDescriptorDataSize#
+    -- @imageCaptureReplayDescriptorDataSize@ indicates the maximum size in
+    -- bytes of the opaque data used for capture and replay with images.
+    imageCaptureReplayDescriptorDataSize :: Word64
+  , -- | #limits-imageViewCaptureReplayDescriptorDataSize#
+    -- @imageViewCaptureReplayDescriptorDataSize@ indicates the maximum size in
+    -- bytes of the opaque data used for capture and replay with image views.
+    imageViewCaptureReplayDescriptorDataSize :: Word64
+  , -- | #limits-samplerCaptureReplayDescriptorDataSize#
+    -- @samplerCaptureReplayDescriptorDataSize@ indicates the maximum size in
+    -- bytes of the opaque data used for capture and replay with samplers.
+    samplerCaptureReplayDescriptorDataSize :: Word64
+  , -- | #limits-accelerationStructureCaptureReplayDescriptorDataSize#
+    -- @accelerationStructureCaptureReplayDescriptorDataSize@ indicates the
+    -- maximum size in bytes of the opaque data used for capture and replay
+    -- with acceleration structures.
+    accelerationStructureCaptureReplayDescriptorDataSize :: Word64
+  , -- | #limits-samplerDescriptorSize# @samplerDescriptorSize@ indicates the
+    -- size in bytes of a
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER' descriptor.
+    samplerDescriptorSize :: Word64
+  , -- | #limits-combinedImageSamplerDescriptorSize#
+    -- @combinedImageSamplerDescriptorSize@ indicates the size in bytes of a
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'
+    -- descriptor.
+    combinedImageSamplerDescriptorSize :: Word64
+  , -- | #limits-sampledImageDescriptorSize# @sampledImageDescriptorSize@
+    -- indicates the size in bytes of a
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE'
+    -- descriptor.
+    sampledImageDescriptorSize :: Word64
+  , -- | #limits-storageImageDescriptorSize# @storageImageDescriptorSize@
+    -- indicates the size in bytes of a
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE'
+    -- descriptor.
+    storageImageDescriptorSize :: Word64
+  , -- | #limits-uniformTexelBufferDescriptorSize#
+    -- @uniformTexelBufferDescriptorSize@ indicates the size in bytes of a
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'
+    -- descriptor if the
+    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>
+    -- feature is not enabled.
+    uniformTexelBufferDescriptorSize :: Word64
+  , -- | #limits-robustUniformTexelBufferDescriptorSize#
+    -- @robustUniformTexelBufferDescriptorSize@ indicates the size in bytes of
+    -- a
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'
+    -- descriptor if the
+    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>
+    -- feature is enabled.
+    robustUniformTexelBufferDescriptorSize :: Word64
+  , -- | #limits-storageTexelBufferDescriptorSize#
+    -- @storageTexelBufferDescriptorSize@ indicates the size in bytes of a
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+    -- descriptor if the
+    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>
+    -- feature is not enabled.
+    storageTexelBufferDescriptorSize :: Word64
+  , -- | #limits-robustStorageTexelBufferDescriptorSize#
+    -- @robustStorageTexelBufferDescriptorSize@ indicates the size in bytes of
+    -- a
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+    -- descriptor if the
+    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>
+    -- feature is enabled.
+    robustStorageTexelBufferDescriptorSize :: Word64
+  , -- | #limits-uniformBufferDescriptorSize# @uniformBufferDescriptorSize@
+    -- indicates the size in bytes of a
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'
+    -- descriptor.
+    uniformBufferDescriptorSize :: Word64
+  , -- | #limits-robustUniformBufferDescriptorSize#
+    -- @robustUniformBufferDescriptorSize@ indicates the size in bytes of a
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'
+    -- descriptor if the
+    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>
+    -- feature is enabled.
+    robustUniformBufferDescriptorSize :: Word64
+  , -- | #limits-storageBufferDescriptorSize# @storageBufferDescriptorSize@
+    -- indicates the size in bytes of a
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'
+    -- descriptor.
+    storageBufferDescriptorSize :: Word64
+  , -- | #limits-robustStorageBufferDescriptorSize#
+    -- @robustStorageBufferDescriptorSize@ indicates the size in bytes of a
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'
+    -- descriptor if the
+    -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>
+    -- feature is enabled.
+    robustStorageBufferDescriptorSize :: Word64
+  , -- | #limits-inputAttachmentDescriptorSize# @inputAttachmentDescriptorSize@
+    -- indicates the size in bytes of a
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
+    -- descriptor.
+    inputAttachmentDescriptorSize :: Word64
+  , -- | #limits-accelerationStructureDescriptorSize#
+    -- @accelerationStructureDescriptorSize@ indicates the size in bytes of a
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+    -- or
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV'
+    -- descriptor.
+    accelerationStructureDescriptorSize :: Word64
+  , -- | #limits-maxSamplerDescriptorBufferRange#
+    -- @maxSamplerDescriptorBufferRange@ indicates the maximum range in bytes
+    -- from the address of a sampler descriptor buffer binding that is
+    -- accessible to a shader.
+    maxSamplerDescriptorBufferRange :: DeviceSize
+  , -- | #limits-maxResourceDescriptorBufferRange#
+    -- @maxResourceDescriptorBufferRange@ indicates the maximum range in bytes
+    -- from the address of a resource descriptor buffer binding that is
+    -- accessible to a shader.
+    maxResourceDescriptorBufferRange :: DeviceSize
+  , -- | #limits-samplerDescriptorBufferAddressSpaceSize#
+    -- @samplerDescriptorBufferAddressSpaceSize@ indicates the total size in
+    -- bytes of the address space available for descriptor buffers created with
+    -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT'.
+    samplerDescriptorBufferAddressSpaceSize :: DeviceSize
+  , -- | #limits-resourceDescriptorBufferAddressSpaceSize#
+    -- @resourceDescriptorBufferAddressSpaceSize@ indicates the total size in
+    -- bytes of the address space available for descriptor buffers created with
+    -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT'.
+    resourceDescriptorBufferAddressSpaceSize :: DeviceSize
+  , -- | #limits-descriptorBufferAddressSpaceSize#
+    -- @descriptorBufferAddressSpaceSize@ indicates the total size in bytes of
+    -- the address space available for descriptor buffers created with both
+    -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT'
+    -- and
+    -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT'.
+    descriptorBufferAddressSpaceSize :: DeviceSize
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceDescriptorBufferPropertiesEXT)
+#endif
+deriving instance Show PhysicalDeviceDescriptorBufferPropertiesEXT
+
+instance ToCStruct PhysicalDeviceDescriptorBufferPropertiesEXT where
+  withCStruct x f = allocaBytes 256 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceDescriptorBufferPropertiesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (combinedImageSamplerDescriptorSingleArray))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (bufferlessPushDescriptors))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (allowSamplerImageViewPostSubmitCreation))
+    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (descriptorBufferOffsetAlignment)
+    poke ((p `plusPtr` 40 :: Ptr Word32)) (maxDescriptorBufferBindings)
+    poke ((p `plusPtr` 44 :: Ptr Word32)) (maxResourceDescriptorBufferBindings)
+    poke ((p `plusPtr` 48 :: Ptr Word32)) (maxSamplerDescriptorBufferBindings)
+    poke ((p `plusPtr` 52 :: Ptr Word32)) (maxEmbeddedImmutableSamplerBindings)
+    poke ((p `plusPtr` 56 :: Ptr Word32)) (maxEmbeddedImmutableSamplers)
+    poke ((p `plusPtr` 64 :: Ptr CSize)) (CSize (bufferCaptureReplayDescriptorDataSize))
+    poke ((p `plusPtr` 72 :: Ptr CSize)) (CSize (imageCaptureReplayDescriptorDataSize))
+    poke ((p `plusPtr` 80 :: Ptr CSize)) (CSize (imageViewCaptureReplayDescriptorDataSize))
+    poke ((p `plusPtr` 88 :: Ptr CSize)) (CSize (samplerCaptureReplayDescriptorDataSize))
+    poke ((p `plusPtr` 96 :: Ptr CSize)) (CSize (accelerationStructureCaptureReplayDescriptorDataSize))
+    poke ((p `plusPtr` 104 :: Ptr CSize)) (CSize (samplerDescriptorSize))
+    poke ((p `plusPtr` 112 :: Ptr CSize)) (CSize (combinedImageSamplerDescriptorSize))
+    poke ((p `plusPtr` 120 :: Ptr CSize)) (CSize (sampledImageDescriptorSize))
+    poke ((p `plusPtr` 128 :: Ptr CSize)) (CSize (storageImageDescriptorSize))
+    poke ((p `plusPtr` 136 :: Ptr CSize)) (CSize (uniformTexelBufferDescriptorSize))
+    poke ((p `plusPtr` 144 :: Ptr CSize)) (CSize (robustUniformTexelBufferDescriptorSize))
+    poke ((p `plusPtr` 152 :: Ptr CSize)) (CSize (storageTexelBufferDescriptorSize))
+    poke ((p `plusPtr` 160 :: Ptr CSize)) (CSize (robustStorageTexelBufferDescriptorSize))
+    poke ((p `plusPtr` 168 :: Ptr CSize)) (CSize (uniformBufferDescriptorSize))
+    poke ((p `plusPtr` 176 :: Ptr CSize)) (CSize (robustUniformBufferDescriptorSize))
+    poke ((p `plusPtr` 184 :: Ptr CSize)) (CSize (storageBufferDescriptorSize))
+    poke ((p `plusPtr` 192 :: Ptr CSize)) (CSize (robustStorageBufferDescriptorSize))
+    poke ((p `plusPtr` 200 :: Ptr CSize)) (CSize (inputAttachmentDescriptorSize))
+    poke ((p `plusPtr` 208 :: Ptr CSize)) (CSize (accelerationStructureDescriptorSize))
+    poke ((p `plusPtr` 216 :: Ptr DeviceSize)) (maxSamplerDescriptorBufferRange)
+    poke ((p `plusPtr` 224 :: Ptr DeviceSize)) (maxResourceDescriptorBufferRange)
+    poke ((p `plusPtr` 232 :: Ptr DeviceSize)) (samplerDescriptorBufferAddressSpaceSize)
+    poke ((p `plusPtr` 240 :: Ptr DeviceSize)) (resourceDescriptorBufferAddressSpaceSize)
+    poke ((p `plusPtr` 248 :: Ptr DeviceSize)) (descriptorBufferAddressSpaceSize)
+    f
+  cStructSize = 256
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_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))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (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` 52 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 64 :: Ptr CSize)) (CSize (zero))
+    poke ((p `plusPtr` 72 :: Ptr CSize)) (CSize (zero))
+    poke ((p `plusPtr` 80 :: Ptr CSize)) (CSize (zero))
+    poke ((p `plusPtr` 88 :: Ptr CSize)) (CSize (zero))
+    poke ((p `plusPtr` 96 :: Ptr CSize)) (CSize (zero))
+    poke ((p `plusPtr` 104 :: Ptr CSize)) (CSize (zero))
+    poke ((p `plusPtr` 112 :: Ptr CSize)) (CSize (zero))
+    poke ((p `plusPtr` 120 :: Ptr CSize)) (CSize (zero))
+    poke ((p `plusPtr` 128 :: Ptr CSize)) (CSize (zero))
+    poke ((p `plusPtr` 136 :: Ptr CSize)) (CSize (zero))
+    poke ((p `plusPtr` 144 :: Ptr CSize)) (CSize (zero))
+    poke ((p `plusPtr` 152 :: Ptr CSize)) (CSize (zero))
+    poke ((p `plusPtr` 160 :: Ptr CSize)) (CSize (zero))
+    poke ((p `plusPtr` 168 :: Ptr CSize)) (CSize (zero))
+    poke ((p `plusPtr` 176 :: Ptr CSize)) (CSize (zero))
+    poke ((p `plusPtr` 184 :: Ptr CSize)) (CSize (zero))
+    poke ((p `plusPtr` 192 :: Ptr CSize)) (CSize (zero))
+    poke ((p `plusPtr` 200 :: Ptr CSize)) (CSize (zero))
+    poke ((p `plusPtr` 208 :: Ptr CSize)) (CSize (zero))
+    poke ((p `plusPtr` 216 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 224 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 232 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 240 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 248 :: Ptr DeviceSize)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceDescriptorBufferPropertiesEXT where
+  peekCStruct p = do
+    combinedImageSamplerDescriptorSingleArray <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    bufferlessPushDescriptors <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    allowSamplerImageViewPostSubmitCreation <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    descriptorBufferOffsetAlignment <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))
+    maxDescriptorBufferBindings <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
+    maxResourceDescriptorBufferBindings <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))
+    maxSamplerDescriptorBufferBindings <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
+    maxEmbeddedImmutableSamplerBindings <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))
+    maxEmbeddedImmutableSamplers <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))
+    bufferCaptureReplayDescriptorDataSize <- peek @CSize ((p `plusPtr` 64 :: Ptr CSize))
+    imageCaptureReplayDescriptorDataSize <- peek @CSize ((p `plusPtr` 72 :: Ptr CSize))
+    imageViewCaptureReplayDescriptorDataSize <- peek @CSize ((p `plusPtr` 80 :: Ptr CSize))
+    samplerCaptureReplayDescriptorDataSize <- peek @CSize ((p `plusPtr` 88 :: Ptr CSize))
+    accelerationStructureCaptureReplayDescriptorDataSize <- peek @CSize ((p `plusPtr` 96 :: Ptr CSize))
+    samplerDescriptorSize <- peek @CSize ((p `plusPtr` 104 :: Ptr CSize))
+    combinedImageSamplerDescriptorSize <- peek @CSize ((p `plusPtr` 112 :: Ptr CSize))
+    sampledImageDescriptorSize <- peek @CSize ((p `plusPtr` 120 :: Ptr CSize))
+    storageImageDescriptorSize <- peek @CSize ((p `plusPtr` 128 :: Ptr CSize))
+    uniformTexelBufferDescriptorSize <- peek @CSize ((p `plusPtr` 136 :: Ptr CSize))
+    robustUniformTexelBufferDescriptorSize <- peek @CSize ((p `plusPtr` 144 :: Ptr CSize))
+    storageTexelBufferDescriptorSize <- peek @CSize ((p `plusPtr` 152 :: Ptr CSize))
+    robustStorageTexelBufferDescriptorSize <- peek @CSize ((p `plusPtr` 160 :: Ptr CSize))
+    uniformBufferDescriptorSize <- peek @CSize ((p `plusPtr` 168 :: Ptr CSize))
+    robustUniformBufferDescriptorSize <- peek @CSize ((p `plusPtr` 176 :: Ptr CSize))
+    storageBufferDescriptorSize <- peek @CSize ((p `plusPtr` 184 :: Ptr CSize))
+    robustStorageBufferDescriptorSize <- peek @CSize ((p `plusPtr` 192 :: Ptr CSize))
+    inputAttachmentDescriptorSize <- peek @CSize ((p `plusPtr` 200 :: Ptr CSize))
+    accelerationStructureDescriptorSize <- peek @CSize ((p `plusPtr` 208 :: Ptr CSize))
+    maxSamplerDescriptorBufferRange <- peek @DeviceSize ((p `plusPtr` 216 :: Ptr DeviceSize))
+    maxResourceDescriptorBufferRange <- peek @DeviceSize ((p `plusPtr` 224 :: Ptr DeviceSize))
+    samplerDescriptorBufferAddressSpaceSize <- peek @DeviceSize ((p `plusPtr` 232 :: Ptr DeviceSize))
+    resourceDescriptorBufferAddressSpaceSize <- peek @DeviceSize ((p `plusPtr` 240 :: Ptr DeviceSize))
+    descriptorBufferAddressSpaceSize <- peek @DeviceSize ((p `plusPtr` 248 :: Ptr DeviceSize))
+    pure $ PhysicalDeviceDescriptorBufferPropertiesEXT
+             (bool32ToBool combinedImageSamplerDescriptorSingleArray)
+             (bool32ToBool bufferlessPushDescriptors)
+             (bool32ToBool allowSamplerImageViewPostSubmitCreation)
+             descriptorBufferOffsetAlignment
+             maxDescriptorBufferBindings
+             maxResourceDescriptorBufferBindings
+             maxSamplerDescriptorBufferBindings
+             maxEmbeddedImmutableSamplerBindings
+             maxEmbeddedImmutableSamplers
+             (coerce @CSize @Word64 bufferCaptureReplayDescriptorDataSize)
+             (coerce @CSize @Word64 imageCaptureReplayDescriptorDataSize)
+             (coerce @CSize @Word64 imageViewCaptureReplayDescriptorDataSize)
+             (coerce @CSize @Word64 samplerCaptureReplayDescriptorDataSize)
+             (coerce @CSize @Word64 accelerationStructureCaptureReplayDescriptorDataSize)
+             (coerce @CSize @Word64 samplerDescriptorSize)
+             (coerce @CSize @Word64 combinedImageSamplerDescriptorSize)
+             (coerce @CSize @Word64 sampledImageDescriptorSize)
+             (coerce @CSize @Word64 storageImageDescriptorSize)
+             (coerce @CSize @Word64 uniformTexelBufferDescriptorSize)
+             (coerce @CSize @Word64 robustUniformTexelBufferDescriptorSize)
+             (coerce @CSize @Word64 storageTexelBufferDescriptorSize)
+             (coerce @CSize @Word64 robustStorageTexelBufferDescriptorSize)
+             (coerce @CSize @Word64 uniformBufferDescriptorSize)
+             (coerce @CSize @Word64 robustUniformBufferDescriptorSize)
+             (coerce @CSize @Word64 storageBufferDescriptorSize)
+             (coerce @CSize @Word64 robustStorageBufferDescriptorSize)
+             (coerce @CSize @Word64 inputAttachmentDescriptorSize)
+             (coerce @CSize @Word64 accelerationStructureDescriptorSize)
+             maxSamplerDescriptorBufferRange
+             maxResourceDescriptorBufferRange
+             samplerDescriptorBufferAddressSpaceSize
+             resourceDescriptorBufferAddressSpaceSize
+             descriptorBufferAddressSpaceSize
+
+instance Storable PhysicalDeviceDescriptorBufferPropertiesEXT where
+  sizeOf ~_ = 256
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceDescriptorBufferPropertiesEXT where
+  zero = PhysicalDeviceDescriptorBufferPropertiesEXT
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT - Structure
+-- describing descriptor buffer density map properties supported by an
+-- implementation
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT' structure
+-- is included in the @pNext@ chain of the
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+-- structure passed to
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2',
+-- it is filled in with each corresponding implementation-dependent
+-- property.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT = PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT
+  { -- | #limits-combinedImageSamplerDensityMapDescriptorSize#
+    -- @combinedImageSamplerDensityMapDescriptorSize@ indicates the size in
+    -- bytes of a
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'
+    -- descriptor when creating the descriptor with
+    -- 'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_BIT_EXT'
+    -- set.
+    combinedImageSamplerDensityMapDescriptorSize :: Word64 }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT)
+#endif
+deriving instance Show PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT
+
+instance ToCStruct PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr CSize)) (CSize (combinedImageSamplerDensityMapDescriptorSize))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr CSize)) (CSize (zero))
+    f
+
+instance FromCStruct PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT where
+  peekCStruct p = do
+    combinedImageSamplerDensityMapDescriptorSize <- peek @CSize ((p `plusPtr` 16 :: Ptr CSize))
+    pure $ PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT
+             (coerce @CSize @Word64 combinedImageSamplerDensityMapDescriptorSize)
+
+instance Storable PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT where
+  zero = PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT
+           zero
+
+
+-- | VkDescriptorAddressInfoEXT - Structure specifying descriptor buffer
+-- address info
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkDescriptorAddressInfoEXT-address-08043# If the
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     feature is not enabled, @address@ /must/ not be zero
+--
+-- -   #VUID-VkDescriptorAddressInfoEXT-None-08044# If @address@ is not
+--     zero, @address@ /must/ be a valid device address at an offset within
+--     a 'Vulkan.Core10.Handles.Buffer'
+--
+-- -   #VUID-VkDescriptorAddressInfoEXT-range-08045# @range@ /must/ be less
+--     than or equal to the size of the buffer containing @address@ minus
+--     the offset of @address@ from the base address of the buffer
+--
+-- -   #VUID-VkDescriptorAddressInfoEXT-range-08046# @range@ must not be
+--     'Vulkan.Core10.APIConstants.WHOLE_SIZE'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDescriptorAddressInfoEXT-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT'
+--
+-- -   #VUID-VkDescriptorAddressInfoEXT-pNext-pNext# @pNext@ /must/ be
+--     @NULL@
+--
+-- -   #VUID-VkDescriptorAddressInfoEXT-format-parameter# @format@ /must/
+--     be a valid 'Vulkan.Core10.Enums.Format.Format' value
+--
+-- If the
+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
+-- feature is enabled, @address@ /can/ be zero. Loads from a null
+-- descriptor return zero values and stores and atomics to a null
+-- descriptor are discarded.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- 'DescriptorDataEXT', 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.Format.Format',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data DescriptorAddressInfoEXT = DescriptorAddressInfoEXT
+  { -- | @address@ is either @0@ or a device address at an offset in a buffer,
+    -- where the base address can be queried from
+    -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'.
+    address :: DeviceAddress
+  , -- | @range@ is the size in bytes of the buffer or buffer view used by the
+    -- descriptor.
+    range :: DeviceSize
+  , -- | @format@ is the format of the data elements in the buffer view and is
+    -- ignored for buffers.
+    format :: Format
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DescriptorAddressInfoEXT)
+#endif
+deriving instance Show DescriptorAddressInfoEXT
+
+instance ToCStruct DescriptorAddressInfoEXT where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DescriptorAddressInfoEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DeviceAddress)) (address)
+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (range)
+    poke ((p `plusPtr` 32 :: Ptr Format)) (format)
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DeviceAddress)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr Format)) (zero)
+    f
+
+instance FromCStruct DescriptorAddressInfoEXT where
+  peekCStruct p = do
+    address <- peek @DeviceAddress ((p `plusPtr` 16 :: Ptr DeviceAddress))
+    range <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))
+    format <- peek @Format ((p `plusPtr` 32 :: Ptr Format))
+    pure $ DescriptorAddressInfoEXT
+             address range format
+
+instance Storable DescriptorAddressInfoEXT where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DescriptorAddressInfoEXT where
+  zero = DescriptorAddressInfoEXT
+           zero
+           zero
+           zero
+
+
+-- | VkDescriptorBufferBindingInfoEXT - Structure specifying descriptor
+-- buffer binding information
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkDescriptorBufferBindingInfoEXT-bufferlessPushDescriptors-08056#
+--     If
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-bufferlessPushDescriptors ::bufferlessPushDescriptors>
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', and @usage@ contains
+--     VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT, then the
+--     @pNext@ chain /must/ include a
+--     'DescriptorBufferBindingPushDescriptorBufferHandleEXT' structure
+--
+-- -   #VUID-VkDescriptorBufferBindingInfoEXT-address-08057# @address@
+--     /must/ be aligned to
+--     'PhysicalDeviceDescriptorBufferPropertiesEXT'::@descriptorBufferOffsetAlignment@
+--
+-- -   #VUID-VkDescriptorBufferBindingInfoEXT-usage-08122# If @usage@
+--     includes
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT',
+--     @address@ /must/ be an address within a valid buffer that was
+--     created with
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-VkDescriptorBufferBindingInfoEXT-usage-08123# If @usage@
+--     includes
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     @address@ /must/ be an address within a valid buffer that was
+--     created with
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-VkDescriptorBufferBindingInfoEXT-usage-08124# If @usage@
+--     includes
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT',
+--     @address@ /must/ be an address within a valid buffer that was
+--     created with
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDescriptorBufferBindingInfoEXT-sType-sType# @sType@ /must/
+--     be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT'
+--
+-- -   #VUID-VkDescriptorBufferBindingInfoEXT-pNext-pNext# @pNext@ /must/
+--     be @NULL@ or a pointer to a valid instance of
+--     'DescriptorBufferBindingPushDescriptorBufferHandleEXT'
+--
+-- -   #VUID-VkDescriptorBufferBindingInfoEXT-sType-unique# The @sType@
+--     value of each struct in the @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkDescriptorBufferBindingInfoEXT-usage-parameter# @usage@
+--     /must/ be a valid combination of
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits' values
+--
+-- -   #VUID-VkDescriptorBufferBindingInfoEXT-usage-requiredbitmask#
+--     @usage@ /must/ not be @0@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlags',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceAddress',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdBindDescriptorBuffersEXT'
+data DescriptorBufferBindingInfoEXT (es :: [Type]) = DescriptorBufferBindingInfoEXT
+  { -- No documentation found for Nested "VkDescriptorBufferBindingInfoEXT" "pNext"
+    next :: Chain es
+  , -- No documentation found for Nested "VkDescriptorBufferBindingInfoEXT" "address"
+    address :: DeviceAddress
+  , -- No documentation found for Nested "VkDescriptorBufferBindingInfoEXT" "usage"
+    usage :: BufferUsageFlags
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DescriptorBufferBindingInfoEXT (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (DescriptorBufferBindingInfoEXT es)
+
+instance Extensible DescriptorBufferBindingInfoEXT where
+  extensibleTypeName = "DescriptorBufferBindingInfoEXT"
+  setNext DescriptorBufferBindingInfoEXT{..} next' = DescriptorBufferBindingInfoEXT{next = next', ..}
+  getNext DescriptorBufferBindingInfoEXT{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends DescriptorBufferBindingInfoEXT e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @DescriptorBufferBindingPushDescriptorBufferHandleEXT = Just f
+    | otherwise = Nothing
+
+instance ( Extendss DescriptorBufferBindingInfoEXT es
+         , PokeChain es ) => ToCStruct (DescriptorBufferBindingInfoEXT es) where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DescriptorBufferBindingInfoEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr DeviceAddress)) (address)
+    lift $ poke ((p `plusPtr` 24 :: Ptr BufferUsageFlags)) (usage)
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 16 :: Ptr DeviceAddress)) (zero)
+    lift $ poke ((p `plusPtr` 24 :: Ptr BufferUsageFlags)) (zero)
+    lift $ f
+
+instance ( Extendss DescriptorBufferBindingInfoEXT es
+         , PeekChain es ) => FromCStruct (DescriptorBufferBindingInfoEXT es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    address <- peek @DeviceAddress ((p `plusPtr` 16 :: Ptr DeviceAddress))
+    usage <- peek @BufferUsageFlags ((p `plusPtr` 24 :: Ptr BufferUsageFlags))
+    pure $ DescriptorBufferBindingInfoEXT
+             next address usage
+
+instance es ~ '[] => Zero (DescriptorBufferBindingInfoEXT es) where
+  zero = DescriptorBufferBindingInfoEXT
+           ()
+           zero
+           zero
+
+
+-- | VkDescriptorBufferBindingPushDescriptorBufferHandleEXT - Structure
+-- specifying push descriptor buffer binding information
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkDescriptorBufferBindingPushDescriptorBufferHandleEXT-bufferlessPushDescriptors-08059#
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-bufferlessPushDescriptors ::bufferlessPushDescriptors>
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- 'Vulkan.Core10.Handles.Buffer',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data DescriptorBufferBindingPushDescriptorBufferHandleEXT = DescriptorBufferBindingPushDescriptorBufferHandleEXT
+  { -- | #VUID-VkDescriptorBufferBindingPushDescriptorBufferHandleEXT-buffer-parameter#
+    -- @buffer@ /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
+    buffer :: Buffer }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DescriptorBufferBindingPushDescriptorBufferHandleEXT)
+#endif
+deriving instance Show DescriptorBufferBindingPushDescriptorBufferHandleEXT
+
+instance ToCStruct DescriptorBufferBindingPushDescriptorBufferHandleEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DescriptorBufferBindingPushDescriptorBufferHandleEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Buffer)) (buffer)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Buffer)) (zero)
+    f
+
+instance FromCStruct DescriptorBufferBindingPushDescriptorBufferHandleEXT where
+  peekCStruct p = do
+    buffer <- peek @Buffer ((p `plusPtr` 16 :: Ptr Buffer))
+    pure $ DescriptorBufferBindingPushDescriptorBufferHandleEXT
+             buffer
+
+instance Storable DescriptorBufferBindingPushDescriptorBufferHandleEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DescriptorBufferBindingPushDescriptorBufferHandleEXT where
+  zero = DescriptorBufferBindingPushDescriptorBufferHandleEXT
+           zero
+
+
+-- | VkDescriptorGetInfoEXT - Structure specifying parameters of descriptor
+-- to get
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-type-08018# @type@ /must/ not be
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'
+--     or
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-type-08019# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
+--     the @pCombinedImageSampler->sampler@ member of @data@ /must/ be a
+--     'Vulkan.Core10.Handles.Sampler' created on @device@
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-type-08020# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
+--     the @pCombinedImageSampler->imageView@ member of @data@ /must/ be a
+--     'Vulkan.Core10.Handles.ImageView' created on @device@, or
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-type-08021# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT',
+--     the @pInputAttachmentImage->imageView@ member of @data@ /must/ be a
+--     'Vulkan.Core10.Handles.ImageView' created on @device@
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-type-08022# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     and if @pSampledImage@ is not @NULL@, the @pSampledImage->imageView@
+--     member of @data@ /must/ be a 'Vulkan.Core10.Handles.ImageView'
+--     created on @device@, or 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-type-08023# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     and if @pStorageImage@ is not @NULL@, the @pStorageImage->imageView@
+--     member of @data@ /must/ be a 'Vulkan.Core10.Handles.ImageView'
+--     created on @device@, or 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-type-08024# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER',
+--     @pUniformTexelBuffer@ is not @NULL@ and
+--     @pUniformTexelBuffer->address@ is not zero,
+--     @pUniformTexelBuffer->address@ must be an address within a
+--     'Vulkan.Core10.Handles.Buffer' created on @device@
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-type-08025# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER',
+--     @pStorageTexelBuffer@ is not @NULL@ and
+--     @pStorageTexelBuffer->address@ is not zero,
+--     @pStorageTexelBuffer->address@ must be an address within a
+--     'Vulkan.Core10.Handles.Buffer' created on @device@
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-type-08026# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER',
+--     @pUniformBuffer@ is not @NULL@ and @pUniformBuffer->address@ is not
+--     zero, @pUniformBuffer->address@ must be an address within a
+--     'Vulkan.Core10.Handles.Buffer' created on @device@
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-type-08027# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER',
+--     @pStorageBuffer@ is not @NULL@ and @pStorageBuffer->address@ is not
+--     zero, @pStorageBuffer->address@ must be an address within a
+--     'Vulkan.Core10.Handles.Buffer' created on @device@
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-type-08028# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR'
+--     and @accelerationStructure@ is not @0@, @accelerationStructure@
+--     /must/ contain the address of a
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' created on
+--     @device@
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-type-08029# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV'
+--     and @accelerationStructure@ is not @0@, @accelerationStructure@
+--     /must/ contain the handle of a
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' created on
+--     @device@, returned by
+--     'Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT'
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-type-parameter# @type@ /must/ be a
+--     valid 'Vulkan.Core10.Enums.DescriptorType.DescriptorType' value
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-pSampler-parameter# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER', the
+--     @pSampler@ member of @data@ /must/ be a valid pointer to a valid
+--     'Vulkan.Core10.Handles.Sampler' handle
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-pCombinedImageSampler-parameter# If
+--     @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',
+--     the @pCombinedImageSampler@ member of @data@ /must/ be a valid
+--     pointer to a valid 'Vulkan.Core10.DescriptorSet.DescriptorImageInfo'
+--     structure
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-pInputAttachmentImage-parameter# If
+--     @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT',
+--     the @pInputAttachmentImage@ member of @data@ /must/ be a valid
+--     pointer to a valid 'Vulkan.Core10.DescriptorSet.DescriptorImageInfo'
+--     structure
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-pSampledImage-parameter# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',
+--     and if @pSampledImage@ is not @NULL@, the @pSampledImage@ member of
+--     @data@ /must/ be a valid pointer to a valid
+--     'Vulkan.Core10.DescriptorSet.DescriptorImageInfo' structure
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-pStorageImage-parameter# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',
+--     and if @pStorageImage@ is not @NULL@, the @pStorageImage@ member of
+--     @data@ /must/ be a valid pointer to a valid
+--     'Vulkan.Core10.DescriptorSet.DescriptorImageInfo' structure
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-pUniformTexelBuffer-parameter# If
+--     @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER',
+--     and if @pUniformTexelBuffer@ is not @NULL@, the
+--     @pUniformTexelBuffer@ member of @data@ /must/ be a valid pointer to
+--     a valid 'DescriptorAddressInfoEXT' structure
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-pStorageTexelBuffer-parameter# If
+--     @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER',
+--     and if @pStorageTexelBuffer@ is not @NULL@, the
+--     @pStorageTexelBuffer@ member of @data@ /must/ be a valid pointer to
+--     a valid 'DescriptorAddressInfoEXT' structure
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-pUniformBuffer-parameter# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER',
+--     and if @pUniformBuffer@ is not @NULL@, the @pUniformBuffer@ member
+--     of @data@ /must/ be a valid pointer to a valid
+--     'DescriptorAddressInfoEXT' structure
+--
+-- -   #VUID-VkDescriptorGetInfoEXT-pStorageBuffer-parameter# If @type@ is
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER',
+--     and if @pStorageBuffer@ is not @NULL@, the @pStorageBuffer@ member
+--     of @data@ /must/ be a valid pointer to a valid
+--     'DescriptorAddressInfoEXT' structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- 'DescriptorDataEXT',
+-- 'Vulkan.Core10.Enums.DescriptorType.DescriptorType',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType', 'getDescriptorEXT'
+data DescriptorGetInfoEXT = DescriptorGetInfoEXT
+  { -- | @type@ is the type of descriptor to get.
+    type' :: DescriptorType
+  , -- | @data@ is a structure containing the information needed to get the
+    -- descriptor.
+    data' :: DescriptorDataEXT
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DescriptorGetInfoEXT)
+#endif
+deriving instance Show DescriptorGetInfoEXT
+
+instance ToCStruct DescriptorGetInfoEXT where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DescriptorGetInfoEXT{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr DescriptorType)) (type')
+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DescriptorDataEXT)) (data') . ($ ())
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr DescriptorType)) (zero)
+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DescriptorDataEXT)) (zero) . ($ ())
+    lift $ f
+
+instance FromCStruct DescriptorGetInfoEXT where
+  peekCStruct p = do
+    type' <- peek @DescriptorType ((p `plusPtr` 16 :: Ptr DescriptorType))
+    data' <- peekDescriptorDataEXT type' ((p `plusPtr` 24 :: Ptr DescriptorDataEXT))
+    pure $ DescriptorGetInfoEXT
+             type' data'
+
+instance Zero DescriptorGetInfoEXT where
+  zero = DescriptorGetInfoEXT
+           zero
+           zero
+
+
+-- | VkBufferCaptureDescriptorDataInfoEXT - Structure specifying a buffer for
+-- descriptor capture
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- 'Vulkan.Core10.Handles.Buffer',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getBufferOpaqueCaptureDescriptorDataEXT'
+data BufferCaptureDescriptorDataInfoEXT = BufferCaptureDescriptorDataInfoEXT
+  { -- | @buffer@ is the 'Vulkan.Core10.Handles.Buffer' handle of the buffer to
+    -- get opaque capture data for.
+    --
+    -- #VUID-VkBufferCaptureDescriptorDataInfoEXT-buffer-08075# @buffer@ /must/
+    -- have been created with
+    -- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+    -- set in 'Vulkan.Core10.Buffer.BufferCreateInfo'::@flags@
+    --
+    -- #VUID-VkBufferCaptureDescriptorDataInfoEXT-buffer-parameter# @buffer@
+    -- /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
+    buffer :: Buffer }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (BufferCaptureDescriptorDataInfoEXT)
+#endif
+deriving instance Show BufferCaptureDescriptorDataInfoEXT
+
+instance ToCStruct BufferCaptureDescriptorDataInfoEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p BufferCaptureDescriptorDataInfoEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Buffer)) (buffer)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Buffer)) (zero)
+    f
+
+instance FromCStruct BufferCaptureDescriptorDataInfoEXT where
+  peekCStruct p = do
+    buffer <- peek @Buffer ((p `plusPtr` 16 :: Ptr Buffer))
+    pure $ BufferCaptureDescriptorDataInfoEXT
+             buffer
+
+instance Storable BufferCaptureDescriptorDataInfoEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero BufferCaptureDescriptorDataInfoEXT where
+  zero = BufferCaptureDescriptorDataInfoEXT
+           zero
+
+
+-- | VkImageCaptureDescriptorDataInfoEXT - Structure specifying an image for
+-- descriptor capture
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- 'Vulkan.Core10.Handles.Image',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getImageOpaqueCaptureDescriptorDataEXT'
+data ImageCaptureDescriptorDataInfoEXT = ImageCaptureDescriptorDataInfoEXT
+  { -- | @image@ is the 'Vulkan.Core10.Handles.Image' handle of the image to get
+    -- opaque capture data for.
+    --
+    -- #VUID-VkImageCaptureDescriptorDataInfoEXT-image-08079# @image@ /must/
+    -- have been created with
+    -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+    -- set in 'Vulkan.Core10.Image.ImageCreateInfo'::@flags@
+    --
+    -- #VUID-VkImageCaptureDescriptorDataInfoEXT-image-parameter# @image@
+    -- /must/ be a valid 'Vulkan.Core10.Handles.Image' handle
+    image :: Image }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ImageCaptureDescriptorDataInfoEXT)
+#endif
+deriving instance Show ImageCaptureDescriptorDataInfoEXT
+
+instance ToCStruct ImageCaptureDescriptorDataInfoEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ImageCaptureDescriptorDataInfoEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Image)) (image)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Image)) (zero)
+    f
+
+instance FromCStruct ImageCaptureDescriptorDataInfoEXT where
+  peekCStruct p = do
+    image <- peek @Image ((p `plusPtr` 16 :: Ptr Image))
+    pure $ ImageCaptureDescriptorDataInfoEXT
+             image
+
+instance Storable ImageCaptureDescriptorDataInfoEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ImageCaptureDescriptorDataInfoEXT where
+  zero = ImageCaptureDescriptorDataInfoEXT
+           zero
+
+
+-- | VkImageViewCaptureDescriptorDataInfoEXT - Structure specifying an image
+-- view for descriptor capture
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- 'Vulkan.Core10.Handles.ImageView',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getImageViewOpaqueCaptureDescriptorDataEXT'
+data ImageViewCaptureDescriptorDataInfoEXT = ImageViewCaptureDescriptorDataInfoEXT
+  { -- | @imageView@ is the 'Vulkan.Core10.Handles.ImageView' handle of the image
+    -- view to get opaque capture data for.
+    --
+    -- #VUID-VkImageViewCaptureDescriptorDataInfoEXT-imageView-08083#
+    -- @imageView@ /must/ have been created with
+    -- 'Vulkan.Core10.Enums.ImageViewCreateFlagBits.IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+    -- set in 'Vulkan.Core10.ImageView.ImageViewCreateInfo'::@flags@
+    --
+    -- #VUID-VkImageViewCaptureDescriptorDataInfoEXT-imageView-parameter#
+    -- @imageView@ /must/ be a valid 'Vulkan.Core10.Handles.ImageView' handle
+    imageView :: ImageView }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ImageViewCaptureDescriptorDataInfoEXT)
+#endif
+deriving instance Show ImageViewCaptureDescriptorDataInfoEXT
+
+instance ToCStruct ImageViewCaptureDescriptorDataInfoEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ImageViewCaptureDescriptorDataInfoEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr ImageView)) (imageView)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr ImageView)) (zero)
+    f
+
+instance FromCStruct ImageViewCaptureDescriptorDataInfoEXT where
+  peekCStruct p = do
+    imageView <- peek @ImageView ((p `plusPtr` 16 :: Ptr ImageView))
+    pure $ ImageViewCaptureDescriptorDataInfoEXT
+             imageView
+
+instance Storable ImageViewCaptureDescriptorDataInfoEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ImageViewCaptureDescriptorDataInfoEXT where
+  zero = ImageViewCaptureDescriptorDataInfoEXT
+           zero
+
+
+-- | VkSamplerCaptureDescriptorDataInfoEXT - Structure specifying a sampler
+-- for descriptor capture
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- 'Vulkan.Core10.Handles.Sampler',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getSamplerOpaqueCaptureDescriptorDataEXT'
+data SamplerCaptureDescriptorDataInfoEXT = SamplerCaptureDescriptorDataInfoEXT
+  { -- | @sampler@ is the 'Vulkan.Core10.Handles.Sampler' handle of the sampler
+    -- to get opaque capture data for.
+    --
+    -- #VUID-VkSamplerCaptureDescriptorDataInfoEXT-sampler-08087# @sampler@
+    -- /must/ have been created with
+    -- 'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+    -- set in 'Vulkan.Core10.Sampler.SamplerCreateInfo'::@flags@
+    --
+    -- #VUID-VkSamplerCaptureDescriptorDataInfoEXT-sampler-parameter# @sampler@
+    -- /must/ be a valid 'Vulkan.Core10.Handles.Sampler' handle
+    sampler :: Sampler }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (SamplerCaptureDescriptorDataInfoEXT)
+#endif
+deriving instance Show SamplerCaptureDescriptorDataInfoEXT
+
+instance ToCStruct SamplerCaptureDescriptorDataInfoEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p SamplerCaptureDescriptorDataInfoEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Sampler)) (sampler)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Sampler)) (zero)
+    f
+
+instance FromCStruct SamplerCaptureDescriptorDataInfoEXT where
+  peekCStruct p = do
+    sampler <- peek @Sampler ((p `plusPtr` 16 :: Ptr Sampler))
+    pure $ SamplerCaptureDescriptorDataInfoEXT
+             sampler
+
+instance Storable SamplerCaptureDescriptorDataInfoEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero SamplerCaptureDescriptorDataInfoEXT where
+  zero = SamplerCaptureDescriptorDataInfoEXT
+           zero
+
+
+-- | VkAccelerationStructureCaptureDescriptorDataInfoEXT - Structure
+-- specifying an acceleration structure for descriptor capture
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkAccelerationStructureCaptureDescriptorDataInfoEXT-accelerationStructure-08091#
+--     If @accelerationStructure@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' then
+--     @accelerationStructure@ /must/ have been created with
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--     set in
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCreateInfoKHR'::@createFlags@
+--
+-- -   #VUID-VkAccelerationStructureCaptureDescriptorDataInfoEXT-accelerationStructureNV-08092#
+--     If @accelerationStructureNV@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' then
+--     @accelerationStructureNV@ /must/ have been created with
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--     set in
+--     'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV'::info::@flags@
+--
+-- -   #VUID-VkAccelerationStructureCaptureDescriptorDataInfoEXT-accelerationStructure-08093#
+--     If @accelerationStructure@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' then
+--     @accelerationStructureNV@ /must/ be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-VkAccelerationStructureCaptureDescriptorDataInfoEXT-accelerationStructureNV-08094#
+--     If @accelerationStructureNV@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' then
+--     @accelerationStructure@ /must/ be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkAccelerationStructureCaptureDescriptorDataInfoEXT-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT'
+--
+-- -   #VUID-VkAccelerationStructureCaptureDescriptorDataInfoEXT-pNext-pNext#
+--     @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkAccelerationStructureCaptureDescriptorDataInfoEXT-accelerationStructure-parameter#
+--     If @accelerationStructure@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @accelerationStructure@
+--     /must/ be a valid
+--     'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle
+--
+-- -   #VUID-VkAccelerationStructureCaptureDescriptorDataInfoEXT-accelerationStructureNV-parameter#
+--     If @accelerationStructureNV@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @accelerationStructureNV@
+--     /must/ be a valid
+--     'Vulkan.Extensions.Handles.AccelerationStructureNV' handle
+--
+-- -   #VUID-VkAccelerationStructureCaptureDescriptorDataInfoEXT-commonparent#
+--     Both of @accelerationStructure@, and @accelerationStructureNV@ that
+--     are valid handles of non-ignored parameters /must/ have been
+--     created, allocated, or retrieved from the same
+--     'Vulkan.Core10.Handles.Device'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>,
+-- 'Vulkan.Extensions.Handles.AccelerationStructureKHR',
+-- 'Vulkan.Extensions.Handles.AccelerationStructureNV',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getAccelerationStructureOpaqueCaptureDescriptorDataEXT'
+data AccelerationStructureCaptureDescriptorDataInfoEXT = AccelerationStructureCaptureDescriptorDataInfoEXT
+  { -- | @accelerationStructure@ is the
+    -- 'Vulkan.Extensions.Handles.AccelerationStructureKHR' handle of the
+    -- acceleration structure to get opaque capture data for.
+    accelerationStructure :: AccelerationStructureKHR
+  , -- | @accelerationStructureNV@ is the
+    -- 'Vulkan.Extensions.Handles.AccelerationStructureNV' handle of the
+    -- acceleration structure to get opaque capture data for.
+    accelerationStructureNV :: AccelerationStructureNV
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (AccelerationStructureCaptureDescriptorDataInfoEXT)
+#endif
+deriving instance Show AccelerationStructureCaptureDescriptorDataInfoEXT
+
+instance ToCStruct AccelerationStructureCaptureDescriptorDataInfoEXT where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p AccelerationStructureCaptureDescriptorDataInfoEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (accelerationStructure)
+    poke ((p `plusPtr` 24 :: Ptr AccelerationStructureNV)) (accelerationStructureNV)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct AccelerationStructureCaptureDescriptorDataInfoEXT where
+  peekCStruct p = do
+    accelerationStructure <- peek @AccelerationStructureKHR ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR))
+    accelerationStructureNV <- peek @AccelerationStructureNV ((p `plusPtr` 24 :: Ptr AccelerationStructureNV))
+    pure $ AccelerationStructureCaptureDescriptorDataInfoEXT
+             accelerationStructure accelerationStructureNV
+
+instance Storable AccelerationStructureCaptureDescriptorDataInfoEXT where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero AccelerationStructureCaptureDescriptorDataInfoEXT where
+  zero = AccelerationStructureCaptureDescriptorDataInfoEXT
+           zero
+           zero
+
+
+-- | VkOpaqueCaptureDescriptorDataCreateInfoEXT - Structure specifying opaque
+-- capture descriptor data
+--
+-- = Description
+--
+-- During replay, opaque descriptor capture data /can/ be specified by
+-- adding a 'OpaqueCaptureDescriptorDataCreateInfoEXT' structure to the
+-- relevant @pNext@ chain of a 'Vulkan.Core10.Buffer.BufferCreateInfo',
+-- 'Vulkan.Core10.Image.ImageCreateInfo',
+-- 'Vulkan.Core10.ImageView.ImageViewCreateInfo',
+-- 'Vulkan.Core10.Sampler.SamplerCreateInfo',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV'
+-- or
+-- 'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCreateInfoKHR'
+-- structure.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_buffer VK_EXT_descriptor_buffer>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data OpaqueCaptureDescriptorDataCreateInfoEXT = OpaqueCaptureDescriptorDataCreateInfoEXT
+  { -- | @opaqueCaptureDescriptorData@ is a pointer to a user-allocated buffer
+    -- containing opaque capture data retrieved using
+    -- 'getBufferOpaqueCaptureDescriptorDataEXT',
+    -- 'getImageOpaqueCaptureDescriptorDataEXT',
+    -- 'getImageViewOpaqueCaptureDescriptorDataEXT',
+    -- 'getSamplerOpaqueCaptureDescriptorDataEXT', or
+    -- 'getAccelerationStructureOpaqueCaptureDescriptorDataEXT'.
+    --
+    -- #VUID-VkOpaqueCaptureDescriptorDataCreateInfoEXT-opaqueCaptureDescriptorData-parameter#
+    -- @opaqueCaptureDescriptorData@ /must/ be a pointer value
+    opaqueCaptureDescriptorData :: Ptr () }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (OpaqueCaptureDescriptorDataCreateInfoEXT)
+#endif
+deriving instance Show OpaqueCaptureDescriptorDataCreateInfoEXT
+
+instance ToCStruct OpaqueCaptureDescriptorDataCreateInfoEXT where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p OpaqueCaptureDescriptorDataCreateInfoEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr (Ptr ()))) (opaqueCaptureDescriptorData)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr (Ptr ()))) (zero)
+    f
+
+instance FromCStruct OpaqueCaptureDescriptorDataCreateInfoEXT where
+  peekCStruct p = do
+    opaqueCaptureDescriptorData <- peek @(Ptr ()) ((p `plusPtr` 16 :: Ptr (Ptr ())))
+    pure $ OpaqueCaptureDescriptorDataCreateInfoEXT
+             opaqueCaptureDescriptorData
+
+instance Storable OpaqueCaptureDescriptorDataCreateInfoEXT where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero OpaqueCaptureDescriptorDataCreateInfoEXT where
+  zero = OpaqueCaptureDescriptorDataCreateInfoEXT
+           zero
+
+
+data DescriptorDataEXT
+  = ASampler Sampler
+  | ACombinedImageSampler DescriptorImageInfo
+  | AnInputAttachmentImage DescriptorImageInfo
+  | ASampledImage (Maybe DescriptorImageInfo)
+  | AStorageImage (Maybe DescriptorImageInfo)
+  | AnUniformTexelBuffer (Maybe DescriptorAddressInfoEXT)
+  | AStorageTexelBuffer (Maybe DescriptorAddressInfoEXT)
+  | AnUniformBuffer (Maybe DescriptorAddressInfoEXT)
+  | AStorageBuffer (Maybe DescriptorAddressInfoEXT)
+  | AnAccelerationStructure DeviceAddress
+  deriving (Show)
+
+instance ToCStruct DescriptorDataEXT where
+  withCStruct x f = allocaBytes 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct :: Ptr DescriptorDataEXT -> DescriptorDataEXT -> IO a -> IO a
+  pokeCStruct p = (. const) . runContT .  \case
+    ASampler v -> do
+      pSampler <- ContT $ with (v)
+      lift $ poke (castPtr @_ @(Ptr Sampler) p) pSampler
+    ACombinedImageSampler v -> do
+      pCombinedImageSampler <- ContT $ withCStruct (v)
+      lift $ poke (castPtr @_ @(Ptr DescriptorImageInfo) p) pCombinedImageSampler
+    AnInputAttachmentImage v -> do
+      pInputAttachmentImage <- ContT $ withCStruct (v)
+      lift $ poke (castPtr @_ @(Ptr DescriptorImageInfo) p) pInputAttachmentImage
+    ASampledImage v -> do
+      pSampledImage <- case (v) of
+        Nothing -> pure nullPtr
+        Just j -> ContT $ withCStruct (j)
+      lift $ poke (castPtr @_ @(Ptr DescriptorImageInfo) p) pSampledImage
+    AStorageImage v -> do
+      pStorageImage <- case (v) of
+        Nothing -> pure nullPtr
+        Just j -> ContT $ withCStruct (j)
+      lift $ poke (castPtr @_ @(Ptr DescriptorImageInfo) p) pStorageImage
+    AnUniformTexelBuffer v -> do
+      pUniformTexelBuffer <- case (v) of
+        Nothing -> pure nullPtr
+        Just j -> ContT $ withCStruct (j)
+      lift $ poke (castPtr @_ @(Ptr DescriptorAddressInfoEXT) p) pUniformTexelBuffer
+    AStorageTexelBuffer v -> do
+      pStorageTexelBuffer <- case (v) of
+        Nothing -> pure nullPtr
+        Just j -> ContT $ withCStruct (j)
+      lift $ poke (castPtr @_ @(Ptr DescriptorAddressInfoEXT) p) pStorageTexelBuffer
+    AnUniformBuffer v -> do
+      pUniformBuffer <- case (v) of
+        Nothing -> pure nullPtr
+        Just j -> ContT $ withCStruct (j)
+      lift $ poke (castPtr @_ @(Ptr DescriptorAddressInfoEXT) p) pUniformBuffer
+    AStorageBuffer v -> do
+      pStorageBuffer <- case (v) of
+        Nothing -> pure nullPtr
+        Just j -> ContT $ withCStruct (j)
+      lift $ poke (castPtr @_ @(Ptr DescriptorAddressInfoEXT) p) pStorageBuffer
+    AnAccelerationStructure v -> lift $ poke (castPtr @_ @DeviceAddress p) (v)
+  pokeZeroCStruct :: Ptr DescriptorDataEXT -> IO b -> IO b
+  pokeZeroCStruct _ f = f
+  cStructSize = 8
+  cStructAlignment = 8
+
+instance Zero DescriptorDataEXT where
+  zero = ASampler zero
+
+peekDescriptorDataEXT :: DescriptorType -> Ptr DescriptorDataEXT -> IO DescriptorDataEXT
+peekDescriptorDataEXT tag p = case tag of
+  DESCRIPTOR_TYPE_SAMPLER -> ASampler <$> (peek @Sampler =<< peek (castPtr @_ @(Ptr Sampler) p))
+  DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER -> ACombinedImageSampler <$> (peekCStruct @DescriptorImageInfo =<< peek (castPtr @_ @(Ptr DescriptorImageInfo) p))
+  DESCRIPTOR_TYPE_INPUT_ATTACHMENT -> AnInputAttachmentImage <$> (peekCStruct @DescriptorImageInfo =<< peek (castPtr @_ @(Ptr DescriptorImageInfo) p))
+  DESCRIPTOR_TYPE_SAMPLED_IMAGE -> ASampledImage <$> (do
+    pSampledImage <- peek @(Ptr DescriptorImageInfo) (castPtr @_ @(Ptr DescriptorImageInfo) p)
+    maybePeek (\j -> peekCStruct @DescriptorImageInfo (j)) pSampledImage)
+  DESCRIPTOR_TYPE_STORAGE_IMAGE -> AStorageImage <$> (do
+    pStorageImage <- peek @(Ptr DescriptorImageInfo) (castPtr @_ @(Ptr DescriptorImageInfo) p)
+    maybePeek (\j -> peekCStruct @DescriptorImageInfo (j)) pStorageImage)
+  DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER -> AnUniformTexelBuffer <$> (do
+    pUniformTexelBuffer <- peek @(Ptr DescriptorAddressInfoEXT) (castPtr @_ @(Ptr DescriptorAddressInfoEXT) p)
+    maybePeek (\j -> peekCStruct @DescriptorAddressInfoEXT (j)) pUniformTexelBuffer)
+  DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER -> AStorageTexelBuffer <$> (do
+    pStorageTexelBuffer <- peek @(Ptr DescriptorAddressInfoEXT) (castPtr @_ @(Ptr DescriptorAddressInfoEXT) p)
+    maybePeek (\j -> peekCStruct @DescriptorAddressInfoEXT (j)) pStorageTexelBuffer)
+  DESCRIPTOR_TYPE_UNIFORM_BUFFER -> AnUniformBuffer <$> (do
+    pUniformBuffer <- peek @(Ptr DescriptorAddressInfoEXT) (castPtr @_ @(Ptr DescriptorAddressInfoEXT) p)
+    maybePeek (\j -> peekCStruct @DescriptorAddressInfoEXT (j)) pUniformBuffer)
+  DESCRIPTOR_TYPE_STORAGE_BUFFER -> AStorageBuffer <$> (do
+    pStorageBuffer <- peek @(Ptr DescriptorAddressInfoEXT) (castPtr @_ @(Ptr DescriptorAddressInfoEXT) p)
+    maybePeek (\j -> peekCStruct @DescriptorAddressInfoEXT (j)) pStorageBuffer)
+  DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR -> AnAccelerationStructure <$> (peek @DeviceAddress (castPtr @_ @DeviceAddress p))
+
+
+type EXT_DESCRIPTOR_BUFFER_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_EXT_DESCRIPTOR_BUFFER_SPEC_VERSION"
+pattern EXT_DESCRIPTOR_BUFFER_SPEC_VERSION :: forall a . Integral a => a
+pattern EXT_DESCRIPTOR_BUFFER_SPEC_VERSION = 1
+
+
+type EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME = "VK_EXT_descriptor_buffer"
+
+-- No documentation found for TopLevel "VK_EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME"
+pattern EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME = "VK_EXT_descriptor_buffer"
+
diff --git a/src/Vulkan/Extensions/VK_EXT_descriptor_buffer.hs-boot b/src/Vulkan/Extensions/VK_EXT_descriptor_buffer.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_EXT_descriptor_buffer.hs-boot
@@ -0,0 +1,430 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_EXT_descriptor_buffer - device extension
+--
+-- == VK_EXT_descriptor_buffer
+--
+-- [__Name String__]
+--     @VK_EXT_descriptor_buffer@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     317
+--
+-- [__Revision__]
+--     1
+--
+-- [__Extension and Version Dependencies__]
+--
+--     -   Requires support for Vulkan 1.0
+--
+--     -   Requires @VK_KHR_get_physical_device_properties2@ to be enabled
+--         for any device-level functionality
+--
+--     -   Requires @VK_KHR_buffer_device_address@ to be enabled for any
+--         device-level functionality
+--
+--     -   Requires @VK_KHR_synchronization2@ to be enabled for any
+--         device-level functionality
+--
+--     -   Requires @VK_EXT_descriptor_indexing@ to be enabled for any
+--         device-level functionality
+--
+-- [__Contact__]
+--
+--     -   Tobias Hector
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_descriptor_buffer] @tobski%0A*Here describe the issue or question you have about the VK_EXT_descriptor_buffer extension* >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_descriptor_buffer.adoc VK_EXT_descriptor_buffer>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2021-06-07
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Stu Smith, AMD
+--
+--     -   Maciej Jesionowski, AMD
+--
+--     -   Boris Zanin, AMD
+--
+--     -   Hans-Kristian Arntzen, Valve
+--
+--     -   Connor Abbott, Valve
+--
+--     -   Baldur Karlsson, Valve
+--
+--     -   Mike Blumenkrantz, Valve
+--
+--     -   Graeme Leese, Broadcom
+--
+--     -   Jan-Harald Fredriksen, Arm
+--
+--     -   Rodrigo Locatti, NVIDIA
+--
+--     -   Jeff Bolz, NVIDIA
+--
+--     -   Piers Daniell, NVIDIA
+--
+--     -   Jeff Leger, QUALCOMM
+--
+--     -   Lionel Landwerlin, Intel
+--
+--     -   Slawomir Grajewski, Intel
+--
+-- == Description
+--
+-- This extension introduces new commands to put shader-accessible
+-- descriptors directly in memory, making the management of descriptor data
+-- more explicit.
+--
+-- == New Commands
+--
+-- -   'cmdBindDescriptorBufferEmbeddedSamplersEXT'
+--
+-- -   'cmdBindDescriptorBuffersEXT'
+--
+-- -   'cmdSetDescriptorBufferOffsetsEXT'
+--
+-- -   'getBufferOpaqueCaptureDescriptorDataEXT'
+--
+-- -   'getDescriptorEXT'
+--
+-- -   'getDescriptorSetLayoutBindingOffsetEXT'
+--
+-- -   'getDescriptorSetLayoutSizeEXT'
+--
+-- -   'getImageOpaqueCaptureDescriptorDataEXT'
+--
+-- -   'getImageViewOpaqueCaptureDescriptorDataEXT'
+--
+-- -   'getSamplerOpaqueCaptureDescriptorDataEXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
+-- is supported:
+--
+-- -   'getAccelerationStructureOpaqueCaptureDescriptorDataEXT'
+--
+-- == New Structures
+--
+-- -   'BufferCaptureDescriptorDataInfoEXT'
+--
+-- -   'DescriptorAddressInfoEXT'
+--
+-- -   'DescriptorBufferBindingInfoEXT'
+--
+-- -   'DescriptorGetInfoEXT'
+--
+-- -   'ImageCaptureDescriptorDataInfoEXT'
+--
+-- -   'ImageViewCaptureDescriptorDataInfoEXT'
+--
+-- -   'SamplerCaptureDescriptorDataInfoEXT'
+--
+-- -   Extending 'Vulkan.Core10.Buffer.BufferCreateInfo',
+--     'Vulkan.Core10.Image.ImageCreateInfo',
+--     'Vulkan.Core10.ImageView.ImageViewCreateInfo',
+--     'Vulkan.Core10.Sampler.SamplerCreateInfo',
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCreateInfoKHR',
+--     'Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV':
+--
+--     -   'OpaqueCaptureDescriptorDataCreateInfoEXT'
+--
+-- -   Extending 'DescriptorBufferBindingInfoEXT':
+--
+--     -   'DescriptorBufferBindingPushDescriptorBufferHandleEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceDescriptorBufferFeaturesEXT'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
+--
+--     -   'PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT'
+--
+--     -   'PhysicalDeviceDescriptorBufferPropertiesEXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
+-- is supported:
+--
+-- -   'AccelerationStructureCaptureDescriptorDataInfoEXT'
+--
+-- == New Unions
+--
+-- -   'DescriptorDataEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME'
+--
+-- -   'EXT_DESCRIPTOR_BUFFER_SPEC_VERSION'
+--
+-- -   Extending
+--     'Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureCreateFlagBitsKHR':
+--
+--     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BufferCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+--     -   'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DescriptorSetLayoutCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+--     -   'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.ImageViewCreateFlagBits.ImageViewCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.ImageViewCreateFlagBits.IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SamplerCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT'
+--
+-- == Version History
+--
+-- -   Revision 1, 2021-06-07 (Stu Smith)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- 'BufferCaptureDescriptorDataInfoEXT', 'DescriptorAddressInfoEXT',
+-- 'DescriptorBufferBindingInfoEXT',
+-- 'DescriptorBufferBindingPushDescriptorBufferHandleEXT',
+-- 'DescriptorDataEXT', 'DescriptorGetInfoEXT',
+-- 'ImageCaptureDescriptorDataInfoEXT',
+-- 'ImageViewCaptureDescriptorDataInfoEXT',
+-- 'OpaqueCaptureDescriptorDataCreateInfoEXT',
+-- 'PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT',
+-- 'PhysicalDeviceDescriptorBufferFeaturesEXT',
+-- 'PhysicalDeviceDescriptorBufferPropertiesEXT',
+-- 'SamplerCaptureDescriptorDataInfoEXT',
+-- 'cmdBindDescriptorBufferEmbeddedSamplersEXT',
+-- 'cmdBindDescriptorBuffersEXT', 'cmdSetDescriptorBufferOffsetsEXT',
+-- 'getBufferOpaqueCaptureDescriptorDataEXT', 'getDescriptorEXT',
+-- 'getDescriptorSetLayoutBindingOffsetEXT',
+-- 'getDescriptorSetLayoutSizeEXT',
+-- 'getImageOpaqueCaptureDescriptorDataEXT',
+-- 'getImageViewOpaqueCaptureDescriptorDataEXT',
+-- 'getSamplerOpaqueCaptureDescriptorDataEXT'
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_descriptor_buffer 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_descriptor_buffer  ( AccelerationStructureCaptureDescriptorDataInfoEXT
+                                                   , BufferCaptureDescriptorDataInfoEXT
+                                                   , DescriptorAddressInfoEXT
+                                                   , DescriptorBufferBindingInfoEXT
+                                                   , DescriptorBufferBindingPushDescriptorBufferHandleEXT
+                                                   , DescriptorGetInfoEXT
+                                                   , ImageCaptureDescriptorDataInfoEXT
+                                                   , ImageViewCaptureDescriptorDataInfoEXT
+                                                   , OpaqueCaptureDescriptorDataCreateInfoEXT
+                                                   , PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT
+                                                   , PhysicalDeviceDescriptorBufferFeaturesEXT
+                                                   , PhysicalDeviceDescriptorBufferPropertiesEXT
+                                                   , SamplerCaptureDescriptorDataInfoEXT
+                                                   ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+import {-# SOURCE #-} Vulkan.CStruct.Extends (Chain)
+import {-# SOURCE #-} Vulkan.CStruct.Extends (Extendss)
+import {-# SOURCE #-} Vulkan.CStruct.Extends (PeekChain)
+import {-# SOURCE #-} Vulkan.CStruct.Extends (PokeChain)
+data AccelerationStructureCaptureDescriptorDataInfoEXT
+
+instance ToCStruct AccelerationStructureCaptureDescriptorDataInfoEXT
+instance Show AccelerationStructureCaptureDescriptorDataInfoEXT
+
+instance FromCStruct AccelerationStructureCaptureDescriptorDataInfoEXT
+
+
+data BufferCaptureDescriptorDataInfoEXT
+
+instance ToCStruct BufferCaptureDescriptorDataInfoEXT
+instance Show BufferCaptureDescriptorDataInfoEXT
+
+instance FromCStruct BufferCaptureDescriptorDataInfoEXT
+
+
+data DescriptorAddressInfoEXT
+
+instance ToCStruct DescriptorAddressInfoEXT
+instance Show DescriptorAddressInfoEXT
+
+instance FromCStruct DescriptorAddressInfoEXT
+
+
+type role DescriptorBufferBindingInfoEXT nominal
+data DescriptorBufferBindingInfoEXT (es :: [Type])
+
+instance ( Extendss DescriptorBufferBindingInfoEXT es
+         , PokeChain es ) => ToCStruct (DescriptorBufferBindingInfoEXT es)
+instance Show (Chain es) => Show (DescriptorBufferBindingInfoEXT es)
+
+instance ( Extendss DescriptorBufferBindingInfoEXT es
+         , PeekChain es ) => FromCStruct (DescriptorBufferBindingInfoEXT es)
+
+
+data DescriptorBufferBindingPushDescriptorBufferHandleEXT
+
+instance ToCStruct DescriptorBufferBindingPushDescriptorBufferHandleEXT
+instance Show DescriptorBufferBindingPushDescriptorBufferHandleEXT
+
+instance FromCStruct DescriptorBufferBindingPushDescriptorBufferHandleEXT
+
+
+data DescriptorGetInfoEXT
+
+instance ToCStruct DescriptorGetInfoEXT
+instance Show DescriptorGetInfoEXT
+
+instance FromCStruct DescriptorGetInfoEXT
+
+
+data ImageCaptureDescriptorDataInfoEXT
+
+instance ToCStruct ImageCaptureDescriptorDataInfoEXT
+instance Show ImageCaptureDescriptorDataInfoEXT
+
+instance FromCStruct ImageCaptureDescriptorDataInfoEXT
+
+
+data ImageViewCaptureDescriptorDataInfoEXT
+
+instance ToCStruct ImageViewCaptureDescriptorDataInfoEXT
+instance Show ImageViewCaptureDescriptorDataInfoEXT
+
+instance FromCStruct ImageViewCaptureDescriptorDataInfoEXT
+
+
+data OpaqueCaptureDescriptorDataCreateInfoEXT
+
+instance ToCStruct OpaqueCaptureDescriptorDataCreateInfoEXT
+instance Show OpaqueCaptureDescriptorDataCreateInfoEXT
+
+instance FromCStruct OpaqueCaptureDescriptorDataCreateInfoEXT
+
+
+data PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT
+
+instance ToCStruct PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT
+instance Show PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT
+
+instance FromCStruct PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT
+
+
+data PhysicalDeviceDescriptorBufferFeaturesEXT
+
+instance ToCStruct PhysicalDeviceDescriptorBufferFeaturesEXT
+instance Show PhysicalDeviceDescriptorBufferFeaturesEXT
+
+instance FromCStruct PhysicalDeviceDescriptorBufferFeaturesEXT
+
+
+data PhysicalDeviceDescriptorBufferPropertiesEXT
+
+instance ToCStruct PhysicalDeviceDescriptorBufferPropertiesEXT
+instance Show PhysicalDeviceDescriptorBufferPropertiesEXT
+
+instance FromCStruct PhysicalDeviceDescriptorBufferPropertiesEXT
+
+
+data SamplerCaptureDescriptorDataInfoEXT
+
+instance ToCStruct SamplerCaptureDescriptorDataInfoEXT
+instance Show SamplerCaptureDescriptorDataInfoEXT
+
+instance FromCStruct SamplerCaptureDescriptorDataInfoEXT
+
diff --git a/src/Vulkan/Extensions/VK_EXT_mesh_shader.hs b/src/Vulkan/Extensions/VK_EXT_mesh_shader.hs
--- a/src/Vulkan/Extensions/VK_EXT_mesh_shader.hs
+++ b/src/Vulkan/Extensions/VK_EXT_mesh_shader.hs
@@ -19,7 +19,7 @@
 --
 -- [__Extension and Version Dependencies__]
 --
---     -   Requires support for Vulkan 1.0
+--     -   Requires support for Vulkan 1.1
 --
 --     -   Requires @VK_KHR_get_physical_device_properties2@ to be enabled
 --         for any device-level functionality
@@ -461,14 +461,46 @@
 --     create the current 'Vulkan.Core10.Handles.Pipeline', as described in
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
 --
--- -   #VUID-vkCmdDrawMeshTasksEXT-None-02699# Descriptors in each bound
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08114# Descriptors in each bound
 --     descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command
+--     be valid if they are statically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
 --
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08115# If the descriptors used by
+--     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08116# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08117# If the descriptors used by
+--     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksEXT-None-08119# If a descriptor is
+--     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident.
+--
 -- -   #VUID-vkCmdDrawMeshTasksEXT-None-02700# A valid pipeline /must/ be
 --     bound to the pipeline bind point used by this command
 --
@@ -2170,14 +2202,46 @@
 --     create the current 'Vulkan.Core10.Handles.Pipeline', as described in
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
 --
--- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-02699# Descriptors in each
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08114# Descriptors in each
 --     bound descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command
+--     be valid if they are statically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
 --
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08115# If the descriptors
+--     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
+--     bind point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08116# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08117# If the descriptors
+--     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
+--     bind point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-08119# If a descriptor is
+--     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident.
+--
 -- -   #VUID-vkCmdDrawMeshTasksIndirectEXT-None-02700# A valid pipeline
 --     /must/ be bound to the pipeline bind point used by this command
 --
@@ -3870,13 +3934,45 @@
 --     create the current 'Vulkan.Core10.Handles.Pipeline', as described in
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
 --
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-02699# Descriptors in
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08114# Descriptors in
 --     each bound descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command
+--     be valid if they are statically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08115# If the
+--     descriptors used by the 'Vulkan.Core10.Handles.Pipeline' bound to
+--     the pipeline bind point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08116# Descriptors in
+--     bound descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08117# If the
+--     descriptors used by the 'Vulkan.Core10.Handles.Pipeline' bound to
+--     the pipeline bind point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08119# If a descriptor
+--     is dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident.
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-02700# A valid
 --     pipeline /must/ be bound to the pipeline bind point used by this
diff --git a/src/Vulkan/Extensions/VK_EXT_mesh_shader.hs-boot b/src/Vulkan/Extensions/VK_EXT_mesh_shader.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_mesh_shader.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_mesh_shader.hs-boot
@@ -19,7 +19,7 @@
 --
 -- [__Extension and Version Dependencies__]
 --
---     -   Requires support for Vulkan 1.0
+--     -   Requires support for Vulkan 1.1
 --
 --     -   Requires @VK_KHR_get_physical_device_properties2@ to be enabled
 --         for any device-level functionality
diff --git a/src/Vulkan/Extensions/VK_EXT_metal_objects.hs b/src/Vulkan/Extensions/VK_EXT_metal_objects.hs
--- a/src/Vulkan/Extensions/VK_EXT_metal_objects.hs
+++ b/src/Vulkan/Extensions/VK_EXT_metal_objects.hs
@@ -1283,8 +1283,8 @@
 -- 'Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo' structure includes
 -- both 'ImportMetalSharedEventInfoEXT' and
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreTypeCreateInfo',
--- the @signaledValue@ property of the imported @MTLSharedEvent@ object
--- will be set to @initialValue@ of
+-- the @signaledValue@ property of the imported @id\<MTLSharedEvent>@
+-- object will be set to @initialValue@ of
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreTypeCreateInfo'.
 --
 -- == Valid Usage (Implicit)
diff --git a/src/Vulkan/Extensions/VK_EXT_multi_draw.hs b/src/Vulkan/Extensions/VK_EXT_multi_draw.hs
--- a/src/Vulkan/Extensions/VK_EXT_multi_draw.hs
+++ b/src/Vulkan/Extensions/VK_EXT_multi_draw.hs
@@ -327,14 +327,45 @@
 --     create the current 'Vulkan.Core10.Handles.Pipeline', as described in
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
 --
--- -   #VUID-vkCmdDrawMultiEXT-None-02699# Descriptors in each bound
+-- -   #VUID-vkCmdDrawMultiEXT-None-08114# Descriptors in each bound
 --     descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command
+--     be valid if they are statically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
 --
+-- -   #VUID-vkCmdDrawMultiEXT-None-08115# If the descriptors used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08116# Descriptors in bound descriptor
+--     buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08117# If the descriptors used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiEXT-None-08119# If a descriptor is dynamically
+--     used with a 'Vulkan.Core10.Handles.Pipeline' created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident.
+--
 -- -   #VUID-vkCmdDrawMultiEXT-None-02700# A valid pipeline /must/ be bound
 --     to the pipeline bind point used by this command
 --
@@ -2099,13 +2130,45 @@
 --     create the current 'Vulkan.Core10.Handles.Pipeline', as described in
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
 --
--- -   #VUID-vkCmdDrawMultiIndexedEXT-None-02699# Descriptors in each bound
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08114# Descriptors in each bound
 --     descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command
+--     be valid if they are statically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08115# If the descriptors used
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08116# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08117# If the descriptors used
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMultiIndexedEXT-None-08119# If a descriptor is
+--     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident.
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-None-02700# A valid pipeline /must/
 --     be bound to the pipeline bind point used by this command
diff --git a/src/Vulkan/Extensions/VK_EXT_transform_feedback.hs b/src/Vulkan/Extensions/VK_EXT_transform_feedback.hs
--- a/src/Vulkan/Extensions/VK_EXT_transform_feedback.hs
+++ b/src/Vulkan/Extensions/VK_EXT_transform_feedback.hs
@@ -1513,13 +1513,45 @@
 --     create the current 'Vulkan.Core10.Handles.Pipeline', as described in
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
 --
--- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-02699# Descriptors in each
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08114# Descriptors in each
 --     bound descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command
+--     be valid if they are statically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08115# If the descriptors
+--     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
+--     bind point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08116# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08117# If the descriptors
+--     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
+--     bind point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-08119# If a descriptor is
+--     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident.
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-02700# A valid pipeline
 --     /must/ be bound to the pipeline bind point used by this command
diff --git a/src/Vulkan/Extensions/VK_HUAWEI_subpass_shading.hs b/src/Vulkan/Extensions/VK_HUAWEI_subpass_shading.hs
--- a/src/Vulkan/Extensions/VK_HUAWEI_subpass_shading.hs
+++ b/src/Vulkan/Extensions/VK_HUAWEI_subpass_shading.hs
@@ -623,13 +623,45 @@
 --     create the current 'Vulkan.Core10.Handles.Pipeline', as described in
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
 --
--- -   #VUID-vkCmdSubpassShadingHUAWEI-None-02699# Descriptors in each
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-08114# Descriptors in each
 --     bound descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command
+--     be valid if they are statically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-08115# If the descriptors used
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-08116# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-08117# If the descriptors used
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdSubpassShadingHUAWEI-None-08119# If a descriptor is
+--     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident.
 --
 -- -   #VUID-vkCmdSubpassShadingHUAWEI-None-02700# A valid pipeline /must/
 --     be bound to the pipeline bind point used by this command
diff --git a/src/Vulkan/Extensions/VK_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
@@ -1224,6 +1224,7 @@
                                                         , AccelerationStructureCreateFlagsKHR
                                                         , AccelerationStructureCreateFlagBitsKHR( ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR
                                                                                                 , ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV
+                                                                                                , ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT
                                                                                                 , ..
                                                                                                 )
                                                         , CopyAccelerationStructureModeKHR( COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR
@@ -1387,6 +1388,7 @@
 import Vulkan.Core10.FundamentalTypes (Flags)
 import Vulkan.Core10.Enums.Format (Format)
 import Vulkan.Core10.Enums.IndexType (IndexType)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (OpaqueCaptureDescriptorDataCreateInfoEXT)
 import Vulkan.CStruct.Extends (PeekChain)
 import Vulkan.CStruct.Extends (PeekChain(..))
 import Vulkan.CStruct.Extends (PokeChain)
@@ -6043,15 +6045,31 @@
 --     then @flags@ /must/ contain
 --     'ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV'
 --
+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-createFlags-08108# If
+--     @createFlags@ includes
+--     'ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT',
+--     the
+--     <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#features-descriptorBufferCaptureReplay descriptorBufferCaptureReplay>
+--     feature /must/ be enabled
+--
+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-pNext-08109# If the
+--     @pNext@ chain includes a
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
+--     structure, @createFlags@ /must/ contain
+--     'ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-VkAccelerationStructureCreateInfoKHR-sType-sType# @sType@
 --     /must/ be
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR'
 --
--- -   #VUID-VkAccelerationStructureCreateInfoKHR-pNext-pNext# @pNext@
---     /must/ be @NULL@ or a pointer to a valid instance of
+-- -   #VUID-VkAccelerationStructureCreateInfoKHR-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_NV_ray_tracing_motion_blur.AccelerationStructureMotionInfoNV'
+--     or
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
 --
 -- -   #VUID-VkAccelerationStructureCreateInfoKHR-sType-unique# The @sType@
 --     value of each struct in the @pNext@ chain /must/ be unique
@@ -6112,6 +6130,7 @@
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends AccelerationStructureCreateInfoKHR e => b) -> Maybe b
   extends _ f
     | Just Refl <- eqT @e @AccelerationStructureMotionInfoNV = Just f
+    | Just Refl <- eqT @e @OpaqueCaptureDescriptorDataCreateInfoEXT = Just f
     | otherwise = Nothing
 
 instance ( Extendss AccelerationStructureCreateInfoKHR es
@@ -7337,6 +7356,14 @@
 -- No documentation found for Nested "VkAccelerationStructureCreateFlagBitsKHR" "VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV"
 pattern ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = AccelerationStructureCreateFlagBitsKHR 0x00000004
 
+-- | 'ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT'
+-- specifies that the acceleration structure /can/ be used with descriptor
+-- buffers when capturing and replaying (e.g. for trace capture and
+-- replay), see
+-- 'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
+-- for more detail.
+pattern ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = AccelerationStructureCreateFlagBitsKHR 0x00000008
+
 conNameAccelerationStructureCreateFlagBitsKHR :: String
 conNameAccelerationStructureCreateFlagBitsKHR = "AccelerationStructureCreateFlagBitsKHR"
 
@@ -7352,6 +7379,10 @@
   ,
     ( ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV
     , "MOTION_BIT_NV"
+    )
+  ,
+    ( ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT
+    , "DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT"
     )
   ]
 
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
@@ -135,6 +135,12 @@
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT'
 --     flag set
 --
+-- -   #VUID-VkPipelineLibraryCreateInfoKHR-pLibraries-08096# If any
+--     element of @pLibraries@ was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     all elements /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
 -- -   #VUID-VkPipelineLibraryCreateInfoKHR-pipeline-07404# If @pipeline@
 --     is being created with
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT',
diff --git a/src/Vulkan/Extensions/VK_KHR_ray_tracing_maintenance1.hs b/src/Vulkan/Extensions/VK_KHR_ray_tracing_maintenance1.hs
--- a/src/Vulkan/Extensions/VK_KHR_ray_tracing_maintenance1.hs
+++ b/src/Vulkan/Extensions/VK_KHR_ray_tracing_maintenance1.hs
@@ -397,13 +397,45 @@
 --     create the current 'Vulkan.Core10.Handles.Pipeline', as described in
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
 --
--- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-02699# Descriptors in each
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-08114# Descriptors in each
 --     bound descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command
+--     be valid if they are statically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-08115# If the descriptors used
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-08116# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-08117# If the descriptors used
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-08119# If a descriptor is
+--     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident.
 --
 -- -   #VUID-vkCmdTraceRaysIndirect2KHR-None-02700# A valid pipeline /must/
 --     be bound to the pipeline bind point used by this command
diff --git a/src/Vulkan/Extensions/VK_KHR_ray_tracing_pipeline.hs b/src/Vulkan/Extensions/VK_KHR_ray_tracing_pipeline.hs
--- a/src/Vulkan/Extensions/VK_KHR_ray_tracing_pipeline.hs
+++ b/src/Vulkan/Extensions/VK_KHR_ray_tracing_pipeline.hs
@@ -1020,14 +1020,45 @@
 --     create the current 'Vulkan.Core10.Handles.Pipeline', as described in
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
 --
--- -   #VUID-vkCmdTraceRaysKHR-None-02699# Descriptors in each bound
+-- -   #VUID-vkCmdTraceRaysKHR-None-08114# Descriptors in each bound
 --     descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command
+--     be valid if they are statically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
 --
+-- -   #VUID-vkCmdTraceRaysKHR-None-08115# If the descriptors used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-08116# Descriptors in bound descriptor
+--     buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-08117# If the descriptors used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysKHR-None-08119# If a descriptor is dynamically
+--     used with a 'Vulkan.Core10.Handles.Pipeline' created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident.
+--
 -- -   #VUID-vkCmdTraceRaysKHR-None-02700# A valid pipeline /must/ be bound
 --     to the pipeline bind point used by this command
 --
@@ -2105,13 +2136,45 @@
 --     create the current 'Vulkan.Core10.Handles.Pipeline', as described in
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
 --
--- -   #VUID-vkCmdTraceRaysIndirectKHR-None-02699# Descriptors in each
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08114# Descriptors in each
 --     bound descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command
+--     be valid if they are statically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08115# If the descriptors used
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08116# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08117# If the descriptors used
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysIndirectKHR-None-08119# If a descriptor is
+--     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident.
 --
 -- -   #VUID-vkCmdTraceRaysIndirectKHR-None-02700# A valid pipeline /must/
 --     be bound to the pipeline bind point used by this command
diff --git a/src/Vulkan/Extensions/VK_NV_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
@@ -844,13 +844,45 @@
 --     create the current 'Vulkan.Core10.Handles.Pipeline', as described in
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
 --
--- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-02699# Descriptors in
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08114# Descriptors in
 --     each bound descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command
+--     be valid if they are statically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08115# If the descriptors
+--     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
+--     bind point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08116# Descriptors in
+--     bound descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08117# If the descriptors
+--     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
+--     bind point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-08119# If a descriptor is
+--     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident.
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-02700# A valid pipeline
 --     /must/ be bound to the pipeline bind point used by this command
diff --git a/src/Vulkan/Extensions/VK_NV_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
@@ -472,14 +472,46 @@
 --     create the current 'Vulkan.Core10.Handles.Pipeline', as described in
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
 --
--- -   #VUID-vkCmdDrawMeshTasksNV-None-02699# Descriptors in each bound
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08114# Descriptors in each bound
 --     descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command
+--     be valid if they are statically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
 --
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08115# If the descriptors used by
+--     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08116# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08117# If the descriptors used by
+--     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksNV-None-08119# If a descriptor is
+--     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident.
+--
 -- -   #VUID-vkCmdDrawMeshTasksNV-None-02700# A valid pipeline /must/ be
 --     bound to the pipeline bind point used by this command
 --
@@ -2154,14 +2186,46 @@
 --     create the current 'Vulkan.Core10.Handles.Pipeline', as described in
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
 --
--- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-02699# Descriptors in each
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08114# Descriptors in each
 --     bound descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command
+--     be valid if they are statically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
 --
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08115# If the descriptors
+--     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
+--     bind point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08116# Descriptors in bound
+--     descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08117# If the descriptors
+--     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
+--     bind point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-08119# If a descriptor is
+--     dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident.
+--
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-02700# A valid pipeline
 --     /must/ be bound to the pipeline bind point used by this command
 --
@@ -3889,13 +3953,45 @@
 --     create the current 'Vulkan.Core10.Handles.Pipeline', as described in
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
 --
--- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02699# Descriptors in
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08114# Descriptors in
 --     each bound descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command
+--     be valid if they are statically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08115# If the
+--     descriptors used by the 'Vulkan.Core10.Handles.Pipeline' bound to
+--     the pipeline bind point were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08116# Descriptors in
+--     bound descriptor buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08117# If the
+--     descriptors used by the 'Vulkan.Core10.Handles.Pipeline' bound to
+--     the pipeline bind point were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08119# If a descriptor
+--     is dynamically used with a 'Vulkan.Core10.Handles.Pipeline' created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident.
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02700# A valid pipeline
 --     /must/ be bound to the pipeline bind point used by this command
diff --git a/src/Vulkan/Extensions/VK_NV_ray_tracing.hs b/src/Vulkan/Extensions/VK_NV_ray_tracing.hs
--- a/src/Vulkan/Extensions/VK_NV_ray_tracing.hs
+++ b/src/Vulkan/Extensions/VK_NV_ray_tracing.hs
@@ -679,6 +679,7 @@
 import Vulkan.Extensions.VK_KHR_acceleration_structure (GeometryTypeKHR)
 import Vulkan.Core10.Enums.IndexType (IndexType)
 import Vulkan.Extensions.VK_KHR_get_memory_requirements2 (MemoryRequirements2KHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_descriptor_buffer (OpaqueCaptureDescriptorDataCreateInfoEXT)
 import Vulkan.CStruct.Extends (PeekChain)
 import Vulkan.CStruct.Extends (PeekChain(..))
 import Vulkan.Core10.Handles (Pipeline)
@@ -859,7 +860,7 @@
   unsafe
 #endif
   "dynamic" mkVkCreateAccelerationStructureNV
-  :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureCreateInfoNV -> Ptr AllocationCallbacks -> Ptr AccelerationStructureNV -> IO Result) -> Ptr Device_T -> Ptr AccelerationStructureCreateInfoNV -> Ptr AllocationCallbacks -> Ptr AccelerationStructureNV -> IO Result
+  :: FunPtr (Ptr Device_T -> Ptr (SomeStruct AccelerationStructureCreateInfoNV) -> Ptr AllocationCallbacks -> Ptr AccelerationStructureNV -> IO Result) -> Ptr Device_T -> Ptr (SomeStruct AccelerationStructureCreateInfoNV) -> Ptr AllocationCallbacks -> Ptr AccelerationStructureNV -> IO Result
 
 -- | vkCreateAccelerationStructureNV - Create a new acceleration structure
 -- object
@@ -911,14 +912,16 @@
 -- 'Vulkan.Extensions.Handles.AccelerationStructureNV',
 -- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
 -- 'Vulkan.Core10.Handles.Device'
-createAccelerationStructureNV :: forall io
-                               . (MonadIO io)
+createAccelerationStructureNV :: forall a io
+                               . ( Extendss AccelerationStructureCreateInfoNV a
+                                 , PokeChain a
+                                 , MonadIO io )
                               => -- | @device@ is the logical device that creates the buffer object.
                                  Device
                               -> -- | @pCreateInfo@ is a pointer to a 'AccelerationStructureCreateInfoNV'
                                  -- structure containing parameters affecting creation of the acceleration
                                  -- structure.
-                                 AccelerationStructureCreateInfoNV
+                                 (AccelerationStructureCreateInfoNV a)
                               -> -- | @pAllocator@ controls host memory allocation as described in the
                                  -- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                                  -- chapter.
@@ -938,7 +941,7 @@
   pPAccelerationStructure <- ContT $ bracket (callocBytes @AccelerationStructureNV 8) free
   r <- lift $ traceAroundEvent "vkCreateAccelerationStructureNV" (vkCreateAccelerationStructureNV'
                                                                     (deviceHandle (device))
-                                                                    pCreateInfo
+                                                                    (forgetExtensions pCreateInfo)
                                                                     pAllocator
                                                                     (pPAccelerationStructure))
   lift $ when (r < SUCCESS) (throwIO (VulkanException r))
@@ -953,7 +956,7 @@
 -- favourite resource management library) as the last argument.
 -- To just extract the pair pass '(,)' as the last argument.
 --
-withAccelerationStructureNV :: forall io r . MonadIO io => Device -> AccelerationStructureCreateInfoNV -> Maybe AllocationCallbacks -> (io AccelerationStructureNV -> (AccelerationStructureNV -> io ()) -> r) -> r
+withAccelerationStructureNV :: forall a io r . (Extendss AccelerationStructureCreateInfoNV a, PokeChain a, MonadIO io) => Device -> AccelerationStructureCreateInfoNV a -> Maybe AllocationCallbacks -> (io AccelerationStructureNV -> (AccelerationStructureNV -> io ()) -> r) -> r
 withAccelerationStructureNV device pCreateInfo pAllocator b =
   b (createAccelerationStructureNV device pCreateInfo pAllocator)
     (\(o0) -> destroyAccelerationStructureNV device o0 pAllocator)
@@ -1823,14 +1826,45 @@
 --     create the current 'Vulkan.Core10.Handles.Pipeline', as described in
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>
 --
--- -   #VUID-vkCmdTraceRaysNV-None-02699# Descriptors in each bound
+-- -   #VUID-vkCmdTraceRaysNV-None-08114# Descriptors in each bound
 --     descriptor set, specified via
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', /must/
---     be valid as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptor-validity descriptor validity>
---     if they are statically used by the 'Vulkan.Core10.Handles.Pipeline'
---     bound to the pipeline bind point used by this command
+--     be valid if they are statically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was not created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
 --
+-- -   #VUID-vkCmdTraceRaysNV-None-08115# If the descriptors used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     were specified via
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', the
+--     bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     without
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-08116# Descriptors in bound descriptor
+--     buffers, specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     /must/ be valid if they are dynamically used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     used by this command and the bound 'Vulkan.Core10.Handles.Pipeline'
+--     was created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-08117# If the descriptors used by the
+--     'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind point
+--     were specified via
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.cmdSetDescriptorBufferOffsetsEXT',
+--     the bound 'Vulkan.Core10.Handles.Pipeline' /must/ have been created
+--     with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT'
+--
+-- -   #VUID-vkCmdTraceRaysNV-None-08119# If a descriptor is dynamically
+--     used with a 'Vulkan.Core10.Handles.Pipeline' created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT',
+--     the descriptor memory /must/ be resident.
+--
 -- -   #VUID-vkCmdTraceRaysNV-None-02700# A valid pipeline /must/ be bound
 --     to the pipeline bind point used by this command
 --
@@ -3736,8 +3770,12 @@
 --     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV'
 --
 -- -   #VUID-VkAccelerationStructureCreateInfoNV-pNext-pNext# @pNext@
---     /must/ be @NULL@
+--     /must/ be @NULL@ or a pointer to a valid instance of
+--     'Vulkan.Extensions.VK_EXT_descriptor_buffer.OpaqueCaptureDescriptorDataCreateInfoEXT'
 --
+-- -   #VUID-VkAccelerationStructureCreateInfoNV-sType-unique# The @sType@
+--     value of each struct in the @pNext@ chain /must/ be unique
+--
 -- -   #VUID-VkAccelerationStructureCreateInfoNV-info-parameter# @info@
 --     /must/ be a valid 'AccelerationStructureInfoNV' structure
 --
@@ -3748,8 +3786,10 @@
 -- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
 -- 'createAccelerationStructureNV'
-data AccelerationStructureCreateInfoNV = AccelerationStructureCreateInfoNV
-  { -- | @compactedSize@ is the size from the result of
+data AccelerationStructureCreateInfoNV (es :: [Type]) = AccelerationStructureCreateInfoNV
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @compactedSize@ is the size from the result of
     -- 'cmdWriteAccelerationStructuresPropertiesNV' if this acceleration
     -- structure is going to be the target of a compacting copy.
     compactedSize :: DeviceSize
@@ -3759,15 +3799,26 @@
   }
   deriving (Typeable)
 #if defined(GENERIC_INSTANCES)
-deriving instance Generic (AccelerationStructureCreateInfoNV)
+deriving instance Generic (AccelerationStructureCreateInfoNV (es :: [Type]))
 #endif
-deriving instance Show AccelerationStructureCreateInfoNV
+deriving instance Show (Chain es) => Show (AccelerationStructureCreateInfoNV es)
 
-instance ToCStruct AccelerationStructureCreateInfoNV where
+instance Extensible AccelerationStructureCreateInfoNV where
+  extensibleTypeName = "AccelerationStructureCreateInfoNV"
+  setNext AccelerationStructureCreateInfoNV{..} next' = AccelerationStructureCreateInfoNV{next = next', ..}
+  getNext AccelerationStructureCreateInfoNV{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends AccelerationStructureCreateInfoNV e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @OpaqueCaptureDescriptorDataCreateInfoEXT = Just f
+    | otherwise = Nothing
+
+instance ( Extendss AccelerationStructureCreateInfoNV es
+         , PokeChain es ) => ToCStruct (AccelerationStructureCreateInfoNV es) where
   withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
   pokeCStruct p AccelerationStructureCreateInfoNV{..} f = evalContT $ do
     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
     lift $ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (compactedSize)
     ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr AccelerationStructureInfoNV)) (info) . ($ ())
     lift $ f
@@ -3775,20 +3826,25 @@
   cStructAlignment = 8
   pokeZeroCStruct p f = evalContT $ do
     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
     lift $ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)
     ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr AccelerationStructureInfoNV)) (zero) . ($ ())
     lift $ f
 
-instance FromCStruct AccelerationStructureCreateInfoNV where
+instance ( Extendss AccelerationStructureCreateInfoNV es
+         , PeekChain es ) => FromCStruct (AccelerationStructureCreateInfoNV es) where
   peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
     compactedSize <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
     info <- peekCStruct @AccelerationStructureInfoNV ((p `plusPtr` 24 :: Ptr AccelerationStructureInfoNV))
     pure $ AccelerationStructureCreateInfoNV
-             compactedSize info
+             next compactedSize info
 
-instance Zero AccelerationStructureCreateInfoNV where
+instance es ~ '[] => Zero (AccelerationStructureCreateInfoNV es) where
   zero = AccelerationStructureCreateInfoNV
+           ()
            zero
            zero
 
diff --git a/src/Vulkan/Extensions/VK_NV_ray_tracing.hs-boot b/src/Vulkan/Extensions/VK_NV_ray_tracing.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_ray_tracing.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_ray_tracing.hs-boot
@@ -488,12 +488,15 @@
 import {-# SOURCE #-} Vulkan.CStruct.Extends (Extendss)
 import {-# SOURCE #-} Vulkan.CStruct.Extends (PeekChain)
 import {-# SOURCE #-} Vulkan.CStruct.Extends (PokeChain)
-data AccelerationStructureCreateInfoNV
+type role AccelerationStructureCreateInfoNV nominal
+data AccelerationStructureCreateInfoNV (es :: [Type])
 
-instance ToCStruct AccelerationStructureCreateInfoNV
-instance Show AccelerationStructureCreateInfoNV
+instance ( Extendss AccelerationStructureCreateInfoNV es
+         , PokeChain es ) => ToCStruct (AccelerationStructureCreateInfoNV es)
+instance Show (Chain es) => Show (AccelerationStructureCreateInfoNV es)
 
-instance FromCStruct AccelerationStructureCreateInfoNV
+instance ( Extendss AccelerationStructureCreateInfoNV es
+         , PeekChain es ) => FromCStruct (AccelerationStructureCreateInfoNV es)
 
 
 data AccelerationStructureInfoNV
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 = 234
+pattern HEADER_VERSION = 235
 
 
 pattern HEADER_VERSION_COMPLETE :: Word32
-pattern HEADER_VERSION_COMPLETE = MAKE_API_VERSION 1 3 234
+pattern HEADER_VERSION_COMPLETE = MAKE_API_VERSION 1 3 235
 
 
 pattern MAKE_API_VERSION :: Word32 -> Word32 -> Word32 -> Word32
diff --git a/vulkan.cabal b/vulkan.cabal
--- a/vulkan.cabal
+++ b/vulkan.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           vulkan
-version:        3.23.4
+version:        3.24
 synopsis:       Bindings to the Vulkan graphics API.
 description:    Please see [the readme](https://github.com/expipiplus1/vulkan/#readme)
 category:       Graphics
@@ -330,6 +330,7 @@
       Vulkan.Extensions.VK_EXT_depth_clip_control
       Vulkan.Extensions.VK_EXT_depth_clip_enable
       Vulkan.Extensions.VK_EXT_depth_range_unrestricted
+      Vulkan.Extensions.VK_EXT_descriptor_buffer
       Vulkan.Extensions.VK_EXT_descriptor_indexing
       Vulkan.Extensions.VK_EXT_device_address_binding_report
       Vulkan.Extensions.VK_EXT_device_fault
